Design Principles Behind Smalltalk, Revisited

Jimmie Houchin j.squeak at cyberhaus.us
Thu Dec 28 17:36:02 UTC 2006


Hello Paul,

Paul D. Fernhout wrote:
[snip]
> Just out of musing, lets us consider this issue of picking what system 
> to build on abstractly out of all the known options.
> 
> There is a such a thing as a language or programming system  being 
> "entrenched" in a company (or even in a programmer's toolbox in some 
> sense). (Entrenched literally meaning "dug in" or "in a trench").
>   http://wordnet.princeton.edu/perl/webwn?s=entrenched

Ok. Didn't see that as a requirement or variable in the previous 
discussion. As one who currently does no professional programming and 
gets to pick what language he wants to do a project in, it is a non-issue.

[snip]

> Now, most systems do not go from nonexistent to entrenched overnight. 
> Even Java internally had various steps internally from VisualWorks/ST-80 
> (runtime fees too high! :-) to Green to Oak Java. Yes, I say Smalltalk, 
> because from what rumors I hear, Sun did want to use Smalltalk for the 
> set top box first, but was rebuffed out of greed. You see there that a 
> somewhat-entrenched Smalltalk had a chance to nip Java in the bud but a 
> failure of management vision coupled with short-term commercial greed 
> got in the way IMHO. And all Smalltalkers have paid the price -- both 
> for that failure of vision but also for our own personal decisions to 
> couple our fortunes (money wise and aesthetics wise) to a commercial 
> vendor. That is the main reason why the personal copy I purchased of 
> VisualWorks + ENVY Client + ENVY Server (at almost $10000 all together) 
> sits gathering dust on a shelf and instead I use Python and explore 
> Squeak or other free Smalltalks; I just don't want to be on that path 
> anymore -- entrusting my fate mainly to someone else's greed; it has 
> brought me and many other Smalltalkers years of pain of having to work 
> in other languages and related environments like Java (or, even, to a 
> lesser extent, Python, when you know what an programming environment 
> could be like). Maintaining large complex business apps in Smalltalk was 
> often fun; maintaining them in Java is mostly work. (Python is somewhere 
> in the middle.)

Sad story. And I understand completely. My first programming experience 
was with Prograph CPX on the Mac. $1500 (not quite your investment) was 
very significant to me, and the company did not honor its obligations 
and went out of business. My next one was Optima++. It too (as a 
product) went into oblivion. Ugh. Two of my compelling reasons for my 
desire of Open Source software.

> I think an important "design principle" should be that a system should 
> easily move from one stage here to the next. :-) Because, all other 
> things being equal, ultimately, entrenched systems are easier to use. :-)

True, very true. But for things done on a personal level, I am a big 
believer in "build it and they will come". That is provided there is a 
compelling product being offered. So started Python. Being entrenched 
wasn't its goal. But entrenched it is. Having something compelling and 
worth being entrenched is the important part unless you can provide 
dollars or politics in which to cause entrenching.  ie: Java

[snip]
> For me, while I'll still consider learning other systems, Python (mostly 
> Jython these days) is the entrenched tool with an Algol syntax. Lua just 
> has no hope I can see of displacing Python for me anytime soon (barring 
> external forces or some new need I come up with).

That's fine. As the one picking the language I use or play with I place 
a higher value on pleasure or beauty of the language than on its being 
entrenched anywhere than with me. Squeak is the only thing entrenched 
with me. I can use Python but don't really enjoy so.

I enjoy functional programming and Lua offers that nicely.
I love that Lua uses 1 based indexing, has blocks, closures, coroutines.
I love that it is small so it can be learned to a reasonably high level 
quickly.

I've tended to use Python more functionally than OO. So Lua fits me 
better in that regard.

For some strange reason, when in Squeak I jump right in creating classes 
and methods. ...

In Python I've never created a class. I just create methods and data 
structures. Strange. And I have never like Pythons OO. It just doesn't 
feel right to do length('string') instead of 'string'.length .

For that reason I've often considered Ruby. But I've stumbled and never 
acquired the taste for @$@@LineNoise.

Oh well, so much for the vagaries of personal whims. :)

[snip]
> This is not a slur on the value of Lua.

Never thought so.

 > This is just to say that to
> compete head-to-head against an entrenched alternative (say like 
> Python/Jython vs. Java in many businesses today) a programming language 
> has to offer not just 10% more value (1.1X), but more like 300% more 
> value (3X). Python (as Jython) does offer that 300% over Java for most 
> Java developers who will use it. Lua does not offer 300% more value to 
> me than Python (at least as far as I can see right now; time will tell). 
> No language is perfect; but some meet current needs better than others; 
> as needs change, so does the landscape of sensible possibilities.

Will not argue or dispute that.

> Squeak's big value proposition is that it is four things:
> * an effective self-documenting programming language,
> * a set of cross-platform libraries and runtimes,
> * a complete IDE, including a fantastic debugger and source code control,
> * an idea processor for enhancing creativity (its ultimate purpose).

