From: Ron G. <ro...@fl...> - 2009-02-21 23:25:19
|
On Feb 21, 2009, at 12:34 PM, Yuri Takhteyev wrote: >> There's no authentication built in yet, so I'm a tad leery about >> leaving a >> public demo running. > > Actually, the main missing feature is revision control, if you ask me. > A wiki can still be useful without authentication, but a wiki without > revision control cannot be of any practical use, IMHO. > > What is your goal? Are you looking to build something that could be > used as a wiki in practice? If so, I am guessing it won't stay <100 > LOC for long. One can do a basic wiki in <100 LOC (actually, one can > do that in just 5), but I don't believe one can do a practical wiki in > under 500. > > I went through all of this with Sputnik over the past year and a half. > It started with the goal of being small, 1000 LOC written in one > evening, but then there is always one next feature that people can't > live without. You need authentication, you need permissions, you need > configuration, etc. I had to redefine "small" as meaning "small > relative to what it can do". :) At this point it's more of an exercise than anything else. But the long-term goal is to have a wiki written in Python to be part of a larger system. I tried MoinMoin and Trac and neither one met my needs. Architecturally the goal is to make it as modular as possible. If you look at the source code you will see that the filestore is already separated. The interface is just a dictionary, and in fact you can stick a Python dictionary in place of the fdict objects and it will work. (You will lose all the state as soon as you quit the process, so this is only good for testing and demo purposes.) I have a modular authentication system all ready to plug in as well, but that currently relies on MySQL and I wanted to minimize dependencies in the first release. I agree that revision control is crucial, I just haven't settled on a design yet. In particular, I haven't decided whether on not to punt on conflict resolution, which is a whole can o' worms in an of itself. My plan was to add a MySQL storage engine, and then use that for revision control. I could also extend fdicts to keep track of revisions. As long as you're willing to punt on conflict resolution (which for small groups I think is not an unreasonable tradeoff) it can stay pretty simple. rg |