Smalltalk is not file-based. For better or for worse. 

The fundamental problem with Smalltalk is that it is image-based. 

Removing a method from a file is not sufficient to remove the method from the 
image.

Change sets were invented to provide a file-based solution to the "how do I 
remove a method from the image" problem.

A filein (the one used to initialize your image) plus a series of change sets 
applied in the right order is the file-based methodology for managing an image. 

Change sets are integral to Smalltalk.

Name another language that uses change sets ... 

I cannot distribute a fresh set of source files to _upgrade_ an already 
installed application. I have to supply change sets and those change sets have 
to specific to the version that is installed in the image ...

Remember the problem is "how do I remove a method from the image".

The image is a data base, not an executable program, when you load code you 
also migrate/modify the objects in your "data base".

Name another language that does this....

Monticello was invented along the way ... I cannot speak to the original 
motivation, but I can say that with Monticello I _can_ distribute a fresh set 
of source files to _upgrade_ an already installed application.

Monticello does this by having a meta model that describes the complete 
application. The meta model is not a "source file" it is a serialized object 
graph.

Monticello dynamically creates a change set by comparing the meta model of the 
loaded application with the meta model of the incoming "source code".

Name another language that does this....

So the meat and potatoes of a Monticello mcz file is a binary chunk of data....

What does git do with binary data? What do humans do with binary data?

You need a tool that takes the binary data and makes it readable for the poor 
developers who cannot unzip and deserialize a binary stream of bits on sight.

Enter SqueakSource and SmalltalkHub....

This is where we are today.

Can Smalltalk development be based on files....certainly everyone was doing 
file-based development in 1985, but the Smalltalk environments of the day 
migrated away from files ...

In 1985 I was writing tools to store files and change sets in RCS ... the 
original ChangeSorter was based on my work back then...

In 1993 I was working on tools that stored Smalltalk source meta data using 
PKZIP ... 

ENVY stores source meta data into a custom data base....

Store stores source meta data in an RDB...

In 2011 I am working on tools that store Smalltalk source meta data using zip 
...

Smalltalk is image-base and the "standard" development tools just don't fit ... 
for better or for worse ...

Sooooo, we can complain that we are not using git, but there are very good 
reasons for not using git ... today.

Just because 20 years of evolution has moved Smalltalk away from using files in 
the traditional manner, doesn't mean that it won't evolve back to using files, 
but until the evolution happens, we need tools like SqueakSource3 and 
SmalltalkHub to support the _current_ model.

Dale

Reply via email to