Introduction to Olympiad

Olympiad is one of my favourite projects. Since we are preparing to release Olympiad within the coming weeks here at Lowter, I will begin to explain a little bit about Olympiad and its inner-workings. Olympiad is an application development framework, originally designed for internal use by the Lowter administrators in our various projects inside and outside of Lowter.

Before I began to develop Olympiad I spent a lot of time stitching together various libraries I created to form a foundation for each programme I created. Therefore, none of my programmes really shared a common foundation, thus making future updates a painful task.

I decided I would look into using a framework not only to unify my programming projects, but to speed up my development as well. I spent many hours investigating various PHP frameworks. The only framework I came across that I actually liked was CakePHP (external link). My only dissatisfaction with CakePHP was how complex the directory structure was. It just did not make any sense.

I decided I would take a shot at developing my own framework. My main goals were:

  • Separate design, data, and logic.
  • Use a no-nonsense directory structure.
  • Make future updates easy.
  • Speed up development time.

Development of Olympiad began a little over a year ago. The first incarnation was finished in less than a month. It was definitely not a perfect build, but nevertheless it worked. It contained a lot of recursiveness (which I will discuss in a later blog post) and a few small things with which I was not satisfied. Another major downfall was that it did not include a powerful model framework, so you still had to use SQL statements within your application's source code.

I went right to work developing the second incarnation of Olympiad. The main two changes were the elimination of all the recursiveness and the addition of a powerful model class. The model class allows for things like $this->articles->find_all(). Therefore, your application's code doesn't actually contain any SQL (although it still can). This second incarnation was much more usable, and it is actually the version we currently use on Lowter for our tagged-powered CMS.

A few months after the development of the second incarnation of Olympiad, I went back to the source code to clean it up even more. The directory structure changed a lot to become much more logical. I also did away with the controller structure, which used classes and methods for each page, much like CakePHP and Ruby on Rails (external link). Instead it now uses separate files for each page that can be organised into directories. For instance, if I want to load articles/view/45, Olympiad will load the source file articles/view.php.

So, the third incarnation of Olympiad is what we are releasing. After a few bug fixes, we will be releasing an alpha version for the world to test! So look forward to the alpha release and more blog posts explaining some of the technical aspects behind Olympiad.