Pressures for Substantially New Squeaks

Andrew C. Greenberg werdna at gate.net
Sat Feb 13 14:36:57 UTC 1999


> Andrew C Greenberg made a very good point about the necessity of
> modularization for the success of an open source project. I second that.
> He also recognized that for modularity encapsulation features are required.

Actually, I noted that they are helpful.  I doubt they are "required" 
in the sense Stefan puts it.  Indeed, privacy encapsulation features 
are not part of Python, and the brief dalliance with it, I 
understand, may not survive into the next version.  Python is of 
course one of the most successful of open source projects, and the 
modularity of Apache is accomplished via shared libraries, which 
Squeak now supports.

*snip*

> Using a changes browser to check whether module A and module B will work
> together with my module C (an explosion of combinations btw) and fixing the
> problems manually cannot be the solution.  We need a mechanism which
> prevents the problems before they even arise.

This is a new sense of the word "need."  Time will tell.  And, as a 
nice by-product of Squeak, it being what it is, namespaces can be 
engrafted almost anytime.  As I recently read the VisualWorks white 
paper, it occurred to me that this sort of thing could be readily 
accomplished in time.

> Python, btw has a powerful module concept.  IIRC it has also a convention
> by documenting public interface methods and private implementation methods.

As noted above, Python's "convention" is not enforced by the 
language.  Guido opted against privacy to keep the language reflexive 
and open to tools, and the new privacy features are not being widely 
used anyway.  [In Python, identifiers beginning with "_" are 
scrambled by the compiler when compiling the module so that calls to, 
say "Fuzzy.__foo(object, parm)" from outside will be flagged as 
undefined.  On the other hand, an outsider can trivially access the 
method or variable directly simply by using the alternative 
(scrambled) identifier instead without a whimper from the system.]

Squeak also has such a convention.  Put private modules in a protocol 
category entitled "private."  If you really desperately need to have 
the compiler remind you of impinging upon private modules -- go ahead 
and have the compiler do that for you.

Anyway, namespaces might be useful, but they aren't a priority yet. 
Seminal squeak system resources are still being built, and much of 
the kernel still needs to be documented and polished.  (This is still 
a baby project -- isn't it amazing how far its come in just a few 
years? (piggybacking, of course, upon a decade of PARC's fundamental 
research!))

Unlike Python, however, Squeak is a Smalltalk, and modifying the 
language isn't something one does by fiat.  Deciding how to adapt to 
stated needs requires careful balancing of the demand, the resources 
available and the other stated needs of users.  In short, if you need 
it, build your namespaces facility.  [I would agree that a 
well-designed and upward-compatible solution would be desirable and 
might enhance further development.  I don't agree it is necessary in 
the sense Stefan is using the term -- Squeak can and will survive 
well without it.  Squeak is not Python, it is not Java and it is most 
certainly not Visual Basic.  There are upsides and downsides to all 
of those things.]

What it is, is the only serious programming system around anywhere 
that actually lives the dream of "write once, run everywhere." 
Something years of effort and hype have not been able to produce from 
Java.  You can, and I and others have, build serious applications in 
Squeak, in some cases in record time.  The term toy, whether Stefan 
intended it to be negative or not, simply isn't accurate or 
appropriate.





More information about the Squeak-dev mailing list