port of prevayler

Marco Paga mail at marco-paga.de
Mon Feb 17 13:17:46 UTC 2003

Thanks for you mail

Frank Sergeant wrote:

>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.
The GPL is the  license I like most. You can give your code away and you 
know that it will stay free. If somebody wants to use my code S/he can 
do it and give her changes back to the world. The rest of her 
application doesn't interest me. When somebody has to extend the 
functionality it is maybe heavy needed and nobody has to do the work twice.
I think when I code something without beeing paid I can say that others 
can make profit of it without giving something back to the community.

>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.
I would not erase the files because then you would loose the cange of 
getting the system back in the correct state after one needed (the last) 
was corrupted. I would implement a process has a schedule when files can 
be deleted.

>So, there must be sufficient RAM to hold all the objects, which I think
>is very feasible (does feasibility have degrees?) today with many
Klaus Wüstefeld mentioned that problem in his FAQ.

>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.
If you want another license for the implementation we could talk about 
it. I just would like if there was a good prevayler for squeak (nearly 
no matter the license)

>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) 
>  <http://www.prevayler.org/wiki.jsp?topic=Florypa>
>  And, here is a link to Marco's version.
>Tactfully yours,


More information about the Squeak-dev mailing list