r4 - 30 Apr 2008 - 15:44:29 - GilmarSantosJrYou are here: TWiki >  Codev Web > PersonalRoadmap > PersonalRoadmapForGilmarSantosJr
Tags:
, create new tag

Personal Roadmap for GilmarSantosJr

TWiki Standalone project

I started it as my undergraduation conclusion project and now I'll work on merging it to upstream. My goal is to enhance performance and decrease resource consumption. I also have some more things in mind:

  • A prefs mechanism that uses much less RAM, that can be shared among processes and doesn't get preferences from topics for every request (it would store prefs in something like a dbm database and would get updated every time a topic is saved)
  • Some similar enhancement to Forms and Users
  • Singleton and classes relationships rethink: simplify architecture and get the chance to take advantage of persistent execution

Performance Improvements

There are many discussions about performance vs compatibility and I think that compatibility is very important, but there must be a limit. I think about some changes that would raise performance a lot, but would break some things. The most important are:

  • Build some kind of LALR parser for TML (I know that's not simple, but I'll try sometime as a conception proof) and use it at save time. At view time get the tree and process dynamic information to build final HTML.
  • Use retrieval information techniques to improve SEARCH. Query SEARCH will be very fast with DatabaseStore and all other types (except regular expresion, that wil be replaced by Query search in most cases) could be very fast if we use Xapian or some other indexer...
  • Performance improvements must be measured somehow, so I want to play with BenchmarkFramework
  • TWikiCache also plays an important role smile

I hope to analyze each one of these and develop as conception proofs, making drop-in replacements whenever possible. After we could figure out together if performance improvements are good enough to think about breaking compatibility (although I call this evolution. I think it's much better for plugin writers to deal with DOM-like trees than with plain text & regular expressions).

Architectural refactoring

Now that TWikiStandAlone is about to be merged and it lets TWiki to run persistently, some changes can be made to raise performance, like:

  • Rethink about singletons: separate request-specific from all-runtime-lived singletons
  • Rethink about class relationships: what classes really need to be related with each other? (this will help a lot to reduce memory leaks, since it would simplify references)
  • Separate request-specific from common-to-all-requests tasks and perform common tasks only once

Other Stuffs

  • It would be nice to run twiki inside a jail.I want to achieve this somehow (HTTP engine will help a lot)
  • It also would be nice to have TWikiOnMemoryStick using HTTP engine, so it would require only perl to run (I mean, it could run on different OS without changes!)

My action plan

  1. Merge TWikiStandAlone into core
    • Update documentation
  2. Add support to run configure script from HTTP engine
  3. Release ModPerlEngineContrib, FastCGIEngineContrib and HTTPEngineContrib
  4. Develop some kind of BenchmarkFramework
  5. Develop a TWiki::Prefs that uses less RAM and that is faster (no need to parse preferences for each request)
  6. Work on architectural refactoring
    • Produce high level documentation (Diagrams, Models, Specifications)
    • Make it possible to use shared memory
    • Perform some tasks only once when persistent engines are in use
  7. Study about unit test coverage using Devel::Cover
  8. ALERT! Play with some kind of LALR parser for TML

-- GilmarSantosJr - 28 Feb 2008

Discussion

 
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r4 < r3 < r2 < r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback SourceForge.net Logo