just more
difficult to find that those in other languages.
Fortunately, SqueakSource is getting popular and hosts many
projects, including applications running with Seaside and Pier. But
since there is no categorisation option on the website, they are a
bit hard to hunt down.
The SqueakSource on mc.lukas-renggli.ch is hosting the latest Pier
and Magritte related projects. There are many others available on
www.squeaksource.com, but I guess they are mostly not maintained
anymore since they started from an university course about software
design.
So someone
there recommended I look at Pier
The concepts behind Pier are very close to the ones usually found
in content management systems and it can be extended to a full
fledged one just by adding new structure types.
To give an idea, I have extended Pier with structures for
generating diagrams with Graphviz and lists of items matching a
query. I have also developed Pier with visitor objects for
outputting the content of a Pier instance as a collection of static
files.
That sounds very interesting? Is it proprietary or do you have an URL
so that other people could use your extensions as well?
I've
started looking at Pier's code, and unfortunately, I'd have
to say it's not the clearest.
Yes, it is not very easy to understand how it works but on the
other hand it is quite easy to extend.
What could I do to make it clearer, despite the lack of missing
documentation? Would more method comments help? Are the existing ones
useful?
It is a bit hard for me to see where people are running into troubles
understanding the system; I have been working (mostly on my own) on
SmallWiki 1, SmallWiki 2, Pier and all its reincarnations for more
than 3 years now.
The hardest part is to tame Magritte, which is used to
describe a
structure. This feature is optional but gives more flexibilitiy.
We have written a (yet unpublished) paper about SmallWiki 2 and
Magritte, that is still valid for Pier and presents major concepts. I
can send it to anyone interested if you send me a private mail, as
far as I know we are unfortunately not allowed to put it online right
now.
Of course,
this applies equally - if not more - to Seaside. What
I'm looking for is documentation on at least getting up-and-
running with my own instance of the app.
Start with a fresh 3.8 basic image and with SqueakMap Package
Loader, install:
1. DynamicBindings (1.2)
2. KomServices (1.1.2)
3. KomHttpServer (7.0.3)
4. Seaside (2.5)
5. Magritte (1.0.6)
6. Pier (1.0.2-alpha)
That's not required, just load the package 'Pier' from SqueakMap and
it will pull in all the requirements automatically. It will also ask
if you want to install Seaside, so you should probably answer 'yes'
to this question. If you have OmniBrowser installed, it will also
install a small package allowing you to conveniently browse and edit
your pier instance using the Squeak image.
The default
install creates the mini-intro WIKI: am I simply
supposed to remove all the content there and replace with my own?
That doesn't seem correct. At least, I'd be concerned about the
default classes/instances being over-written when I upgraded.
The default content is created on the fly by PRKernel>>root if the
kernel doesn't hold any item.
Upgrading Pier should be simple, the model isn't changing much
anymore and there are always ways to fix possible problems in
Smalltalk. All you Pier kernels are kept in a collection on the class-
side of PRKernel and they are never overridden.
As an example SmallWiki 1 (the predecessor of Pier) running on
smallwiki.unibe.ch has been running for almost 3 years now, it has
been regularly updated from an unfinished testing version to the most
recent version of SmallWiki 1. This will be also possible with Pier.
Continuing in
that vain, documentation covering where / how my
data is stored / saved is critical. If I want a backup of my WIKI
at a point in time, do I just simply file-out, well, what?
Just save the image and that's it. It seems that some other modules
are in preparation to save the content outside the image.
Yeah, there is something included that loggs all the commands using
reference streams. Have a look at PRPersistency and its subclasses.
This works very well for my tests, but there is more testing
required. Saving the image is always a good and easy solution.
> Continuing in that vain, documentation covering
where / how my
> data is stored / saved is critical. If I want a backup of my WIKI
> at a point in time, do I just simply file-out, well, what?
You can enable the logging by evaluating
kernel persistency: PRFilePersistency new.
and then create a snapshot by (manually) sending:
kernel persistency snapshot.
You will end up having two files, 'snapshots.obj' with all the
snapshots and 'logs.obj' with all the logged changes of your
instance. There is no automatic way to restore the snapshots yet, but
there is a simple seaside interface called history to inspect and
reapply the commands.
> Well, I'm looking for some stable. And able
to be used in a
> production environment. Does that mean I should stop looking at
> Pier? Is there a timeline for when a stable, production quality
> version will be available?
No, there is no timeline: I need to finish my master at university, I
am writing papers and I also need to spend some time working for a
living, else Pier and everything else will just starve ;-)
Of course there is always the possibility to get commercial support
or to hire me to build or extend something specific:
Lukas Renggli
netstyle.ch GmbH, Terrassenweg 18, CH-3012 Bern
Phone: +41 31 356 42 56 Fax: +41 31 356 42 57
http://www.netstyle.ch mailto:info@netstyle.ch
Cheers,
Lukas
--
Lukas Renggli
http://www.lukas-renggli.ch