I first heard about this through The Weekly Squeak blog. There’s been quite a debate going on in the squeak-dev mailing list about what to do with eToys. It’s been a part of the main Squeak distribution for a long time, and is in the version of Squeak you can get from squeak.org, and at squeakland.org. By my own reading of the debate it started with someone suggesting that eToys be removed from the future 3.10 release of Squeak on squeak.org (squeakland.org has an earlier release of Squeak and is not directly affected by this discussion). I was strongly opposed to this idea, for reasons that I’ve expressed in earlier posts, and I expressed my opposition. I learned later that eToys has been a boondoggle in Squeak for a while, and the Squeak development community has struggled with what to do with it. On the one hand there are developers who see no value in eToys and would just assume remove it. There are users/developers who use eToys and want it left in. There was also the concern that removing eToys would create confusion with new users who have seen the online Squeak demos which use eToys, and will expect it to be in Squeak when they download it from squeak.org. I agreed with this concern.
(Update 5-4-2011: I decided to cross out the last part of the paragraph below after giving this a lot of thought. I recall seeing Alan Kay say in an online conversation, quite a while after I wrote this post, that eToys was not a “hack,” and this caused me to reconsider my interpretation of the “prototype” term he used. I deleted the paragraph that followed the one below, which went into my own experiences with software prototypes, working in IT, since I no longer think it has relevance to this discussion.)
The story is, as I’ve been told, the reason for this struggle is that eToys was not implemented well (that’s the interpretation of some people, anyway). When eToys was written, a partial implementation of a graphics manipulation package called “Morphic”, and eToys, were combined together into one mass, so to speak. According to developers who have looked at it, it’s really hard to tell where Morphic ends and eToys begins, and vice versa (but this is a characteristic of all of Smalltalk). eToys was implemented when Disney sponsored work on Squeak probably in the late in the mid-1990s. Alan Kay was a Disney fellow then. In an earlier conversation about possibly porting eToys to Python, Kay acknowledged that eToys was implemented in Squeak as a prototype, whose purpose was to demonstrate the capabilities of Squeak.
It was not production-quality code. I don’t know yet why this was the case, and in fact it was surprising to me. I figured that with Kay being such a perfectionist, and Smalltalk being so elegant, eToys would share those same qualities. As far as I’m concerned it runs great for being written so badly.
According to what I’ve heard from others, eToys has created a logjam in Squeak user interface development. Anytime someone comes along to try to improve it, it breaks. In a way eToys is Squeak’s greatest strength, and its greatest weakness. It’s what tends to attract people to Squeak, but it also prevents Squeak from advancing technologically as a GUI environment.
The Squeak development community is all volunteers. No one is paid to work on it at this point. Many times contributions to Squeak come as a result of work that researchers and/or consultants have been paid to do for private projects. They donate portions of what they created back to the community. I’m sure there’s altruistic development going on. I’m just not sure about the proportions.
There are some who would like a Morphic/eToys-free an eToys-free version of Squeak to do their own development work with, and a few others who would like to clean up the whole mess, start fresh, and then build a new version of Morphic onto the Squeak “developer’s image”. The hope is that a reworked version of eToys can follow that is written better and is more efficient.
I’m a little uncertain about this, but my reading of the conversation in squeak-dev was that eventually a plan was announced to try to satisfy everyone. The plan was that whenever the next release (3.10) is made, either a) a single “full” Squeak image will be released, which contains everything including Morphic/eToys, but will contain an option a developer can exercise which will remove Morphic/eToys eToys from their copy of the Squeak image and leave Morphic in; or b) two images will be released: one “full” image containing Morphic/eToys, and a stripped down “developer’s image” with Morphic/eToys eToys removed (and Morphic left in). This way people will have a choice. They can either get Squeak with Morphic/eToys, or without it eToys. Squeak users will most likely want the version with Morphic/eToys. Even new developers like myself will probably want it. Some other more experienced Squeak developers will want the non-Morphic/eToys non-eToys version. Both can be satisfied. That was the proposed plan, anyway.
A Squeak developer named Juan Vuletich has spearheaded an effort to build Morphic Version 3.0 on a Morphic/eToys-free an eToys-free image. He would love some help if anyone is willing to give it. I would gladly get involved myself, but I’m still learning about Squeak. It’s best to recognize one’s limitations and know when to stay out of the way. If work is still ongoing by the time I’ve learned some more, I’ll take a look at joining in. I’d like to see this improvement effort succeed.