by jtuchel » Wed Jan 12, 2011 3:48 pm
Louis,
thanks for the links.
Since my posts are a few weeks old, I'd like to add a few thoughts here:
* There is two dimensions to the problem of VAST code tools.
* Short term, cleaning up the existing ones would surely help (see the first two posts for some suggestions)
* Mid to long term, this will by far not be enough. It is time to rethink some of the tools and the way they work. There is a lot that can be learned from Eclipse's views and perspectives model, but that is not sufficient for VA Smalltalk. Browsing Smalltalk code requires much more than just a view of a class hierarchy. A Method has more context than just a class, there's also the complete set of Envy's code management relationships. I am talking of Applications, Maps etc. and their relationships. So depending on a Task, navigating through the image can have very different aspects. There are several perspectives on the context an artefact lives in.
What I try to say is that we need a model of what browsing code really means in the context of several tasks. The latter posts linked to cover some ideas of mine on the topic. And I am sure once we dive deeper into an analysis of how people search, read and modify code, we'll find much better interaction models than today's Smalltalk Browsers.
Let me repeat an example from my posts:
If you look at the Class Editor you can switch between three perspectives of a class: the visual composition editor, the script editor (=class browser) and the Public Interface Editor. These three are just three perspectives on the same thing. In a Tabbed Browser, they should just be three additional tabs in the bottom pane where you also have the perspectives on other aspects of a class, like the class definition tab and the source, comment and notes tabs. So we are coming to an end where all kinds of code editing end up as a tab in a tabbed browser. Or in separate windows, or in Eclipse-like perspectives... you get the idea. In the end there could be a setting to keep all perspectives in one window or open all or some of them in their own windows etc. (Think Xcode). And we are coming to a point where all browsers are really the same thing, just the number and combination of code perspectives (and with them the contents of the menus) change. Sounds familiar? Yes, take a look at WindowBuilder Pro for Eclipse, which once was an Instantiations product. It shows exactly what I mean.
There is another point to make here, and this would be an investment into the short-term as well as the long-term goals:
Invest into the editors.
It should be possible to show line numbers, add icons right into the text (Breakpoints, Red warning signs etc.), show Lint results and hints. Add hints like highlighting corresponding brackets when the cursor is on a bracket. All the stuff that's been around in other IDEs for ten years now. Let me fold/unfold parts of a method.
The argument that Smalltalk methods are short anyways and such features aren't needed are simply wrong. I see lots of multi-page methods in my customer projects, and even the VAST base code includes loooong methods. Add nonsaving code formatting. There are artists out there who manage to format an 8-liner in a way that you understand nothing without reformatting it. Which creates a new edition.
And please make the changes Browser like it is in Pharo or in Eclipse. It would help a lot in understanding code changes.