The Future of Squeak or Squeaking at the Future?
Viktor Svub
gilrandir at centrum.cz
Fri May 12 11:43:46 UTC 2006
I'm a 'Squeak Newbie' for more than a year now, and i really love the
language and environment. Now with full closures, traits, Seaside,
Magritte, Exupery... (Tweak?, pragmas?) the language is truly limitless
and still clean-and-simple (I'm one of the people who really like the
Smalltalk syntax ^_^ ).
What's really bugging me is the lack of possibility to use Squeak for
'everyday tasks', like linux scripting, small apps and so on... i don't
say it's "impossible", but totally discouraged, unsupported and
"forsaken" by most employers.
As it stands now, Squeak *is* a language for long-time Squeakers, OOP
learning and language-hacker, maybe mid-sized web apps, but *nothing more*.
I'm forced to learn Ruby (and probably Python) to be able to do my work
now, and i do really hate the utterly ugly and evil perl-like syntax,
lack of dev environment (Browser? Shout? ...impossible) and the
complexity (perplexity?) of this languages.
I've read enough of the discussions and articles regarding
Squeaks/Smalltalks future, and this is a sum of the main issues with
some personal remarks:
-> *GUI DESIGN* of Squeak is kind-of weird/childish: we don't really
need look like window$, but the UI is the first thing man gets to see,
so adding a bit of sanity would be nice (anyone using the Skylark theme?
@ http://www.comtalk.net/Squeak/87 ...imo this should replace the
default one, but porting in 3.9 involves kind of black magic; an
alternative theme mimicking the 'redmont' look wold be /though ugly/
nice too ^^; )
-> *no native apps* - kind-of part of GUI, but shouldn't be too hard to
get right: we have wxSqueak, maybe we will get Ffenestri... make the
first-time users see them ^_^
-->complex graphical apps use the host system only to get a plain
window and draw their content by themself (Winamp, most of Miranda,
almost all games...) - we should be able to mimick this behavior: make
the native windows 'wrap around' SystemWindows and other morphs/Tweak
costumes and let BitBlt do it's work.
-->i don't really see a reason for the main window being controlled by
the VM: it should be possible to show/hide it on-demand and so everybody
could choose: Squeak UI like it's now, or loose apps in native windows
and let the main window act like the 'java console', but
not-even-comparable better.
-> *threading* - good to use soft-threads, bad to not-be-able to use
host threads, most in the times of multi-core CPUs
-->I've read an *really* interesting blog concerning the use of
realtime delays (another pain-in-ass) >>
http://www.cdegroot.com/blog/2006/02/02/delay-after-delay/, and it
really shouldn't be hard to implement Transactional Memory
(http://www.cambridge.intel-research.net/~rennals/faststm.html) without
breaking image format (breaking delay-using code is no argument, even
between minor versions of Squeak, half of the packages get regularly
unusable)
--->if we had transactional memory *and* externalized VM state, we
could fork the interpret for every transaction... or use a predictive
scheduler to assign the transactions to a fixed number of host threads
... or there are sure other ways (only guessing, I'm not very proficient
in this field).
-> *foreign languages* are another long-time problem: english is good
enough for the dev environment, but not for end-user apps, and until the
whole image works in Unicode (utf-8), using any language with
non-standard charset involves very deep hacking of the image and fonts,
much of the free distributed TTF files have complete-enough utf-8
charset, but loading them, the national characters are still unusable
(not talking about input conversions).
-> *packages/namespaces* - I've tried VW, and it's packaging system is
evil, taking away the simplicity and so the usability; Monticello is
good, but not good enough, and without namespaces
(http://swiki.krampe.se/gohu/32 is really enough), the image gets very
bloated in no time... waiting for M2, waiting for namespace support in
newCompiler (could hack it into by myself, but for a compiler generated
by SmaCC, it'd be a more-than-dirty solution).
-> *host integration* - no callbacks, insufficient FFI (limited
parameters) - it's true anyone can write an own wrapper plugin, but it's
very discouraging and complicating the work (a language should aid the
developer, not adding tasks).
I thing there is a way Squeak can stay a small, simple and fast
environment for embedded dev on one hand and a robust dev
language/environment/framework/engine/call-it-as-you-like for system
scripting, web/desktop apps, and with Exupery maybe system apps and
games too ^__^ (just dreaming..?)
Of course i could do a lot of these 'tasks' myself, and/or aid in
others, but by now, there is really no motivation to do it without the
community support - it's a lot of changes, depending on each other and
sometimes breaking compatibility, and i really don't want to end up with
my own branch of VM and image, unsupported and so unusable in the real
world out there...
Is there a real possibility to do this kind of 'step in the dark', and
evolve Squeak for the use in real word, in our everyday jobs... without
losing the community?
Viktor Svub
More information about the Squeak-dev
mailing list
|