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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Zak Fenton
 

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).


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.


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.


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


-Zak.

Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

askoh
Administrator
Has any VM expert checked out this claim? Please comment.

Thanks,
Aik-Siong Koh
Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

Ben Coman
In reply to this post by Zak Fenton
 
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 worthwhile?"


On Tue, May 16, 2017 at 2:01 AM, Zak Fenton <[hidden email]> 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.


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 
Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

David T. Lewis
In reply to this post by askoh
 
On Fri, May 19, 2017 at 06:19:15AM -0700, askoh wrote:
>  
> Has any VM expert checked out this claim? Please comment.
>

Nothing has been released, so there is no basis for comment. But I did
read the paragraph at the bottom of http://zakfenton.com/about/hobbies,
so I would not expect this to be a credible claim.

Dave

Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

Zak Fenton
 

Hi. You're right to be a little sceptical, this is all pre-alpha stuff.


However, watch this space... I should have an update in a couple of days as to whether or not the launch will go ahead (and, if so, how). More technical details will come with that update.



From: Vm-dev <[hidden email]> on behalf of David T. Lewis <[hidden email]>
Sent: Saturday, 20 May 2017 9:36 AM
To: Squeak Virtual Machine Development Discussion
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

On Fri, May 19, 2017 at 06:19:15AM -0700, askoh wrote:

> Has any VM expert checked out this claim? Please comment.
>

Nothing has been released, so there is no basis for comment. But I did
read the paragraph at the bottom of http://zakfenton.com/about/hobbies,
so I would not expect this to be a credible claim.

Dave

Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

Zak Fenton
In reply to this post by askoh
 

Hi Askoh. I did have some in-depth discussions with another engineer from one of these lists (I think that was in a private thread though), and I can answer any specific questions you may have (e.g. about the threading model or interpreter core), but I guess you'll have to wait for the public alpha to know for sure if I'm telling the truth or not :).


It isn't a very hard-to-believe product when you see it in action. It's just the combination of features that makes it potentially powerful, it doesn't really introduce any new magic.


From: Vm-dev <[hidden email]> on behalf of askoh <[hidden email]>
Sent: Friday, 19 May 2017 11:19:15 PM
To: [hidden email]
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

Has any VM expert checked out this claim? Please comment.

Thanks,
Aik-Siong Koh



--
View this message in context: http://forum.world.st/Embeddable-scalable-Smalltalk-VM-needs-funding-for-release-repost-update-from-squeak-dev-tp4947214p4947638.html
Sent from the Squeak VM mailing list archive at Nabble.com.
Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

Zak Fenton
 

Sorry, I got threads in wrong order here (I'm not so used to mailing lists). This response is for Ben. My wonderful email client isn't letting me quote properly either.


Yes, whole system fits in <1MB. It's roughly 270KB for the complete core system (100KB VM, 170KB image) and about 700KB with all of the extensions and libraries.


My images are still much bigger than they need to be. I haven't tried an absolute minimal one without the compiler and such - but the higher-level stuff (GUI, threading, other extension-specific things) is all optional.


As for the problem of marketing a Smalltalk VM (chicken and egg, Smalltalk being a niche), well, I have a very simple solution: Sell it as something else (a game design tool, for example). I do want to sell a generic "SDK" product as well, and this will look more like Smalltalk, but the "app store" versions will probably be more like PICO-8, i.e. "fun" and "beginner-friendly" development tools (not language-focused).


(There will be versions with source code as well. My current plan is probably to release "stable" versions with full source, but keep new features closed-source until they make it into a stable release. This should solve a few issues and result in a healthy balance.)


I was initially going to target it at existing Lua users (it's very easy to implement Lua in Smalltalk, of course), but they were too confused about persistence actually working, so I figured having a GUI toolkit and threading libraries built-in would be too much for them :). Turning the product into a kind-of "premium Lua" might still be an option though.


You're probably right about needing a demo release to attract more interest. Good news is, I should have an update very shortly about funding, I just don't want to jinx it :).


I'm in Canberra. Was hoping to visit WA this year actually but didn't end up happening.



From: Zak Fenton
Sent: Saturday, 20 May 2017 11:23:06 AM
To: Squeak Virtual Machine Development Discussion
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

Hi Askoh. I did have some in-depth discussions with another engineer from one of these lists (I think that was in a private thread though), and I can answer any specific questions you may have (e.g. about the threading model or interpreter core), but I guess you'll have to wait for the public alpha to know for sure if I'm telling the truth or not :).


