Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
Hello David,
DR> Especially, I want to experiment with different metaphors to browse and DR> navigate source code, with new metaphors to present static (i.e.,
I' very much interested.
DR> for an IDE, hence I need subjects performing some experiments in these DR> future IDEs and I also need data about how you use your IDE (e.g., how DR> you browse source code, how and where you write source code, with which I'm willing to have some tool watch me coding (maybe it will even laugh at times). I'd have to look at the records before I send them to have my customers trust that I don't give away their secrets.
I'm not a programmer but an engineer (kinda MSEE) and I'd like to have a tool that gives me a grasp on an algorithm.
Browsers are bad in this, source files also. The best thing I have now is Chris Mullers TracingMessagesBrowser but it's too cumbersome to fill the list and to remove from the list if I add implementors of a message with a name everybody uses.
So maybe use MessageTally>>spyOn: to fill a TracingMessagesBrowser. That with an easy to prune autoFilled list of classes whose methods I'm interested in.
And combine that with *initialized* objects, sampleInstance is no help as it doesn't present Objects in use. That's (now that I think of it) the thing that might have brought me away from Trygve's BabySRE.
Things must be quick for I often find myself closing the windows I just opened to give me a certain view, just because I find out I need a different view.
Thanks for bringing up the subject, so I could examine my own style of work.
Good Luck with your thesis!
Herbert mailto:herbertkoenig@gmx.net
Hi David, Excellent! You seem to have similar goals to my goals for the BabuUML project. An up to date report on the current project state will be a chapter in a forthcoming book on SE research. You may find it interesting to look at a late draft: http://folk.uio.no/trygver/2007/babyUML.pdf
All the best for your project --Trygve
On 18.02.2007 20:31, David Röthlisberger wrote:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
Hi Trygve
Excellent! You seem to have similar goals to my goals for the BabuUML project. An up to date report on the current project state will be a chapter in a forthcoming book on SE research. You may find it interesting to look at a late draft: http://folk.uio.no/trygver/2007/babyUML.pdf
ok, thanks for this pointer, I'm reading it.
David
Hi David,
I think you might find some work by Andrew Black and myself interesting. It mines some existing patterns from Smalltalk and modern extensible IDEs such as Eclipse (and proposes some new ones) for representing code models. The main goal is to make code analyses reusable objects so that they can be leveraged by different tools (or views), without sacrificing performance.
We don't have a current version up on the web at the moment, mail me offline if you're interested.
Daniel Vainsencher
David Röthlisberger wrote:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
In fact, we do: http://web.cecs.pdx.edu/~black/publications/ ModelExtensions.pdf
On 18 Feb 2007, at 13:08, Daniel Vainsencher wrote:
We don't have a current version up on the web at the moment, mail me offline if you're interested.
I was also going to try to sell you my "multiview" vision; I'll send you an old grant proposal which you are welcome to mine for ideas.
Andrew
Andrew P. Black Department of Computer Science Portland State University +1 503 725 2411
Some points I believe to be missing is modern programming environments:
1. Making "why" a property to be populated by the programmer in all programing artifacts. Like a Jr. programmer, if the "why" property is not populated, the interface should gently, non-disruptively ask "why". Some say that the answer to "why" is already in the programming source code. I rather disagree. Often, even Sr. Programmers experiment with the code to discover the chosen way that is eventually preserved for the record in the distribution. However, the learning process itself, and hence the reason why, is thrown away. "Why" often documents the code that shouldn't be there, rather than the code that is. A system without "why" preserved in it can exhibit the problem in the form of many different programmers submitting a "fix" for the same "problem" and only told "why" the fix won't work after they went through the effort of "fixing" it. Reflexive, logic programming languages like Prolog have the advantage of describing "how" they've reached some conclusion which is similar to explaining "why".
2. Check out Jef Raskin's book, "They Humane Interface" for some very insightful observations from a cognitive psychology perspective.
3. Along with "why", I believe "who", "what", "where", "when", and "how" should be configurable properties of all programming artifacts. They imply many important questions often left unanswered but are necessary for understanding and modifying other programmers' code. These need not be just "text" or "tag" properties, but full fledge objects and code that can be extracted, examined, programatically reasoned from, or modified programatically. Something like the semantic web.
4. Zoomable names/labels. Because programing languages have most often been expressed in text (for the advantage of the compiler) a lot of burden has been placed on the meaning of a field name. In fact, and enormous burden is placed on field names. This fact can by illustrated by some who need to use Camel Case, Hungarian Notation, quotation marks for names with white space, type systems, scoping rules, dot notation, syntax highlighting, autocompletion lists, name spaces, globals, method-name/property-name/database-field-name confusion, defs, source code readability, etc. These names and labels are often defined far from where they are used placing a burden on the programmer's memory or spend the programmer's time to jump from one to the other. Rather, I believe, as long as we program in a _GUI_ we should allow labels to be dynamically zoomed, in-place, to the level of detail required by the programmer's memory and experience... any level of detail. Even after the code is persisted to storage, subsequent programmers should still have the dynamic freedom to re-zoom the label to the same degree as the original programmer.
5. Continuous unit testing and integration testing should be built-in to even the tiniest artifacts of coding so that such things become visual, automatic, unconscious to the developer. (cf Raskin).
6. I would include audio documentation to be a normal part of source code documentation. This would be a crutch for the "documentation writing challenged" among us. Such things could me setup to be programatically translated to other languages, accents, or dialects.
More later.
Right on. Also, "Interactive Programming Environments" by Barstow should be required reading for anyone dabbling in that area (e.g, it contains the PIE paper). I saw it for 85 cents recently at Amazon, everyone seems to think "old" computer books are worthless ... sigh ...
- Bert -
On Feb 19, 2007, at 8:45 , Darius Clarke wrote:
Some points I believe to be missing is modern programming environments:
- Making "why" a property to be populated by the programmer in all
programing artifacts. Like a Jr. programmer, if the "why" property is not populated, the interface should gently, non-disruptively ask "why". Some say that the answer to "why" is already in the programming source code. I rather disagree. Often, even Sr. Programmers experiment with the code to discover the chosen way that is eventually preserved for the record in the distribution. However, the learning process itself, and hence the reason why, is thrown away. "Why" often documents the code that shouldn't be there, rather than the code that is. A system without "why" preserved in it can exhibit the problem in the form of many different programmers submitting a "fix" for the same "problem" and only told "why" the fix won't work after they went through the effort of "fixing" it. Reflexive, logic programming languages like Prolog have the advantage of describing "how" they've reached some conclusion which is similar to explaining "why".
- Check out Jef Raskin's book, "They Humane Interface" for some very
insightful observations from a cognitive psychology perspective.
- Along with "why", I believe "who", "what", "where", "when", and
"how" should be configurable properties of all programming artifacts. They imply many important questions often left unanswered but are necessary for understanding and modifying other programmers' code. These need not be just "text" or "tag" properties, but full fledge objects and code that can be extracted, examined, programatically reasoned from, or modified programatically. Something like the semantic web.
- Zoomable names/labels. Because programing languages have most often
been expressed in text (for the advantage of the compiler) a lot of burden has been placed on the meaning of a field name. In fact, and enormous burden is placed on field names. This fact can by illustrated by some who need to use Camel Case, Hungarian Notation, quotation marks for names with white space, type systems, scoping rules, dot notation, syntax highlighting, autocompletion lists, name spaces, globals, method-name/property-name/database-field-name confusion, defs, source code readability, etc. These names and labels are often defined far from where they are used placing a burden on the programmer's memory or spend the programmer's time to jump from one to the other. Rather, I believe, as long as we program in a _GUI_ we should allow labels to be dynamically zoomed, in-place, to the level of detail required by the programmer's memory and experience... any level of detail. Even after the code is persisted to storage, subsequent programmers should still have the dynamic freedom to re-zoom the label to the same degree as the original programmer.
- Continuous unit testing and integration testing should be built-in
to even the tiniest artifacts of coding so that such things become visual, automatic, unconscious to the developer. (cf Raskin).
- I would include audio documentation to be a normal part of source
code documentation. This would be a crutch for the "documentation writing challenged" among us. Such things could me setup to be programatically translated to other languages, accents, or dialects.
More later.
Hi Daniel
I think you might find some work by Andrew Black and myself interesting. It mines some existing patterns from Smalltalk and modern extensible IDEs such as Eclipse (and proposes some new ones) for representing code models. The main goal is to make code analyses reusable objects so that they can be leveraged by different tools (or views), without sacrificing performance.
yes, thanks, I already read your and Andrew Black's paper "A Pattern Language for Extensible Program Representation" (Stef gave it to me :). It contains very interesting and useful patterns and ideas, I liked it.
David
Hi David,
Your mail comes at the right time! I share your needs for empirical studies of programmer's usage of the IDE, and I am going to release an updated version of my IDE monitoring tool (called "SpyWare" ;-) ) in the next few days.
I think we could join forces and share data. Incidentally, I am going to Bern at the end of this week to meet some people at SCG... If you're around we can discuss and compare our needs. Feel free to reply on or off-list.
Cheers, Romain
On 2/18/07, David Röthlisberger squeak@c3com.ch wrote:
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
Hi Romain,
Your mail comes at the right time! I share your needs for empirical studies of programmer's usage of the IDE, and I am going to release an updated version of my IDE monitoring tool (called "SpyWare" ;-) ) in the next few days.
Cool! I also did some work on SmallBrother - a tool of Roel Wuyts initially implemented in VW to record the programmer's usage of the IDE. It's now also available for Squeak on SqueakSource and can spy most of the user's action occurring in OmniBrowser.
I think we could join forces and share data. Incidentally, I am going to Bern at the end of this week to meet some people at SCG... If you're around we can discuss and compare our needs. Feel free to reply on or off-list.
yes, I'm here, so we should indeed discuss! Especially, I'm interested in how you find your subjects using and experimenting with your tools. Adrian Kuhn is also doing something similar in VW, but you probably know that already.
David
2007/2/18, David Röthlisberger squeak@c3com.ch:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages - make class extensions work like in VW - make the submethod display more than just a text string. Why can't SLint just underline the code that violates a rule? - run SLint on a method once it is compiled (for error reporting see above) - bring Refactoring Engine to the point where the Eclipse Refactoring Engine is (code formatting and stuff) - a protocol browser that is actually usable (choose upper bound) - multiselection (including nil-selection) - make drag and drop work everywhere in the browser - make multiselection work with drag and drop - fix those annoying bugs in the browser where a method ends up in the wrong category (if you are lucky) when you are editing the same class in two browsers - fix the debugger (those annoying cases where you code ten minutes in the debugger accept it but the code lost because you where in a block or whatever) - "move to class/instance side" refactoring (yes I know this is technically not a refactoring, I don't care) - roel typer integration to display the "roel types" of variables - when changing the shape of a class only recompile the methods that actually access instance variables - method display plugins (eg. a profiler can draw a heatmap but just coloring the statements differently without the need to implement the whole index <-> statement mapping) - a better inspector that supports drag and drop and where you can drop objects in the evaluator pane - back-button - "make trait" refactoring (working together with multiselection) - trait support for refactoring engine - finish the traits browser - what is is the status of services to enable refactoring support in the omnibrowser? It it is not done then do it. - integrate services into the duo-systembrowser
Cheers Philippe
- make the submethod display more than just a text string. Why can't
SLint just underline the code that violates a rule?
SLint actually does select the part that produced the match (at least when you run it from my SUnit Lint integration tool), to see it you have to move the mouse over the text pane however.
Cheers, Lukas
- sender/implementor widgets with tree for next sender/implementor - multiple method editing (wishker). But you know my list and crazy ideas.
Stef
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- make class extensions work like in VW
- make the submethod display more than just a text string. Why can't
SLint just underline the code that violates a rule?
- run SLint on a method once it is compiled (for error reporting
see above)
- bring Refactoring Engine to the point where the Eclipse Refactoring
Engine is (code formatting and stuff)
- a protocol browser that is actually usable (choose upper bound)
- multiselection (including nil-selection)
- make drag and drop work everywhere in the browser
- make multiselection work with drag and drop
- fix those annoying bugs in the browser where a method ends up in the
wrong category (if you are lucky) when you are editing the same class in two browsers
- fix the debugger (those annoying cases where you code ten minutes in
the debugger accept it but the code lost because you where in a block or whatever)
- "move to class/instance side" refactoring (yes I know this is
technically not a refactoring, I don't care)
- roel typer integration to display the "roel types" of variables
- when changing the shape of a class only recompile the methods that
actually access instance variables
- method display plugins (eg. a profiler can draw a heatmap but just
coloring the statements differently without the need to implement the whole index <-> statement mapping)
- a better inspector that supports drag and drop and where you can
drop objects in the evaluator pane
- back-button
- "make trait" refactoring (working together with multiselection)
- trait support for refactoring engine
- finish the traits browser
- what is is the status of services to enable refactoring support in
the omnibrowser? It it is not done then do it.
- integrate services into the duo-systembrowser
Cheers Philippe
Some more points:
1. Squeak's "Tile" view/representation of source code shows how programing source code artifacts can be scoped and represented as objects in and of themselves.
2. The most important point in the Raskin book for your attention is the fact that the rarest and most precious resource for all software developers and their organizations, above all other constraints bar none, and which all code and tools must be designed to conserve is ... human memory. Due to efficiencies of scale in all other aspects of software development, to load and copy what's in human memory takes more time and expense than /anything/ else. Architectures must be designed around the conservation of human memory at their basis. Most programmers just cannot develop photographic memories for all that is asked of them by almost all architectures and platforms. Time delays in context switching burns up much of a programmers' time. API calls are in the 100,000's now and continually changing.
3. As Alan Kay alluded to in his latest interview, a lot of assumed laws of nature are really traditions we've not question. A lot of programming artifacts are really efforts to fold information, often using labels, to fit within the limits of today's monitors and yesterday's paper. But, as a thought experiment, imagine if we unfold that information in a 20' x 20' display so we could find what we want just by moving our eyes. Head mounted and eye mounted displays could break many of our assumptions about the complexity of code. Many variable, labels, and other shorthand shortcuts could be dispensed with. The mental "chunking" (a psychological term) of data can take on another form for efficiencies.
More later.
On 2/19/07, stephane ducasse stephane.ducasse@free.fr wrote:
- sender/implementor widgets with tree for next sender/implementor
- multiple method editing (wishker).
But you know my list and crazy ideas.
Stef
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- make class extensions work like in VW
- make the submethod display more than just a text string. Why can't
SLint just underline the code that violates a rule?
- run SLint on a method once it is compiled (for error reporting
see above)
- bring Refactoring Engine to the point where the Eclipse Refactoring
Engine is (code formatting and stuff)
- a protocol browser that is actually usable (choose upper bound)
- multiselection (including nil-selection)
- make drag and drop work everywhere in the browser
- make multiselection work with drag and drop
- fix those annoying bugs in the browser where a method ends up in the
wrong category (if you are lucky) when you are editing the same class in two browsers
- fix the debugger (those annoying cases where you code ten minutes in
the debugger accept it but the code lost because you where in a block or whatever)
- "move to class/instance side" refactoring (yes I know this is
technically not a refactoring, I don't care)
- roel typer integration to display the "roel types" of variables
- when changing the shape of a class only recompile the methods that
actually access instance variables
- method display plugins (eg. a profiler can draw a heatmap but just
coloring the statements differently without the need to implement the whole index <-> statement mapping)
- a better inspector that supports drag and drop and where you can
drop objects in the evaluator pane
- back-button
- "make trait" refactoring (working together with multiselection)
- trait support for refactoring engine
- finish the traits browser
- what is is the status of services to enable refactoring support in
the omnibrowser? It it is not done then do it.
- integrate services into the duo-systembrowser
Cheers Philippe
+1, good list
From: "Philippe Marschall" philippe.marschall@gmail.com Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: "The general-purpose Squeak developers list"squeak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Sun, 18 Feb 2007 22:46:58 +0100
2007/2/18, David Röthlisberger squeak@c3com.ch:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- make class extensions work like in VW
- make the submethod display more than just a text string. Why can't
SLint just underline the code that violates a rule?
- run SLint on a method once it is compiled (for error reporting see above)
- bring Refactoring Engine to the point where the Eclipse Refactoring
Engine is (code formatting and stuff)
- a protocol browser that is actually usable (choose upper bound)
- multiselection (including nil-selection)
- make drag and drop work everywhere in the browser
- make multiselection work with drag and drop
- fix those annoying bugs in the browser where a method ends up in the
wrong category (if you are lucky) when you are editing the same class in two browsers
- fix the debugger (those annoying cases where you code ten minutes in
the debugger accept it but the code lost because you where in a block or whatever)
- "move to class/instance side" refactoring (yes I know this is
technically not a refactoring, I don't care)
- roel typer integration to display the "roel types" of variables
- when changing the shape of a class only recompile the methods that
actually access instance variables
- method display plugins (eg. a profiler can draw a heatmap but just
coloring the statements differently without the need to implement the whole index <-> statement mapping)
- a better inspector that supports drag and drop and where you can
drop objects in the evaluator pane
- back-button
- "make trait" refactoring (working together with multiselection)
- trait support for refactoring engine
- finish the traits browser
- what is is the status of services to enable refactoring support in
the omnibrowser? It it is not done then do it.
- integrate services into the duo-systembrowser
Cheers Philippe
_________________________________________________________________ Refi Now: Rates near 39yr lows! $430,000 Mortgage for $1,399/mo - Calculate new payment http://www.lowermybills.com/lre/index.jsp?sourceid=lmb-9632-17727&moid=7...
I suggest the areas of documentation and expanation should be more developed within the environment.
In these days of wikis I would suggest that everything in the system could be linked to an 'open documentation system'. As well as methods and classes, other things like packages, frameworks, patterns, traits, interfaces etc., could be given a structure around which they could be documented. Examples of how to run things, along with suitable monitoring tools to act as (more visual) inspectors could be provided to demonstrate subsystems. At the level of auto documentation, it should be possible to make use of example objects to generate expanations based on the existing linkages. It may be possible to use reasoning systems to deduce information about things like type behaviours. The IDE is not just for expert programmers - it needs to be available to beginners and learners and so should also address their needs - automated and written expanantions could help this.
Hi Philippe,
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- back-button
- what is is the status of services to enable refactoring support in
the omnibrowser?
These are available in the latest version of BrowserBooster
- integrate services into the duo-systembrowser
Is there a finished version of this browser? I had a quick look at, and some of the services were working for it. But since it was missing the button bar, refactorings with services were not yet accessible ...
Romain
Cheers Philippe
Hi Romain,
I did not receive any feedback for the DuoSystemBrowser, so I just use it for my personal coding but haven't added much else. I take feature requests though :-)
The reason the button bar is not in it is that it is not directly supported by OB (yet :-) ). I know it can be done, but since I do not really use the buttons and since nobody asked... :-)
On 22 Feb 2007, at 22 February/12:31, Romain Robbes wrote:
Hi Philippe,
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- back-button
- what is is the status of services to enable refactoring support in
the omnibrowser?
These are available in the latest version of BrowserBooster
- integrate services into the duo-systembrowser
Is there a finished version of this browser? I had a quick look at, and some of the services were working for it. But since it was missing the button bar, refactorings with services were not yet accessible ...
Romain
Cheers Philippe
I think the DUO functionality should be integrated in OB-Standard, not be part of another browser. Otherwise, we will get a lot of browsers and people who use only one.
2007/2/25, Roel Wuyts Roel.Wuyts@ulb.ac.be:
Hi Romain,
I did not receive any feedback for the DuoSystemBrowser, so I just use it for my personal coding but haven't added much else. I take feature requests though :-)
The reason the button bar is not in it is that it is not directly supported by OB (yet :-) ). I know it can be done, but since I do not really use the buttons and since nobody asked... :-)
On 22 Feb 2007, at 22 February/12:31, Romain Robbes wrote:
Hi Philippe,
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- back-button
- what is is the status of services to enable refactoring support in
the omnibrowser?
These are available in the latest version of BrowserBooster
- integrate services into the duo-systembrowser
Is there a finished version of this browser? I had a quick look at, and some of the services were working for it. But since it was missing the button bar, refactorings with services were not yet accessible ...
Romain
Cheers Philippe
Hi Roel,
Il giorno Feb 25, 2007, alle ore 11:18 PM, Roel Wuyts ha scritto:
Hi Romain,
I did not receive any feedback for the DuoSystemBrowser, so I just use it for my personal coding but haven't added much else. I take feature requests though :-)
Well I've just tried it ... so far, so good ;-).
The reason the button bar is not in it is that it is not directly supported by OB (yet :-) ). I know it can be done, but since I do not really use the buttons and since nobody asked... :-)
Hum ... the default omnibrowser does have a button bar, though.
Romain
On 22 Feb 2007, at 22 February/12:31, Romain Robbes wrote:
Hi Philippe,
Most things in this list are either taken form other IDEs or bugfixes, so they might not be interesting from a research point of view:
- Scoping of implemtors/senders to packages
- back-button
- what is is the status of services to enable refactoring support in
the omnibrowser?
These are available in the latest version of BrowserBooster
- integrate services into the duo-systembrowser
Is there a finished version of this browser? I had a quick look at, and some of the services were working for it. But since it was missing the button bar, refactorings with services were not yet accessible ...
Romain
Cheers Philippe
-- Romain Robbes http://romain.robb.es
On Feb 18, 2007, at 11:31 AM, David Röthlisberger wrote:
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Using OmniBrowser for the last few years has made me notice something interesting. I did a lot of work in VW, and came to depend heavily on the power of the RB for getting things done efficiently. On the other hand, in Squeak I was using OB, and had to work around the lack of refactoring support. What I found is that having the right browsing UI can make the high-level operations that the RB provides less essential.
Here's a slightly contrived example, but it mirrors the sort of situation I've often found myself in with OmniBrowser. Lets say I have a class that has coordinate data in it, stored in ivars x and y. I want this to be private, so I don't have accessors. Now say I decide to convert the internal storage to polar coordinates.
With the RB, I'd probably do something like this:
1 apply the 'abstract variable' refactoring to create accessors and convert all direct accesses to messages 2 create instance variables r and t and reimplement the accessors in terms of r and t 3 remove the instance variables x and y 4 browse the senders of #x and #y and modify them to use r and t directly 5 remove the accessors for x and y
That "abstract variable" refactoring is really handy, because I can keep the class functional the whole time (particular handy if I'm developing using tests). On the other hand, I have to bounce around in the browser a lot, and I'll probably have to have several "senders" browsers open at once.
Now, in OmniBrowser I don't have that refactoring, but I do have a "chase variables" browser. It shows me a list of variables, the methods that access them, their senders, the senders of the senders and so on. So what I'd do is this:
1 create instance variables r and t 2 look at all the writers of x and y and modify them to write to r and t as well. 3 look at all the readers of x and y and modify them to read from r and t instead 4 make the writers of x and y write only to r and t 5 remove x and y
What's nice about the "chase variables" browser is that it makes step 3 pretty easy, because removing the uses of x and y usually also involves modifying the senders of those methods and maybe their senders as well. The "chase variables" browser shows me the transitive closure of the methods that use a given variable. This means I can see in a very visual way what I have to do, and what I've already done. I'm shifting methods from using x and y to using r and t, and the browser shows me a pretty direct reflection of that.
The upshot is that I don't miss the "abstract instance variable" refactoring much. Having it wouldn't hurt, and I do want to implement it, now that Lukas has got the ball rolling. But changing the way we can view code is even more powerful, and opens the door to more powerful tools. For example, refactorings are great, but they're limited in that they have to preserve the semantics of the code. If we could easily see what the effects of a particular change were, would it be safe to use powerful tools that didn't preserve semantics?
Colin
Hi David,
what's badly missing in "modern" IDEs is the possibility to write integrated documentation in form of stories. Having just a 1:n correspondence between system category and classes, message category and methods, is [in non-trivial cases] insufficient for describing "why and how this works" and "what, in terms of entities, is this *all* about" and moreover to ask for "what parts of the system have no integrated documentation".
I'd like to be able to drag'n'drop links to "browser accessible objects", into an integrated document and write a story "around" the links.
Classes, variables, categories, messages, statements, literals, all should be accessible by such link.
With integrated I mean, at minimum, that when browsing for senders, implementors, variables and other references, then the result list must also turn up the integrated documentation (which containes the links as described).
Another aspect of the integrated documentation is that it can (must!) outdate when, for example, things are renamed or deleted. Imagine a doIt for "browse outdated documentation" ;-)
I hope the above was clear; if not then I'd be happy to respond to questions and critique.
For the empirical case study: count me in, I'm used to be electronically investigated :)
/Klaus
On Sun, 18 Feb 2007 20:31:55 +0100, David wrote:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors
...
For me it is important to know if I can motivate enough people to do a serious empirical study.
...
Thanks for your help.
Kind regards, David
Hello Klaus,
what's badly missing in "modern" IDEs is the possibility to write integrated documentation in form of stories. Having just a 1:n correspondence between system category and classes, message category and methods, is [in non-trivial cases] insufficient for describing "why and how this works" and "what, in terms of entities, is this *all* about" and moreover to ask for "what parts of the system have no integrated documentation".
I'd like to be able to drag'n'drop links to "browser accessible objects", into an integrated document and write a story "around" the links.
Classes, variables, categories, messages, statements, literals, all should be accessible by such link.
With integrated I mean, at minimum, that when browsing for senders, implementors, variables and other references, then the result list must also turn up the integrated documentation (which containes the links as described).
Another aspect of the integrated documentation is that it can (must!) outdate when, for example, things are renamed or deleted. Imagine a doIt for "browse outdated documentation" ;-)
Thanks, this is a very interesting point! Having that would be indeed useful and of great value. I will add this point to my list.
For the empirical case study: count me in, I'm used to be electronically investigated :)
Thanks, I appreciate. :)
David
Hi!
While mentioning "neat things we could do" with the Squeak environment I would like to mention two of my ideas:
1. The Magic book. It is described on the Swiki IIRC. The base idea is to use unit tests to associate code with documentation and then monitor how the unit tests change in order to invalidate documentation.
2. The "developer events" idea with publish/subscribe of events together with a p2p network to create "real time collaboration".
Feel free to email in private for more details. Or dig out my previous posts in the archives :).
regards, Göran
One thing I was thinking about this was, if we had a darcs style idea of patches (as I have mentioned a few times :) then maybe we could make a browser that would let us go back to various changes and specify a collection of certain ones as a specific patch and annotate it. This might be a good natural feeling way to document the "why's".
Also with such a system it should be possible to remove previous patches that don't affect later ones, and things like that. I think there is a lot of room for advancement in this area.
From: "Klaus D. Witzel" klaus.witzel@cobss.com Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: squeak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Mon, 19 Feb 2007 02:50:45 +0100
Hi David,
what's badly missing in "modern" IDEs is the possibility to write integrated documentation in form of stories. Having just a 1:n correspondence between system category and classes, message category and methods, is [in non-trivial cases] insufficient for describing "why and how this works" and "what, in terms of entities, is this *all* about" and moreover to ask for "what parts of the system have no integrated documentation".
I'd like to be able to drag'n'drop links to "browser accessible objects", into an integrated document and write a story "around" the links.
Classes, variables, categories, messages, statements, literals, all should be accessible by such link.
With integrated I mean, at minimum, that when browsing for senders, implementors, variables and other references, then the result list must also turn up the integrated documentation (which containes the links as described).
Another aspect of the integrated documentation is that it can (must!) outdate when, for example, things are renamed or deleted. Imagine a doIt for "browse outdated documentation" ;-)
I hope the above was clear; if not then I'd be happy to respond to questions and critique.
For the empirical case study: count me in, I'm used to be electronically investigated :)
/Klaus
On Sun, 18 Feb 2007 20:31:55 +0100, David wrote:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors
...
For me it is important to know if I can motivate enough people to do a serious empirical study.
...
Thanks for your help.
Kind regards, David
_________________________________________________________________ Dont miss your chance to WIN 10 hours of private jet travel from Microsoft® Office Live http://clk.atdmt.com/MRT/go/mcrssaub0540002499mrt/direct/01/
This msg didn't seem to get through. My apologoes if it did. Cheers --Trygve ==================================================================
Hi David, Excellent! You seem to have similar goals to my goals for the BabuUML project. An up to date report on the current project state will be a chapter in a forthcoming book on SE research. You may find it interesting to look at a late draft: http://folk.uio.no/trygver/2007/babyUML.pdf
All the best for your project --Trygve
On 18.02.2007 20:31, David Röthlisberger wrote:
Hi all,
I'm currently doing a PhD under the supervision of Stephane Ducasse and Oscar Nierstrasz at the university of Bern, Switzerland. My main research interests are in the context of Integrated Development Environments (IDEs). I'm planning to work on the Squeak IDE to see how the IDE of a dynamic object-oriented programming language can be improved and extended. Especially, I want to experiment with different metaphors to browse and navigate source code, with new metaphors to present static (i.e., classes, methods, source code) as well as dynamic aspects (i.e., objects, relationships between objects, etc.) of a program in the same IDE, with new ways to modify and edit source code, etc. I believe that we can do more in a better way these days than what we have in the current IDE in Smalltalk or in Java. I believe that the IDE of the future can help the programmer to program more efficiently and with less errors by giving him more insights into the program being developed or by providing him with better tools and guides during his daily work. I believe that what we have now as IDEs are far away from what is possible to have and even far away from what we actually need to be effective and efficient in our daily work. This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same. During my PhD I want to see how we can get something better out of the current Squeak IDE.
I write this message out of two reasons: First, I would like to know if you have ideas for things that are missing in the current DIE of Squeak, "things", tools, metaphors, ideas that you would like to see implemented. What are your ideas of how an IDE could help you to work more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me? Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.? For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
2007/2/18, David Röthlisberger squeak@c3com.ch:
more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Hi David,
I have a problem with the multitude of different browsers. I don't know what the best solution is... a good window navigation tool like exposé? transient browsers that you don't need to explicitly close? one central window with most tools at hand and contextual inspectors?
"An IDE which makes it easy to focus on your work while hiding the complexity of the things you are not interested in."
Most IDEs seem to think that people only work on a single class (or hierarchy) at a time. But this is not the case, of course. Sometimes it is true, but more often than not you are working on a couple of classes that collaborate. In that you would ideally like to see only these classes, and then only the parts of these classes that have to do with the behaviour you are working on. What makes this hard is that this is something which changes rapidly over time. One minute you are working on extending a double dispatch scheme, the minute later you are changing the implementation of a related class to implement a singleton pattern, etc.
A number of cool browsers that I know of that try to support these ideas (sorry for all of those that I am forgetting, it is just as an illustration): - whisker : since you can easily work on those methods that interest you and edit these and only these. So you have less overhead in dealing with the methods you are not interested in at the moment. Disadvantage is that setting up a good working context is sometimes expensive - the Traits browser: collapses information but allows you to expand it to have a more detailed view. - The classification browser/StarBrowser/Intensive environments: the goal is to make it easy to set up and really use working contexts (e.g. all classes participating in a visitor design pattern) to break the tyranny of predefined relations used in most browsers (e.g. you can view classes according to their package or by inheritance or sorted by name, and that is it).
Note that from my experiments analyzing the behaviour of students wiorking with VisualWorks (through an extended version of my SmallBrother tool that would track what window was being used and being spawned from what other window in order to perform a certain action), there seem to be two kinds of users: one that like to have multiple windows open and those that like an Eclipse-like approach with only one window full-screen and buffers/tabs/views. Might be obvious, but it really seems to be the case.
On 19 Feb 2007, at 19 February/15:16, Damien Pollet wrote:
2007/2/18, David Röthlisberger squeak@c3com.ch:
more efficiently in your daily work? Where is the current IDE in your way, where is it not good enough, what could be better? What do you miss, what do you need to get a better IDE?
Hi David,
I have a problem with the multitude of different browsers. I don't know what the best solution is... a good window navigation tool like exposé? transient browsers that you don't need to explicitly close? one central window with most tools at hand and contextual inspectors?
-- Damien Pollet type less, do more [ | ] http://typo.cdlm.fasmz.org
Hi Roel,
"An IDE which makes it easy to focus on your work while hiding the complexity of the things you are not interested in."
Most IDEs seem to think that people only work on a single class (or hierarchy) at a time. But this is not the case, of course. Sometimes it is true, but more often than not you are working on a couple of classes that collaborate. In that you would ideally like to see only these classes, and then only the parts of these classes that have to do with the behaviour you are working on. What makes this hard is that this is something which changes rapidly over time. One minute you are working on extending a double dispatch scheme, the minute later you are changing the implementation of a related class to implement a singleton pattern, etc.
Yes, exactly. An idea of mine was to take use of dynamic (feature) analysis to find out which classes collaborate to each other when a software is running. Then we could automatically group these classes together. The closeness of one class to another in this group reflects the "closeness" in a feature or in the whole software. The closeness information has to be gained dynamically, and metrics to measure this closeness could be methods invoked on each other or instances passed to methods of each other, etc. This could lead to a short navigation distance a user has to follow when working on a specific feature in a software which minimizes context switches, different windows to open, the time to find and navigate code, ... We could even think of doing the same with methods instead of classes.
We could even do more with dynamic anlysis, e.g. visualize objects passing in a software, etc. For me, bringing the dynamic part of a software to its typically pure static view we have right now in all or most browsers seems promising.
One big issue here is of course to permanently gather this dynamic information and to make it easily accessible to the user while he is working on a software, so that the user gets the information at the right time at the right place. This is the challenge.
Note that from my experiments analyzing the behaviour of students wiorking with VisualWorks (through an extended version of my SmallBrother tool that would track what window was being used and being spawned from what other window in order to perform a certain action), there seem to be two kinds of users: one that like to have multiple windows open and those that like an Eclipse-like approach with only one window full-screen and buffers/tabs/views. Might be obvious, but it really seems to be the case.
yes, this is also my impression.
David
Hello Squeakers,
Don't forget the simplest but most powerful addition: tabs! Tabs are a thing which make Firefox browser famous, IMHO, and I also find RB_Tabs goodie in VW indispensable.
Next possible addition: back and forward buttons, as in web browser.
Best regards Janko
Roel Wuyts wrote:
"An IDE which makes it easy to focus on your work while hiding the complexity of the things you are not interested in."
Most IDEs seem to think that people only work on a single class (or hierarchy) at a time. But this is not the case, of course.
...
Il giorno mar, 20/02/2007 alle 12.42 +0100, Janko Mivšek ha scritto:
Hello Squeakers,
Don't forget the simplest but most powerful addition: tabs! Tabs are a thing which make Firefox browser famous, IMHO, and I also find RB_Tabs goodie in VW indispensable.
And they're also the only feature of Firefox that I positively _hate_.
So, a plea to whoever is going to invent the IDE of the future: please, please don't forget us SDI users.
;-)
Giovanni
Yea, I wouldn't overplay tabs too much. They are mostly only useful because of (a) how the windows taskbar works and (b) the fact that firefox only runs one instance of itself anyway so having a bunch of windows open is less convenient and actually slower then using tabs. Squeak browsers are (comparatively) quick so I don't miss the tabs at all.
From: Giovanni Corriga giovanni@corriga.net Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Tue, 20 Feb 2007 15:01:12 +0100
Il giorno mar, 20/02/2007 alle 12.42 +0100, Janko Mivšek ha scritto:
Hello Squeakers,
Don't forget the simplest but most powerful addition: tabs! Tabs are a thing which make Firefox browser famous, IMHO, and I also find RB_Tabs goodie in VW indispensable.
And they're also the only feature of Firefox that I positively _hate_.
So, a plea to whoever is going to invent the IDE of the future: please, please don't forget us SDI users.
;-)
Giovanni
_________________________________________________________________ http://homepage.msn.com/zune?icid=hmetagline
J J schrieb:
Yea, I wouldn't overplay tabs too much. They are mostly only useful because of (a) how the windows taskbar works and (b) the fact that firefox only runs one instance of itself anyway so having a bunch of windows open is less convenient and actually slower then using tabs. Squeak browsers are (comparatively) quick so I don't miss the tabs at all.
hm, interesting. But don't you think that it is easier to find a specific window with tabs when you have a lot of them opened? Tabs do not overlap, tabs help you to identify windows by just displaying their label/title/icon/color/whatever, tabs make hidden windows visible and accessible, etc. You see no value in that? Most of the time I open a lot of windows (browsers, debuggers, inspectors, workspaces, etc.) in Squeak, and sometimes they overlap, some windows get completely hidden by others, and so on. Tabs would help me a lot to deal with that.
David
From: Giovanni Corriga giovanni@corriga.net Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Tue, 20 Feb 2007 15:01:12 +0100
Il giorno mar, 20/02/2007 alle 12.42 +0100, Janko Mivšek ha scritto:
Hello Squeakers,
Don't forget the simplest but most powerful addition: tabs! Tabs are a thing which make Firefox browser famous, IMHO, and I also find RB_Tabs goodie in VW indispensable.
And they're also the only feature of Firefox that I positively _hate_.
So, a plea to whoever is going to invent the IDE of the future: please, please don't forget us SDI users.
;-) Giovanni
You could load one of the "Taskbar" packages from SqueakMap to fill that need! Best of both worlds.
hm, interesting. But don't you think that it is easier to find a specific window with tabs when you have a lot of them opened? Tabs do not overlap, tabs help you to identify windows by just displaying their label/title/icon/color/whatever, tabs make hidden windows visible and accessible, etc. You see no value in that? Most of the time I open a lot of windows (browsers, debuggers, inspectors, workspaces, etc.) in Squeak, and sometimes they overlap, some windows get completely hidden by others, and so on. Tabs would help me a lot to deal with that.
David
It is not that I see no value in it. But tabs are just the same behavior that e.g. windows already has: a task bar. In fact, XP will even group the browser windows all together if they can't be displayed side by side. At that point the only difference between what windows has and tabs is one is at the top, the other at the bottom.
But perhaps I misunderstood and you mean the taskbar/tab behavior in general. In that case, yea sure. Something like that could certainly be useful.
From: David Röthlisberger squeak@c3com.ch Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Thu, 22 Feb 2007 10:07:54 +0100
J J schrieb:
Yea, I wouldn't overplay tabs too much. They are mostly only useful because of (a) how the windows taskbar works and (b) the fact that firefox only runs one instance of itself anyway so having a bunch of windows open is less convenient and actually slower then using tabs. Squeak browsers are (comparatively) quick so I don't miss the tabs at all.
hm, interesting. But don't you think that it is easier to find a specific window with tabs when you have a lot of them opened? Tabs do not overlap, tabs help you to identify windows by just displaying their label/title/icon/color/whatever, tabs make hidden windows visible and accessible, etc. You see no value in that? Most of the time I open a lot of windows (browsers, debuggers, inspectors, workspaces, etc.) in Squeak, and sometimes they overlap, some windows get completely hidden by others, and so on. Tabs would help me a lot to deal with that.
David
From: Giovanni Corriga giovanni@corriga.net Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Tue, 20 Feb 2007 15:01:12 +0100
Il giorno mar, 20/02/2007 alle 12.42 +0100, Janko Mivšek ha scritto:
Hello Squeakers,
Don't forget the simplest but most powerful addition: tabs! Tabs are a thing which make Firefox browser famous, IMHO, and I also find RB_Tabs goodie in VW indispensable.
And they're also the only feature of Firefox that I positively _hate_.
So, a plea to whoever is going to invent the IDE of the future: please, please don't forget us SDI users.
;-) Giovanni
_________________________________________________________________ With tax season right around the corner, make sure to follow these few simple tips. http://articles.moneycentral.msn.com/Taxes/PreparationTips/PreparationTips.a...
Il giorno Feb 20, 2007, alle ore 9:47 AM, Roel Wuyts ha scritto:
"An IDE which makes it easy to focus on your work while hiding the complexity of the things you are not interested in."
Most IDEs seem to think that people only work on a single class (or hierarchy) at a time. But this is not the case, of course. Sometimes it is true, but more often than not you are working on a couple of classes that collaborate. In that you would ideally like to see only these classes, and then only the parts of these classes that have to do with the behaviour you are working on. What makes this hard is that this is something which changes rapidly over time. One minute you are working on extending a double dispatch scheme, the minute later you are changing the implementation of a related class to implement a singleton pattern, etc.
One thing which is rather hidden in squeak is the "recent submissions" browser, which is a message list containing the last 20 changed methods. It is under world menu/changes/"browse recent submissions ..." . It also keeps up to date and is rather useful to have handy.
Also one idea I had but never got to implement is a browser which would be a mix between the whisker browser and .... iTunes. You would have columns like a normal browser, except you could do multiselection in them, and display several methods in the lower pane. That would be a simple way to select a "working set" of methods. Which you could then save as a 'smart coding playlist' (which brings us to the starbrowser too ..., but the multi- selection if done right would make it easy to select and view several methods.).
Romain
-- Romain Robbes http://romain.robb.es
From: David Röthlisberger squeak@c3com.ch Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Towards a better IDE in Squeak Date: Sun, 18 Feb 2007 20:31:55 +0100
This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same.
Very interesting. I hope you come up with some nice stuff. :)
But to this statement I would say: (1) Eclipse may be getting better but it is light years away from what stock Squeak has right now. Eclipse is trying to do modify/run, but it only works in a very limited way, and I don't see this getting much better.
And (2), it may be true that Squeak hasn't moved a lot but that doesn't mean it sucks. Strongtalk sat on a shelf for 10 years without anyone looking at it, but it remains the most advanced dynamic VM on the planet for now (Exupery is comming though :).
_________________________________________________________________ Find what you need at prices youll love. Compare products and save at MSN® Shopping. http://shopping.msn.com/default/shp/?ptnrid=37,ptnrdata=24102&tcode=T001...
On 20 Feb 2007, at 20 February/16:51, J J wrote:
From: David Röthlisberger squeak@c3com.ch Reply-To: The general-purpose Squeak developers list<squeak- dev@lists.squeakfoundation.org> To: The general-purpose Squeak developers list<squeak- dev@lists.squeakfoundation.org> Subject: Towards a better IDE in Squeak Date: Sun, 18 Feb 2007 20:31:55 +0100
This is a bit sad for Smalltalk, because a long time ago it had the best IDE, but now Eclipse is getting better and better while the IDE of Smalltalk / Squeak stays more or less the same.
Very interesting. I hope you come up with some nice stuff. :)
But to this statement I would say: (1) Eclipse may be getting better but it is light years away from what stock Squeak has right now. Eclipse is trying to do modify/run, but it only works in a very limited way, and I don't see this getting much better.
Don't mistake the IDE with the language :-) In itself, and for those that like to have lots of panes with information, Eclipse is quite nice. Its completion features and problem resolvers are farther ahead than what I have seen for any Smalltalk environment. Of course. they have to be :-) :-) And even with all of these nifty features, developing Java in Eclipse is still tedious, cumbersome and slow compared to developing in Squeak. But this does not mean that I am not longing for a number of Eclipse (or even VisualWorks) features in Squeak :-)
And (2), it may be true that Squeak hasn't moved a lot but that doesn't mean it sucks. Strongtalk sat on a shelf for 10 years without anyone looking at it, but it remains the most advanced dynamic VM on the planet for now (Exupery is comming though :).
Couldn't agree more :-)
Find what you need at prices you’ll love. Compare products and save at MSN® Shopping. http://shopping.msn.com/default/shp/? ptnrid=37,ptnrdata=24102&tcode=T001MSN20A0701
From: Roel Wuyts Roel.Wuyts@ulb.ac.be Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Towards a better IDE in Squeak Date: Wed, 21 Feb 2007 22:40:47 +0100
Don't mistake the IDE with the language :-) In itself, and for those that like to have lots of panes with information, Eclipse is quite nice. Its completion features and problem resolvers are farther ahead than what I have seen for any Smalltalk environment. Of course. they have to be :-) :-) And even with all of these nifty features, developing Java in Eclipse is still tedious, cumbersome and slow compared to developing in Squeak. But this does not mean that I am not longing for a number of Eclipse (or even VisualWorks) features in Squeak :-)
Well ok. If they have something nice that we don't, let's steal it! :) I guess I just couldn't get past the slowness. :)
_________________________________________________________________ http://homepage.msn.com/zune?icid=hmetagline
On 2007 February 18 14:31, David Röthlisberger wrote: <<snip>>
Second, I would also like to do kind of empirical studies in the future to somehow validate the effectiveness and efficiency of new approaches for an IDE, hence I need subjects performing some experiments in these future IDEs and I also need data about how you use your IDE (e.g., how you browse source code, how and where you write source code, with which tools, etc.). Will you be willing to provide me with these data recorded by some non-invasive recordings tools you can simply load in your image and which will then save the recorded data to a file which you would then send to me?
You can count me in. I am not sure I am the right subject though, although I have been coding for many years (out of which last 9 Java only), I am a Smalltalk amateur. But I am very interested in what could be done to make the IDE better, in fact I was thinking about making a video recording of my 5 most confusing Squeak IDE actions (to name one, adding a new class while looking at an existing class still makes me madly clicking to make the "Object subclass:#name" to show :) )
Are you also willing to perform some experiments in new IDEs, e.g. trying and playing with them, use them for a project of yours, etc.?
Yes, although my project may not be a practical size...
Milan
For me it is important to know if I can motivate enough people to do a serious empirical study. Without that, I would have a hard time to "prove" that a new approach to e.g. navigate source code is indeed useful and promising, because this is very much dependent on personal feelings and impressions. Only a broader study can hence "prove" the general usefulness (or uselessness) of such a new approach or metaphor.
Thanks for your help.
Kind regards, David
squeak-dev@lists.squeakfoundation.org