When you help someone up a hill, you get that much closer to the top yourself. -Anonymous

This text pertains to Board version 4, in use until August 2010.

No one person can be attributed to getting the Board to where it is today. Following the History of the Board, there have been four Web Masters and there will be more down the line. Each has brought their own flavor and expertise to make the Board something that so many people enjoy, a different direction that has helped the Board to grow through the years. Countless hours have been poured into this beast of a project, and we have all been pleased with what we have contributed.

This said, you can imagine how protective we are of our code. As such, it is against Web Master policy (which we happen to regulate ourselves) to provide this code to others. There are several reasons:

  1. Security - to let this code out into the open could potentially compromise our entire operation, something we have no desire to do.
  2. Task-specific - although it may offer some of the same functionality you may want on your website, our needs are so specific that it is reflected in the code; it would almost be easier to rebuild it from the ground up to get it to work right for your specific situation.
  3. Documentation - there is NO chance that we would create any formal documentation for others to understand it, and you would become very lost very fast; at least one Web Master retired partly due to the monstrosity of it all.
  4. The Code Itself - lets be honest: our code is not the cleanest code out there, nor is it well commented. For lack of better words, our code is: messy, coarse, globally defined, and hodge-podgey. While we do strive to make it somewhat followable, it's still fairly crazy.

And now you know. Aside from this, a gzipped tar of our entire system is well over half a gigabyte. Granted, that's more than code, but I wanted to make it sound impressive.

In all seriousness, you are probably more interested in at least knowing how the Board works so that you can use some of the same ideas and concepts in your own website. With this thought in mind, the remainder of this article will be devoted to what the Board does to run on a daily basis.

Board Server

The Board runs on PHP 4.4.1 with MySQL v4.1. The server is Linux-based, providing us with applications like crontab and Perl. By the end of Board 4.0's life we had upgraded the server a few times and eventually ran using PHP 5.2.4 with MySQL 5.0.

Single Entry Point

When you use the Board, there is a single page that manages everything: index.php . Aside from a couple of pages, security, authentication, themeing, and everything else is done through this one page.

Using the "area" variable in the query string, the PHP code will then proceed to determine what datasource should be pulled from. First our database is checked to see if there is content associated with the given area. This gives our Editors the ability to create pages on the fly which are stored in the database rather than in a flatfile. If an entry does not exist in the database, a filename based on the area is searched for in our filesystem and used. If still nothing exists, the Board gives up and gives an error message to the users. Because of the security issues with dynamically loading files based on user input, each file is self-contained to only operate when it is properly called within the code. This means that even if someone figured out the filename for managing users, loading it will only procure a blank, white page.

Although the user only ever sees a single page, they can still bookmark specific areas by retaining the query string after the page in the URL. It also means that all code for your site is relative to where this one file resides, making it easier to do tasks like load library files.

If there is another area of the Board that you would like to learn more about, please send in a question and we will do what we can to add to this article.