It isn't a very hard-to-believe product when you see it in action. It's just the combination of features that makes it potentially powerful, it doesn't really introduce any new magic.


From: Vm-dev <[hidden email]> on behalf of askoh <[hidden email]>
Sent: Friday, 19 May 2017 11:19:15 PM
To: [hidden email]
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

Has any VM expert checked out this claim? Please comment.

Thanks,
Aik-Siong Koh



--
View this message in context: http://forum.world.st/Embeddable-scalable-Smalltalk-VM-needs-funding-for-release-repost-update-from-squeak-dev-tp4947214p4947638.html
Sent from the Squeak VM mailing list archive at Nabble.com.
Reply | Threaded
Open this post in threaded view
|

Re: Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)

askoh
Administrator
Zak:

I use the Smalltalk forums using the webpage below. I am lost using the emails. 
http://forum.world.st/Smalltalk-f1294792.topics.html

I am not a VM guy. But I want to encourage all newcomers and new ideas. 

For most people it would really help to see one example use case where your Smalltalk is better than Squeak and Pharo. Why yours can do it while the others cannot. 

All the best,
Aik-Siong Koh

On May 19, 2017, at 7:36 PM, Zak Fenton [via Smalltalk] <[hidden email]> wrote:

 

Sorry, I got threads in wrong order here (I'm not so used to mailing lists). This response is for Ben. My wonderful email client isn't letting me quote properly either.


Yes, whole system fits in <1MB. It's roughly 270KB for the complete core system (100KB VM, 170KB image) and about 700KB with all of the extensions and libraries.


My images are still much bigger than they need to be. I haven't tried an absolute minimal one without the compiler and such - but the higher-level stuff (GUI, threading, other extension-specific things) is all optional.


As for the problem of marketing a Smalltalk VM (chicken and egg, Smalltalk being a niche), well, I have a very simple solution: Sell it as something else (a game design tool, for example). I do want to sell a generic "SDK" product as well, and this will look more like Smalltalk, but the "app store" versions will probably be more like PICO-8, i.e. "fun" and "beginner-friendly" development tools (not language-focused).


(There will be versions with source code as well. My current plan is probably to release "stable" versions with full source, but keep new features closed-source until they make it into a stable release. This should solve a few issues and result in a healthy balance.)


I was initially going to target it at existing Lua users (it's very easy to implement Lua in Smalltalk, of course), but they were too confused about persistence actually working, so I figured having a GUI toolkit and threading libraries built-in would be too much for them :). Turning the product into a kind-of "premium Lua" might still be an option though.


You're probably right about needing a demo release to attract more interest. Good news is, I should have an update very shortly about funding, I just don't want to jinx it :).


I'm in Canberra. Was hoping to visit WA this year actually but didn't end up happening.



From: Zak Fenton
Sent: Saturday, 20 May 2017 11:23:06 AM
To: Squeak Virtual Machine Development Discussion
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

Hi Askoh. I did have some in-depth discussions with another engineer from one of these lists (I think that was in a private thread though), and I can answer any specific questions you may have (e.g. about the threading model or interpreter core), but I guess you'll have to wait for the public alpha to know for sure if I'm telling the truth or not :).


It isn't a very hard-to-believe product when you see it in action. It's just the combination of features that makes it potentially powerful, it doesn't really introduce any new magic.


From: Vm-dev <[hidden email]> on behalf of askoh <[hidden email]>
Sent: Friday, 19 May 2017 11:19:15 PM
To: [hidden email]
Subject: Re: [Vm-dev] Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev)
 

Has any VM expert checked out this claim? Please comment.

Thanks,
Aik-Siong Koh



--
View this message in context: http://forum.world.st/Embeddable-scalable-Smalltalk-VM-needs-funding-for-release-repost-update-from-squeak-dev-tp4947214p4947638.html
Sent from the Squeak VM mailing list archive at Nabble.com.



To unsubscribe from Embeddable/scalable Smalltalk VM needs funding for release (repost/update from squeak-dev), click here.
NAML