pagelib is the PHP library I use to mark up all of my web pages on the cs-people.bu.edu web server. It is in the process of evolving from a simple markup helper to a full-on web site toolkit, albeit very slowly; it's not like this project can turn into my doctoral thesis or anything.
- More evolutionary than revolutionary. Re-factored the sidebar stuff to be more event-driven than output-driven, re-styled (CSS) everything, added lots of editorial and versioning control black magic. Plus, it actually works on the feature-poor PHP install on cs-people, which is more than could be said for the 4.X architectures.
False start at a new architecture, built around local DBM files, an object-centric XML core, and pluggable output subsystems to support XHTML, HTML/3.2, and others as they arose (plaintext, WML...). Quickly became too cumbersome to work with.
Never saw the light of day, thank goodness.
Complete code re-organization
Output is largely compliant with XHTML/1.0 and XML/1.0, syntactically anyway. (There are some problems using XML/1.1 with XHTML/1.0 on some browsers.)
Added cookie-driven "cell folding" feature
Cleaner internal interfaces
More active use of CSS1 style sheet
Output mostly conforms to HTML/4.01 (exceptions included the Intellicast "weather" cell)
Essentially built to help manage my weblog, which was (at the time) my front page.
Not much functionality, produced (arguably) passable HTML/3.2.
At the moment, I'm mulling over how I want to build pagelib/4.0. After all these iterations on the initial code base, I feel like it's time to start over with the lessons learned in mind. A few features I want to incorporate are:
- Aggressive use of CSS2, with a table-driven fallback rendering engine for older clients
- Taking more advantage of the XML dimension of XHTML to embed truly structured data in pages
- Adapt markup strategy per client's "Accept" values (text/html vs. application/xhtml+xml)
- Include basic support for multiple charsets via iconv or recode
- Engine for using a backing database to resolve resource names and store resource logic
- Inform the whole process using my research