
Which Smalltalk? - shawndumas
http://smalltalkzen.wordpress.com/2010/08/24/which-smalltalk/
======
futuremint
Pharo. The latest stable version runs in the Cog VM (a fast JIT VM), and runs
Seaside 3.0 great.

However, choose your persistence carefully. The open-source Smalltalk
landscape is littered with abandon-ware databases.

If you want an OODB, you can just save the image itself, use Magma (an open-
source OODB, but its not very wel documented) or use Gemstone (through GLASS),
which is commercial but well documented.

SQL support is weak if you want a nice ORM (like Rails' Active Record), and
I've had success using CouchDB (a JSON document pretty much just maps straight
to an object: keys -> values = instVars -> values).

~~~
jcromartie
I give bonus points to CouchDB because there is no driver needed, just HTTP.

~~~
futuremint
Yeah, the one library I'm using is pretty lightweight. It just does JSON
parsing of responses over a socket connection and handles a few HTTP details.

I've been really happy with it, and its been reasonably fast in the Cog VM. I
haven't explored using CouchDB's list views yet, but I'm considering that for
just loading pre-built HTML for larger document lists.

------
igrekel
I have an application that started being developed and deployed in squeak. I
then moved to Pharo when it started. I had almost nothing to do, just a few
changes to the way I was dealing with character encodings. Slightly over a
year ago, I moved deployment to Gemstone, that involved quite a few changes,
the hardest ones were because of ill placed "." as the compiler on Gemstone
seems to be a little bit more sensible.

I still develop in Pharo and deploy in Gemstone and I believe that scenario is
not uncommon at all. It means my deployment is different from the one
described in the post, I don't "clean-up" my image for deployment; I save my
code changes to a monticello package, transfer it to the server through scp
and load the package into Gemstone. Most of the time, I was able to just let
the tools perform an auto-migrate on all existing instances.

------
S_A_P
Could anyone here give me some insite as to _why_ to use smalltalk? I've been
toying with objective C which is about the extent of my experience with
anything remotely like it. This article mentions ease of debugging- what is
easy about it? What sort of problems does this language solve eloquently?

~~~
fstephany
You don't have distinction between runtime and development time. Which means
you can debug live. It's a bit like being logged in an IRB session on your
rails application. Except that you have better tools than a plain command
line.

Ruby feels closer to Smalltalk than Obj-C to me.

If you're familiar with Cocoa/Obj-C, you can have a look at
<http://www.fscript.org/>

~~~
S_A_P
thanks for this- this looks very helpful indeed.

------
icey
What does the Smalltalk scalability story look like? Could you build something
like Twitter or a Farmville backend on Smalltalk with similar scaling
strategies used in Python and Ruby?

~~~
avibryant
With Smalltalk? Sure. With Seaside? No, that's not what it was designed for.

I haven't yet convinced Twitter to do a rewrite in Smalltalk ;). But it would
be a step up from Ruby, even if only to get a better garbage collector.

------
praptak
Do serious Smalltalk projects use version control? If so, which one?

How do they solve the apparent mismatch between Smalltalk philosophy of having
everything in one image and the usual "files in directories" expected by
version control?

Last time I used Smalltalk (a small project) I just kept the sources in files
outside the image and reloaded from there but it felt clunky.

~~~
gecko
You're correct that most Smalltalks have a changes file that keeps a log of
everything you've done, but that's now how you do version control or share
changes. The changes file in practice is more of a kind of local version
control, or unlimited undo buffer. For actually sharing changes, there are two
systems that I'm familiar with:

Pharo and Squeak Smalltalk have a DVCS client named Monticello that they use.
It works similarly to Git/Mercurial/Bazaar/what-have-you, except that it
versions classes and methods semantically instead of the actual changes file.
This ends up working fine, and even has some major benefits (you can kiss
whole swaths of problems goodbye when you're doing a semantic merge),but it
does mean that your Smalltalk code requires its own version control. You can
see a quick tutorial of how Monticello handles merging at <http://www.lukas-
renggli.ch/blog/monticello-merging> , and there's what amounts to a command-
line interface called Gofer you can read about at <http://www.lukas-
renggli.ch/blog/gofer> . Most people I've seen just use the graphical
interface though, which is documented (somewhat) at
<http://wiresong.ca/monticello/v1/docs/> .

VisualWorks Smalltalk has its own version control system, also semantic, but
not distributed, called StORE. I haven't worked with it much, but the general
idea is the same: version classes and methods rather than the changes file. I
know it can at least import Monticello repositories as well, and possibly work
with them natively, but I've never done that, so you'd have to do some more
research.

------
pietrofmaggi
BTW Smalltalk Zen has started a series on deploying a Smalltalk (Pharo) server
to a cloud hosted service -
[http://smalltalkzen.wordpress.com/2010/12/22/a-remote-
server...](http://smalltalkzen.wordpress.com/2010/12/22/a-remote-server-
deployed-hello-world-with-squeakpharo-seaside-and-ubuntu-linux/) .

------
cwp
Good article.

One small quibble: Pharo and Squeak's licensing are identical, so "clearer
licensing" isn't a reason to choose one over the other. That said, Pharo is
clearly a better choice for Seaside projects, since Pharo is the reference
platform for Seaside.

~~~
sigzero
I think the Squeak license changed with version 4.0...originally it was not
the MIT one.

Edit: In looking into the history, it seems the license has changed several
times.

~~~
cwp
That's right. It took a major effort to track down all the contributors
(including Apple and Disney!) and get them to sign a relicensing agreement.
Both Pharo and Squeak include relicensed code, and both Pharo and Squeak
require that all new contributions be made under the MIT license. Claiming
that Squeak has "unclear licensing" is just FUD.

~~~
randallsquared
Or, since Squeak 4.0 is the newest version according to their download page,
maybe, just maybe, it was a simple mistake, rather than FUD. :)

------
stcredzero
Pharo - There are people interested in supporting it for commericial users.
They're trying to get everything MIT licensed or compatible, and Eilot Miranda
is working on a fast JIT VM for Pharo and Squeak.

------
andreiursan
this month I asked the same question on stackoverflow =>
[http://stackoverflow.com/questions/4441368/is-there-any-
good...](http://stackoverflow.com/questions/4441368/is-there-any-good-open-
source-smalltalk-implementations)

------
hvs
I think I just found a project for my Christmas vacation.

