Sorry for the delay but I was busy :/
Hi!
4 hours in the train, enough to dream...
Hehe :)
I've tried to imagine the best evolution for livedocs, and I've seen one major modification needed : Separation
Actually, we have three main parts : - Build - XML parsing - HTML rendering
When livedocs was available through CVS, I've checked it out and started to adapt its design for my own website. While doing this, I fixed some bugs (BAD ID:..) and added some features like showing the available languages in the Index, and so on. When I wanted to commit my changes, I've seen that the noise caused by my design stuff was to huge. So I was unable to commit it.
We have talked about some things on the linuxtag docmeeting about developing plugins for it. This is only possible however if livedocs allows plugins :) Separation of different parts is essential to enable livedocs to handle plugins.
While we are talking about this. I have thinked about using something like squirrelmail does. (It could be cool BTW to have something like their dynamic configuration interface too.)
As for the I'm okay with Derick, we shouldn't slow down the system.
What do you suggest as monitoring method ? We should benchmark the different process (build, sql calls, xml rendering,..).
While we split up the logic it needs to be kept in mind that we try to solve a lot of issues with livedocs:
- translators quickview of modified files -> no special requirement
Are you talking about the paragraph "2. Visual editing" of /phpdoc/RFC/2003_meeting_findings.txt ? If so, I've been thinking about this when playing with livedocs for the first time.
My purpose was to 'open' a CVS checkout to anyone who wanted to correct a typo on the manual. This can be done with some wiki system, or a home made solution including features like a javascript make test, a spell checker, etc.
It can ask the user for a nick (or a MAGIC_COOKIE on php.net) and a comment, and build the commit message with this information.
- php website manual presentation:
-> integrate with the websites functionality (shortcut handling,
error handling, language fallback)
Should be commited to the virtual "src/" directory ;)
-> integarate with website design
CSS and header() footer() customization in a skin.
-> cache pages so often visited pages will be pushed from the
static cache
I don't really get it here. Isn't this feature available already ?
-> livedocs need to work without the build part with a prebuilt
manual, with all the langauges behind
We can find a way to only need to update the $lang.sqlite files I think.
-> handle user notes display
plugin too
- generated HTML files for offline viewing -> livedocs need to be able to generate the 'multiple HTML files' and 'one big HTML file' version of the manual for download
plugin again :)
- offline personalized manual
-> this is an old idea, and livedocs need to mature much to fulfill
the expectation I have written down, but livedocs will fulfill
those sometime and we ned to keep in mind that livedocs should
work with a prebuilt envrionment, and need to support settings
based personalization
-> again, this is along term goal, so included here just for the
records
-> See also: http://marc.theaimsgroup.com/?l=phpdoc&m=105251292424018
seen, but as you are saying, it's a bit too futuristic atm ;)
- other PHP.net projects (PEAR, PHP-GTK, Smarty, etc.)
-> reuse some of the XML parsing, but add their own extensions to
it
see below
-> different presentation due to different website environment
themes
I beleive that if we keep these in mind, the resulting livedocs framework will be so extensible and so flexible that anybody will be able to set up his own docbook project and start displaying it with livedocs... So we need to think about allowing the extensions on livedocs on multiple levels:
- input XML parsing and TOC generation (build stage) - presentation (big HTML, mutiple HTMLs: phpweb view, simple view, customized viwe) - performance (caching, no caching) - additional components (ex. user notes)
From the structure you presented it is not clear to me, what separation is done on the XML parsing and HTML presentation. The PHP subprojects for example will significantly overlap in their XML -> HTML conversion, so there should be some feature to present a common ground for them. Their styelsheets however might be more different, and due to performance reasons, the style information should be contained in as few files as possible.
As I said, it was a first draft. After reading all your injections, I'm asking myself if we need to have a system to switch between :
1 - differents input formats (do we really need it ?)
2 - different outputs (livedocs could be able to generate more then just some HTML)
I'm also okay with the fact that a fixed built-in XML => HTML mapping is just cool (instead of allowing the creation of the $map array in a theme), but maybe we can change it so that avery different dockbook tag is transformed to a specific HTML element with a specific CSS class name.
(for example <foo></foo> => <div class="foo"></div>). This will allow a better CSS personnalization and control of the rendered HTML.
livedocs/themes/foo/ will then only contain two files : 1 - livedocs.css 2 - headers and footers definitions
So, do we mkdir plugins and go on developping this way ?
Thanks a lot for your reply ;)
didou
