TWiki Standalone: What is it about?
I already
wrote a post about
TWikiStandAlone project, but after I read the minutes from
GeorgetownReleaseMeeting2008x03x03, I realized many people could be thinking
"Cool, but what is the benefit for me?". So I'll try to answer this question.
The standard way to run TWiki is as a CGI script. It's easy to setup and many web servers and hosting services support it. But it's also slow and resource-hungry. There are some hacks and discussions about using things like
ModPerl and
PersistentPerl (aka
SpeedyCGI), but I don't think they are that easy to use currently and some stability problems may appear.
The initial proposal of
TWikiStandAlone project, as name says, was to turn TWiki into a standalone server, so that could be performance benefits and it would be easy to use,
but things changed a little: in order to make it possible to keep using TWiki as a CGI script I achieved an
architecture design that makes it possible not only to run TWiki as a CGI script and as a standalone server, but also in many other ways, including ModPerl and
FastCGI.
Then, I can point some benefits:
-
Use of mechanisms other than CGI is easy
- No more ugly hacks to use ModPerl
- No patches needed to use FastCGI
-
Use as CGI and CLI is exactly the same, I mean, it's totally transparent
-
Standalone execution turns it very simple for personal use (No need to install/configure/run a web server)
-
Both FastCGI and Standalone execution are really fast compared to plain CGI
-
It's easy to take advantage of FastCGI and/or ModPerl support on many hosting services
-
It's easy to predict how much RAM will be used by FastCGI or Standalone execution mechanisms, so it's also easy to do capacity planning
-
Standalone execution permits to run TWiki as a different user than web server
In addition to all this, it opens some new possibilities:
-
Persistent execution can be even faster if tasks common to all requests were performed only once
-
Memory usage can be decreased by sharing common objects between TWiki processes
-
Persistent execution with DatabaseStore can help a lot with scalability. It would even be possible to easily build a load-balance cluster of TWiki installations
-
Standalone execution could permit execution inside some jail/chroot environment, decreasing the impact of possible security holes
If you think that none of those benefits are interesting for you, at least it's not harmful.
Up to now, development took place at it's
own branch, but it is in
process to be merged to core. I invite every one, specially developers, to read
TWikiStandAlone topic carefully, more specifically
implementation details and
changes sections.
Feel free and invited to ask questions, make suggestions and get involved with this project!
Comments