Agreed.

> And that is why I find Python or for that matter, probably Lua, 
> unsatisfying in contrast. Python has the first being a language that has 
> been called "executable pseudo code", for sure, but the other three ares 
> are where it starts to falter and then fall short. For example, it's 
> difficult to alter a running Python program, and almost impossible to 
> restart a function, which is easy to do in Squeak and a big part of 
> Smalltalk productivity -- especially in large programs. I had no problem 
> maintaining huge things in VisualWorlks+ENVY or participating in a 
> development process involving lots of people (many of them relatively 
> inexperienced), but even a mid-sized Python program developed by one or 
> two experienced people begins to get a big of a bear to maintain and 
> refactor and incrementally improve (not impossible, just harder than I 
> know a similar application in Smalltalk would be).
> 
> However, issues like familiarity, stability, completeness, modularity, 
> and licensing have trumped those other Squeak advantages (for me) which 
> is why I usually turn to Python. Most projects I do are not that huge 
> anyway, or can be refactored into smaller parts. So, to be a better 
> value proposition, Squeak (or Lua :-) either has to become an even more 
> compelling "idea processor" (e.g. even beyond OpenAugment), or gain 
> those other advantages Python has, or really *now* needs to do both, 
> since for me Python is already "entrenched" and Squeak needs to now be 
> 300% better to compete against it. Ten years ago, Squeak could have been 
> as good as Python; now it needs to be vastly superior. "Just as good" is 
> not "good enough" when the alternative is already "entrenched". Granted, 
> however, some specific issues about Squeak (licensing, GUI feel, 
> internal complexity) have kept me from giving it a lot of chance to 
> grown on me as an idea processor.

Understood.

> Now, I'm only bothering to write this not to point out Squeak-ish 
> competitive disadvantages by themselves, but because I'm willing to put 
> a little work into those directions -- since I still believe in a lot of 
> the Smalltalk ideals (and remember its accomplishments when I used it) 
> and still prefer keyword syntax (though I still have to trade that off 
> against getting other stuff done now with Python). Perhaps a Squeak 1.1 
> under the Apache license on the JVM the same way Dan did a Squeak 2.2.
>   http://weather-dimensions.com/Dan/ForwardToThePast.jnlp
> might be a start. Then I could leverage Java's ability to provide some 
> of those other things (stability -- after ten years of Sun working on 
> it, ease of installability -- one click web start, and so on). 
> Essentially, an "idea processor" for the JVM? Unfortunately, Squeak 1.1. 
> reaches so far back (and I remember the early problems with 1.13) that 
> there is a lot of work to bring 1.1 back up to something really usable. 
> And even then that system might be in the same position Lua is in now, 
> great, but not "entrenched". :-)

I don't believe you need to start with Squeak 1.1. If I am not mistaken 
Viewpoints is attempting to relicense the whole of Squeak having gotten 
Apple to relicense its part. It is trying to move the whole of core 
Squeak into an Apache(Apple)+MIT(the rest) license situation.

The nice thing is that Squeak is compelling enough that I think most 
issues will be addressed. Despite that Python has owned you for awhile 
it doesn't seem to have owned your heart. You keep looking back to 
Squeak hoping and longing.

I would just say that if given the opportunity on a project if 
compelling (Squeak) vs. entrenched (Python) that compelling is anywhere 
in the running give it a chance.

Personally, due to my quirk above. I've even considered prototyping in 
Squeak and porting to Python on some things. Squeak is just such a 
comfortable place to work, even if for entrenched or other reasons you 
can not deploy. It is a great place to work out the ideas and thoughts 
until you have a fruitful conclusion. Then if necessary, deploy to 
entrenched. If not enjoy the compelling and its good enough. Might 
reduce the head banging. At least while in the thinking it through 
process. (not sure if I'm preaching to you or me. ;)

> And, as for your question on license, what matters to me in that regard 
> is being able to put GPL'd applications on top of the platform.  (I 
> don't care that much about the licensing of the platform otherwise, as 
> long as it is "free"). If that is possible with an Apache version of 
> Squeak, that's fine. If it is not, then that is a big difficulty. I like 
> the GPL as a constitution for defining cooperation on an application and 
> have used it before with success to that end. About half the free 
> software out there is under the GPL, another big chunk is under a GPL 
> compatible license (X/MIT or BSD), and then a smaller part is 
> GPL-incompatible (Apache, etc.).

I would think GPL on top of Squeak is doable if your GPL code is 
separate from Squeak and the GPL only applies to your code. But I'm not 
expert and prefer MIT to GPL.

> --Paul Fernhout
> (By the way, our garden simulator and other free software runs under 
> Wine under GNU/Linux, last I tried it).

Alas, I am the only Linux user. My wife and children use Mac with OS X 
on PowerPC machines.

Jimmie



More information about the Squeak-dev mailing list