[squeak-dev] What turns off newcomers

David J. Goehrig dave at nexttolast.com
Mon Apr 7 22:15:39 UTC 2008


Andreas Wacknitz wrote:
> And many of the newcomers get alienated by many aspects of Squeak:
>     - it is hard to find documentation
>     - it is hard to get used to Morphic (its power isn't obvious but 
> its clutter is)
>     - it is hard to find a Squeak version with not so many obvious 
> bugs and problems
Long time lurker here,

Short answer: (For those who don't want to read the post)

Newcomers are turned off by seemingly irreducible complexity of the 
system; Squeak need continual refactoring.

Long answer:

My two cents as a "newcomer" to Squeak would be that all of these are 
real problems.  Every year or so I evaluate Squeak, as well as 
commercial smalltalks as part of my consulting business.  To give you an 
idea of where I'm coming from, our business helps startups identify new 
technologies and design platform architectures for "emerging markets".   
Our customers range from 2 guys in a garage to large multinational 
entertainment conglomerates.  My typical project last about 4 months, 
and in the past 4 years, I've built systems using Javascript, Common 
Lisp, Perl, Python, PHP, Objective-C, C, C++, Java, Forth, Postscript, 
Ruby, Smalltalk, Ocaml, SML NJ, Lua, and Haskell.  These applications 
have been running on everything from 100 node clusters to cellphones.

I've wanted to use Squeak on several occasions but ran into trouble 
quickly enough to have to switch gears.  This year's evaluation ran into 
some issues:

1.) Image stability issues (or why does my image keep curling up into 
fetal position and crying)

    * upgrading an individual package can break your image bad and in
      unpredictable ways
    * package dependencies are difficult to identify resolve before you
      install
    * base Squeak image is too big, and while the community provided
      images are great, it can be hard to determine what one "needs" vs.
      "nice to have"
    * staying current is too dangerous, but without an obvious release
      schedule / road map  it is difficult to know when to upgrade

2.) Documentation vs Reality (or what smalltalkers forgot to tell their 
children)

    * documentation within core classes often missing and occasionally
      out of date
    * while source is easily readable and understandable, much of the
      WHY is missing
    * getting non-smalltalkers into the smalltalk culture is hard
      without a historical perspective
    * breaking bad habits of gang of 4 "design patterns" programmers is
      nearly impossible

3.) Process & Threading & UI issues (or how squeak is slow & ugly)

    * it is way too easy to lockup the current scheduler & green threads
      implementation
    * UI responsiveness on a "fast" machine often leads to buggy
      clicking, typing issues
    * Fonts are incredibly fickle and obstinate :)

4.) Extending & Embedding (or how squeak doesn't play nice with others)

    * there are tons of 3rd party libraries squeak can't interface to
      (that _____ already does)
    * it is more difficult to maintain and build a custom VM, plugin,
      compared to other interpreted languages (as I've done with Perl,
      Python, Ruby, Lua, Javascript, and Java)
    * many platform features on Linux / BSD / Mac OS X are difficult to
      take advantage of without custom extensions
    * hard to talk to actual hardware within Squeak

But none of these things are really the issue that kept it out of the 
running as the choice of tool.  In fact these are all different problems 
from the prior years evaluations.

Assume for a second that I can convince a client that they don't need to 
worry about supporting the product, because that's the service I'm 
selling them.  My biggest hurdle to using Squeak in a production 
environment isn't image management (it is easily scriptable), and it 
isn't version control (MC is wonderful), and it isn't the development 
tools (hey they're the selling point).  My biggest problem isn't finding 
other programmers to train, or training them (I take it as a given that 
even experienced programmers need constant training). 

My biggest problem is that it is too complex, and too difficult to 
reduce that complexity without breaking things. 

When you build a project on top of Squeak, it is common practice to 
assume that Squeak is a layer of irreducible complexity, on top of which 
you are adding more complexity.  Design decisions within that body of 
code, determine the applicability of every design decision you make 
about your actual application.  And as soon as you are attempting to do 
something that is non-trivial for Squeak, you find yourself in a strange 
sea where dragons lurk behind every wave.

Part of this problem is a historical accident, the smalltalk community 
in general relies heavily upon a shared cultural memory, as images beget 
images and layers of cruft get lost among the cobwebs.  But a large part 
of this problem is a forgetfullness, where design decisions were made in 
a context, and as the context changed so too should have the design, but 
with the WHY lost, the change doesn't happen.  Squeak needs a continuous 
refactoring.  Odds are Alan Kay's goal of a 20k LOC system could be 
beaten easily by 10k if this were done.

A newcomer to Squeak looks at the incomprehensible class listings and 
asks herself "Do I really need this particular piece of junk", looks for 
an answer to "Why is this here", and is frustrated because often the 
answer to those questions has been forgotten (or is only held in someone 
else's head).  Upgrading feel like Russian roulette  because it is 
difficult to know how the changes will effect the system.  And  
experimentation  with making fundamental changes  is equally frustrating 
as  doing an engine change on car running down 101 during rush hour.  
 From this perspective and experience Craig Latta's Spoon is an easier 
sell than a full Squeak release.  The reason is simple, its a 
programmer's mantra: Less Code, Fewer Bugs, Lower cost.


Those are my 2 cents, lurking mode on.

Dave


-- 

David J. Goehrig


Phone: (716)-348-2984

Email: dave at nexttolast.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20080407/1f078f3c/attachment.htm


More information about the Squeak-dev mailing list