port of prevayler

Frank Sergeant frank at canyon-medical.com
Sun Feb 16 20:06:45 UTC 2003

Marco Paga <mail at marco-paga.de> wrote:
> Is anybody out there who wants to port prevyler to squeak? I have a 
> version aviable, but that one is badly designed. You can't extend it in 
> any way.
> So the next version NEEDS to be better.
> If you are interested please let me know.

How is your implementation licensed?  From the heading of your 13 Oct
2002 changeset, it looks like you are using GPL.  If so, I think this is
a terrible idea.  If it is something for Squeak, why not use Squeak-L or
something even more permissive?  Is your implementation derived from the
actual Prevayler code (which is LGPL)?  I do not see how I can use GPL
or LPGL.

I like the "prevalence" ideas a lot.  My quick summary:

  1. The business objects are kept in RAM, yet protected from system
crashes by the logging and recovery mechanisms.
  2. When the application starts, the business objects are loaded from
last night's snapshot and then updated from the log file if one exists
(which it will not if the application terminated normally on its
previous run).
  3. While the application runs, changes to the business object are
written to a log file.
  4. When the application terminates normally, a new snapshot file is
written and the log file is erased.

So, there must be sufficient RAM to hold all the objects, which I think
is very feasible (does feasibility have degrees?) today with many

I have written from scratch an experimental version of the above in
Dolphin and plan to port it to Squeak.  I am using a rather too
simplistic object serialization method to write the log and snapshot
files and this can make start-up and shut-down times too long with a lot
of objects, but this is still workable (and in use in production) when
the objects to be persisted are few in number. 

My current serialization method is to write Smalltalk code to the file
which will be evaluated (compiled and executed), line by line, when
reloading the objects from the file.  I expect to try some alternatives
when I can find the time.  I plan to publish it under Squeak-L or BSD
when it is clean enough to be less embarrassing.

However, the license for the actual Prevayler code is LGPL (and of
Marco's is GPL), which I am leery of.  I just do not know how to comply
with LGPL for a Smalltalk application without supplying all the source
code for my application.  So, I did not derive my implementation of the
"prevalence" ideas from the Prevayler code.  One of the main reasons I
am posting this note now (rather than waiting until I can release
working code) is to caution against deriving from the LGPL'd Prevayler
code or from Marco's GPL'd code.

Here are some "prevalence" links for your convenience:

  Main site <http://www.prevayler.org>

  and its wiki <http://www.prevayler.org/wiki.jsp>

  Kent Beck and others have coded something for Smalltalk (probably VW) 

  And, here is a link to Marco's version.

Tactfully yours,

More information about the Squeak-dev mailing list