(cc'ing to wikitech-l)
Jonathan Walther wrote:
Where are the templates stored that are used in generating the HTML pages? For instance, the templates for the header and footer for each article; the format of the recent changes page; that sort of thing. Is it hard coded into the source?
Yes. It's kind of ugly that way. ;)
Language-specific text is stored away in arrays in the Language**.php files, but that contains relatively little markup.
See Skin.php and its fellows for most of the layout; also OutputPage.php for some bits.
(And feel free to use the wikitech-l list for technical discussion of the code; wikipedia-l is fairly high traffic as it is.)
Jonathan Walther wrote:
Hi. Question about Wiki version control. Am I correct in believing that every revision of an article is stored in the database, in full?
Yes. Old revisions sit in the 'old' table, every blessed one. It's a big table. (In theory this could be made more efficient in various ways; compression, diffs, etc.)
Also, looking through the php source, I'm seeing what look like a lot of MySQLisms that are hard to clean up, but if fixed could mean tremendous speedups with Postgres. Thats entirely apart from the benefit of running the VACUUM program every night so the database self-optimizes itself for the data access patterns that it sees.
Mmmm, please do!
I would like to complement the coders on a really clean codebase. The code is a pleasure to read and tweak.
Send all compliments on the current codebase to Lee Daniel Crocker. He da man!
Not nice to do major changes on, but I doubt if that was ever intended for the code anyway. Postgres support isn't a major change, btw.
There is one minor point; it's a very nice thing to have the sql stuff abstracted out into it's own .sql file. I refer to things like buildTables.php, and the like. Code and SQL don't mix too well; makes it harder to hunt down bugs or make modifications in either one. For instance, getting rid of MySQLisms...
Yes, it might not be a bad idea to break out the queries that way, so as much as possible you can just drop in an alternate file or two and run with a different database backend.
-- brion vibber (brion @ pobox.com)