[Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

Ben Coman btc at openinworld.com
Fri May 19 16:24:50 UTC 2017

Hi Zak,

Its really impressive to hear what you've accomplished, but I think you
have a tough road ahead attracting collaborators and funding to take it to
the next level.  I'm sure you're aware you've got a chicken-egg problem**.
  Everyone is invested in the Smalltalk dialect they use, which comes with
multiple libraries, a community of specialized collaborators and existing
commercial funding streams, all of which reduce the effort and risks of
using the system.  The question will always be, "what is the *massive*
benefit of the new over the existing to make the effort and risk

On Tue, May 16, 2017 at 2:01 AM, Zak Fenton <zak.fenton at outlook.com> wrote:

> Hi folks. I posted earlier in squeak-dev about a Smalltalk implementation
> I've been working on. The first post was a bit unwieldy, but there was at
> least some interest so I'm posting an update to vm-dev and pharo-dev.
> Main strong points are that it's embeddable (like Lua or SQLite) and
> scalable (like Erlang). There are weak points too, of course (e.g. hot loop
> performance will be much worse than Squeak/Pharo at this point).
Its been a long time coming, but recently there has been progress towards
an embeddable VM...

> The VM itself is pure C and has no dependencies apart from libc and libm.
> It doesn't require a filesystem (you can pipe VM images through custom
> stream implementations or arrays) and it should run well in tight (~1MB)
> memory situations.
Is 1MB for both VM and Image?
For comparison, the size of our minimal interpreter
(sqstkspurlinuxhtminimal) is 1.2MB
Pharo's bootstrap image is about 6MB,
An embedded Image that just toggls an LED is supposed to be possible in 1KB.

> The extension system is similar to the Unix system call and virtual
> filesystem APIs, so it's kind-of object oriented but in a very "C" way. All
> extension resources are managed properly (so the system can clean up safely
> and/or warn you if you allocate memory and don't deallocate it, for
> example).
> Extensions are available for cells (threads/individual VMs), shared memory
> (so different cells can communicate efficiently - but also with memory
> protection and calling features for implementing domain-specific JIT
> compilers), windowing and event handling (based on SDL2) and 2D graphics
> rendering (based on Cairo). There are some higher-level libraries (stylable
> GUI system, tight OS integration, 3D modelling, etc.).
> It's polished in some ways (there's a test suite, an integrated help
> system, colour shell, etc.), but it needs a lot more refinement in others
> (the current GUI style is terrible, it needs more documentation, there's
> only minimal support for keyboard entry, no networking library, etc.).
> I'd like to release it (ideally as 100% public domain/CC0), but I don't
> want to do so without some way of funding development. The project promises
> a lot and I want to actually deliver with some ongoing updates and support
> (and being able to pay rent next week would also be a plus), so I'm not
> interested in just dumping it on GitHub and calling it a day.
> So I'm open to any suggestions as to how to fund this project at least in
> the short term and how it might fit into the wider Squeak/Pharo/Smalltalk
> ecosystems, as well as any technical criticism relating to the
> implementation itself.
In [pharo-dev] its common to hear people say "my plate is full" regarding
things they'd like to do if they had time, so I expect there are not a lot
of spare cycles to investigate your system.

While we know that Smalltalk will eventually take over the world ;), for
now it is still a niche language, so the pool of angel investors is small.
I wish you luck, but my tough advice is... don't treat your implementation
as a golden egg.  Use the experience your developed to collaborate on
OpenSmalltalk [1].  If you can adapt that to fit your parallelism ideas,
then you automatically gain an audience/market rather than having to
overcome the chicken-egg to build a whole new community yourself.  Show
some proof of concept and this might be more likely to get funding because
of the wider ecosystem you get for free.

[1] https://github.com/OpenSmalltalk/opensmalltalk-vm

I've put together a basic website describing the implementation in a bit
> more detail (sorry, no downloads yet): http://a4vm.info/

btw, where in Australia are you from?  I live in Collie, Western Australia.

cheers -ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170520/d161aab1/attachment-0001.html>

More information about the Vm-dev mailing list