[Sputnik-list] blueprint

pierre pracht pierre.pracht at gmail.com
Tue Feb 12 15:46:31 GMT+2 2008


Le 12 févr. 08 à 15:22, Andre Carregal a écrit :

> On Feb 12, 2008 8:35 AM, Yuri Takhteyev <yuri at sims.berkeley.edu>  
> wrote:
>>> An other usage would be to stack storage :
>>>   - install storage for : special page, base template (No need of
>>> versium)
>>>   - skin storage for customs templates (would use versium in
>>> development phase)
>>>   - base storage for : user configuration and document
>>>     - alternate storage for test, staging edition. May be mapped to
>>> SCM branching.
>>
>> Very interesting, though you are confusing "versium" (the API) with
>> "versium.storage.simple" (a file-based implementation).  But I see
>> what you mean.
>>
>> André, what do you think about this?
>
> I'm not sure I got the point correctly, but while I agree that
> different resources may need different storage policies, using
> different APIs for that would be confusing.

No, for me "stack storage" was mean for : "versium over versium"
More on this point later.

Disclaimer : I just started to look at lua/sputnik a few day ago. So I  
can make wrong assumption. I would dive into the code later.

> If you are talking about using a common API (versium) but separate
> storage models for the resources then it may be a reasonable idea. On
> the other hand, if one of the layers uses versioning, then why not use
> it for every resource?

Yes, "No need of versium" would have been versium.storage.null
I agree that cost of versioning is cheap.
But a direct mapper of node could be trivial to write  and cover some  
specific case. Look at pre-populated content of sputnik. Some content  
will be over written by user : Home_page.lua. But who would edit  
@Root.lua ?
Root.lua is part of sputnik code. Better is to let it in so it will be  
update with it.
If we get a versium.storage.null pointing sputnik/node_default,  
wiki_data would be keep clean.

But what would happen if user edit Home_page.lua ?
Then came the "stack storage" : user would get a Home_page.lua copy in  
his wiki-data SCM backed versium.storage.svn
What happen here is a copy on write semantic.

You can object it didn't belong to versium to handle this !
But that's possible : making a copy to a new storage is equivalent to  
copying file to a new version. The only difference is that you use a  
storage axis instead of a temporal axis.
Name it : versium.storage.versium

> The way I see it, Sputnik is a curious case of "paradigm  
> overload"... :o)

What in a programming language isn't a paradigm ?
  - Good one let solve problem with ease.
  - Bad one make you struggle at endorsing complexity in your mind.

> While it tries to offer Pareto balances on different areas (storage,
> information architecture and retrievability for example), it also
> tries to keep things simple, small and flexible. I guess this is not
> doable in the long run, since you have to compromise somewhere.

I agree that complexity need to be balanced :
   - Introduce paradigm, and you get a step learning curve.
   - Always keep idiomatic way and you would suffer as complexity raise

Decoupling storage in sputnik is very good thing, offering some nice  
perspective. So I disagree on "simple, small and flexible"

"simple, small and flexible" pickup two of three :
  Simple and small : do nothing, get nothing.
  Simple and flexible : keep it kiss, do as need, but rewrite it later.
  Small and flexible : use-full paradigms, need to master them.

There is no silver bullet, people always do them in order.

> Sputnik started as a really simple/flexible wiki engine and has
> evolved into a very powerfull wiki framework, I just can't see it as
> simple anymore. Not that this is bad news per se, it's just a matter
> of having the driving keywords clear during the design.

I have throw some idea. It isn't that they need to be done. That was a  
test bed to see yours objectives. For my own need I wouldn't do even a  
third of that.

> Maybe it's time to decide if Sputnik should focus on the early game or
> in the late game.

I'm interested in seeing if you foresee post "Earth (0.5)".
I would help immediately on my center of interest (blueprint).

> A third option would be to consider an explicit
> split between a framework and a wiki instance.

Or progressively split part as concepts emerge ?
Post 0.5 goal ?

> Thus one layer would have real power while the other would customize
> this power in order to be reachable by the masses. While way more
> advanced, Zope/Plone are one example of this approach. One is a
> generic content biased web framework, while the second focus on
> solving the CMS case.

IMHO Zope/Plone is in this case a contriver example.
Zope didn't reach a large audience due a step learning curve.
Plone brings Zope to people by offering a powerful solution.
But dive into Plone is difficult you rapidly head to Zope.

When I use Plone as argument it's simply :
  - It get a good architecture (Five / Zope 3.0 rewrite).
  - All his functionality have been written to cover existing need.

But Plone is doomed by his past :
  - Still based on Zope 2.0
  - Too many functionality
  - Tied to a storage technology

> In our case, one layer could offer the basic tools (versioning,
> templating, search, categorization, user management, plugins etc)
> while another layer could be comprised of applications that use those
> tools (be it a wiki, blog, cms, GTD helper, CRM etc).

I take a look at sputnik because I see in it : A document / resource  
oriented architecture. Something that exist in Zope, but with too many  
complexity. Immediately Sputnik lack of categorization / meta-data /  
indexing (see a for-coming mail for this point).

For now call it a wiki. Later you can build on it :  blog, cms, GTD  
helper, CRM etc ...
But a wiki has very low requirement on template (one document = one  
page).
So if you need to split, this is the critical point. But it would  
bring a hug complexity.

Just an insight on my personal reflexion :
I don't see Controller / View coupling as a bad thing for user  
interface.
Better push more thing on model, see how you have bring versioning in  
storage.

My feel is that there is a market for a strong document / resource  
back-end that bring representation at URI level (REST ?)
User interaction and data representation can be a fin layer on top of  
it. Empowering a wiki can be a good base for it.
See :
   Delivrance / Plone
   http://www.openplans.org/projects/deliverance/project-home
   Ajatus / CouchDB
   http://www.ajatus.info/

Why Lua ? Not sure need to master it but :
   - Table orientation who fit the objective
   - Small footprint allowing to enable it in web server
       (collapsing network stack)
   - Support of coroutine
       (Need to dive in Kepler, but a single instance of Lua can  
handle multiple request in an event handled fashion ?)

Be care I didn't says that Sputnik must be that dream.
It just what I was fiddling in very long foresight.

> I hope this has not been too noisy. :o)

me too

pierre



More information about the Sputnik-list mailing list