README FOR RAM-CMS Lite Edition (Perl Port)

About:

RAM-CMS is a simple content management system designed to be portable and easy to use. It includes the ease of management Wiki software offers, without the offbeat wiki markup.

RAM-CMS is targeted at those of us that long for a simple solution that is extremely flexible.

RAM-CMS is not a typical CMS system because we appeal to those that know HTML, but don't want to just use plain HTML because of the overhead of maintaining HTML pages. RAM-CMS acts as a combination template system and content organizer, with the added benefit of reduced bandwidth as a result.

Features:

Example Pages:

A sample website is included to give you some ideas, as I find the best way learn something is by example, and indeed will be more accurate and understood than this documentation :)

The index.pl file is the key file that handles all requests - it contains everything to make this work.

The functions.pl file contains all the routines that do all the heavy lifting and hard work. (if you know some Perl, you might enjoy looking in here).

The config.pl file contains all the stuff that makes RAM-CMS your own, including:

  • the default (index) page to show.
  • the site layout / template.
  • internal RAM-CMS settings.
  • The index.pl file is never called directly; it is assumed your server has the index.pl file name set as what Apache would call a "DocumentIndex" - the index.html file acts similarly. The reason for this it so index.pl can be renamed to index.cgi, index.bin, or index.exe - depending on how your web server is configured. If your web server does not act this way you will need to modify parts of the code. Many web servers with Perl installed do not require this, however. The other reason for this is that doing this allows you to easily migrate from, say, the Perl edition, to, say, the ASP edition. Note that if your server support a different "DocumentIndex" file name for Perl (like default.pl), then simply rename index.pl to whatever is configured to be the "DocumentIndex" for Perl scripts. If their is no DocumentIndex for Perl or CGI scripts, then you'll have to define one in .htaccess. If you can't do that, you'll need a wrapper script that redirects requests like ./?page=pagename to ./index.pl?page=pagename - these are very easy to write in almost any server side scripting language. Some sample redirectors may be included in later releases.

    To link from one page to another the convention is to use the following basic format: <a href="./?page=page-name">Page Name</a> This makes all the pages portable should they be moved in the future, and also hides the underlying technology (in this case PHP) from user view - Tim Berners-Lee would be proud.

    Speed of RAM-CMS:

    RAM-CMS is very fast - much faster than virtually all other CMS systems.

    Factors that keep RAM-CMS Fast:

  • No Regular Expressions (REGEX) are used to do anything. PHP slows down if it has to fire up it's REGEX engine. (if you enable the BBCode feature they are used for that)
  • Compact / Efficient CodeBase - no extra crap to make the code look "pretty". No memory-hogging objects are used, and functions are used only when it is practical. Other than that, everything is done in main(). Soon a version will be released with all the code comments removed (less work for the PHP parser == faster execution time). Structured programming at it's best
  • Output Buffering by design - output to the browser is sent once, not multiple times like in other programs. PHP performance inproves, as does the web server preformance. (less I/O)
  • Note: RAM-CMS is so fast that is actually practical to run Perl in CGI mode without anything special to speed it up on a low to medium traffic site. RAM-CMS is likewise also well suited to handle enterprise level performance also, and has been tested on IIS and Apache, in CGI mode and mod_perl mode (Apache testing only).
  • Well Written?

    This code is very well written. It is clean and very easy to follow. Proof of this is the fact that not only is RAM-CMS available in several different programming languages, but the pages, and most of the config info, is interchangeable. In addition to that, each programming language RAM-CMS has been ported to has required only minimal changes - none of them involving code organization.

    FAQ / Q & A

    Q. What does RAM-CMS stand for?
    A. Well, originally the RAM part stood for the authors initials.
       Now, RAM-CMS in this context stands for 
       "Really Amazing Modest Content Management System"
    
    Q. What did you use to develop RAM-CMS?
    A. I used gedit on Debian GNU/Linux. No RAD tools or fancy IDE's, just gedit 
       and a local Apache2 setup with PHP 3.0.18 and PHP 4.0.10. That and a local 
       php.net mirror from before the official php.net site took off the PHP-version 
       specific info from the doc pages in early 2007. 
       Update: In later versions, I also use "Notepad2" (google it for more info) on 
       MS Windows. Today, I develop RAM-CMS with Notepad2 and gedit - it depends 
       where I happen to be when I decide to do some work on this.
       Update: in early 2008 development platform changed from Apache2 to Apache1. 
       The last version of RAM-CMS tested with PHP 3 and PHP 4 is 0.8. Now I 
       develop on an Apache 1 server with mod_php5 5.2 and mod_perl 1.27
       Compatibility with PHP 3 and PHP 4 persists, however, although we must 
       warn that if you are using any of these legacy platforms that eventually 
       RAM-CMS may stop working after you upgrade one day. (but why upgrade RAM-CMS 
       if you won't even upgrade PHP!)
    

    BUGS

    A bug tracker is now available for viewing bugs that have been fixed, but no bug reporting functionality is in the Bug Tracker (yet). Please post bug reports to the RAM Networks Forum at this time (under Bug Reports => RAM-CMS Bugs)

    The Bug Tracker is available at: http://freeprogs.us.tt/?page=bugs The RAM Networks Forum is available at: http://ramnet.z27.net/forum

    The author of this program can be contacted directly at: ram@robertmarder.info

    All bug reports are welcome, just make sure that you tell me how to reproduce the bug, otherwise I cannot fix it. Provide what you were doing before the bug occured, and what exactly happened as a result. If you are good with PHP and have had good use of this program, consider writing your own bug fix and posting it to to the forum.

    Documentation License

    Copyright (c) 2007,2008 Robert Alex Marder. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the file FDL.TXT.