Contemplate™ Web Templating System  


 

Latest release

Contemplate 1.3.0
1 Dec 2009
download now!





Known issues

This list includes aspects of Contemplate that we want to change, but that we're currently stuck on. If you have ideas about how to address these issues, !

  • When using the replace attribute in an embed tag to do regular expression replacements, you can't use the character / (forward slash) in either your search or your replace string.
  • Currently, the PHP and ASP versions of Contemplate will pass authentication information through the assembly process so that you can flatten a password-protected site. However, this feature is not included in the Perl version.
  • In some cases, conflicts will occur if you give an embed tag the same name as one of Contemplate's internal variables. We're currently looking into an elegant way to prevent this problem in all cases.

Next steps

This list includes our plans for the next major release, Contemplate 2.0. if you have any comments about these plans.

  • Use an HTML parsing module instead of regular expressions in the Assembler. Contemplate relies heavily on regular expressions (having originated as a Perl script), but these tend to be buggy and could be faster. We're exploring better ways to parse HTML content files.
  • Support storage of content in a database. Contemplate was originally designed around the idea of using your favorite desktop HTML editor on standard HTML content files. But with the ongoing improvement of web-based editing components like TinyMCE, and the availability of fully-functional editors like Meditate, not to mention the ubiquity of database support on web servers, this has become a more useful option. With this approach, web developers would use the same tag syntax to retrieve content from database tables instead of HTML files.
  • Store Reporter data in a database. The Reporter shows great info in a streamlined interface, but it bogs down when sites start generating a lot of traffic. Storing traffic data in a database rather than flat files should make this component much more robust.
  • Simplify the Formulator. This component still has potential, but is difficult to use and maintain. A slightly more streamlined approach might hold up to real-world use better.
  • Drop support for the Flattener. Running websites from a CD-ROM or hard drive is no longer common as it was in 1999 when Contemplate was first developed. Instead of maintaining the Flattener, optimizing the Assembler code for performance would be more useful.

Wish list

This list includes ideas that we're considering adding to Contemplate in the future, but we're either not sure how we want to implement them, or we just haven't gotten to them yet.

  • It would be great if, rather than showing the current, very boring error message when it can't find a page definition, Contemplate returned a status=404 header so that the web server displayed its normal File Not Found page. The Assembler scripts already contain a line of code to do this, but none of them seem to have any effect.
  • It would be nice if the functions that we've duplicated across various Contemplate scripts were saved in a single, shared file. However, we're not sure how to do this in the Perl version, and we might prefer to keep things as they are now to save one more file load during the assembly process.
  • We should be able to rewrite some of the regular expression matching to use global matches rather than while loops, which should speed up parsing considerably.
  • Currently, XML content files must follow the very simple document type definition shown in the demo site. However, we've not yet created a DTD file that documents this structure. More significantly, we haven't considered what it would take to make Contemplate support XML content files based on other DTDs.
  • We think it would be cool to use multiple page definitions files in a site. However, we would then need to include the name of a page definitions file with every page request, like assembler.php?definitions=pages2.txt&page=foobar, and that might not be worth the extra clutter.
  • It might be nice to format page definitions files as XML, but we're not sure. They can be a little hard to read either way.
 
Contemplate is developed by Arlo Leach.