Introduction



It all began with an idea: the MVC pattern

It all began with an idea: the MVC pattern. I have explored dozens of open-source codebases, and have always been interested in the way their files are structured, their methods are named and their variables are organised. What I always disliked was starting a new project with unfamiliar code, and the arduous process of unravelling its mysteries until I understood how it worked.

When I discovered the Model-View-Controller pattern, I realised that any project, however different it might be, could remain easy to understand if it followed this pattern, regardless of the programming language used.

The choice of topic for my final-year project is not accidental: it has a history. For years, I have worked for a company whose main product is a content management system, Editmaker, which it has been developing for 15 years.

This has helped me understand the problems and needs involved in developing software over the long term: software that evolves, grows and becomes more complex.

At university, I also learnt the importance of standardising and managing the communication involved in team software development. The unified software development process inspired by Microsoft’s organisation, agile methodologies focused on productivity, communication and teamwork, and the need for patterns, abstraction techniques and other architectures that help structure or standardise the creation of a particular software product have all encouraged me to bring these ideas together, or at least attempt to do so, in this project.

Creating a CMS involves considerable complexity. These are substantial, fairly complex applications. Running dozens of instances, or websites, on a single server will almost certainly put a heavy strain on its performance.

The need for a lightweight framework led me to rule out the existing CMSs, which have evolved over many years and are very comprehensive, and to try building one from the ground up, with lightness as a central concern from the outset.

The existing systems have several things in common: they are written in PHP, use MVC and are mostly component-oriented.

I benefited greatly from following the courses of Jaisiel Delance, a Dominican online technology educator with a YouTube channel, Twitter account, Facebook profile and his own website, dlancedu.com. An expert in open-source CMSs, he has distilled their basic shared features into a genuinely lightweight and powerful foundation, which I value highly and have adopted as my starting point.

I believe a project of this kind should involve a team, as well as months of planning and development. Everything depends on the initiative’s ambition. Although I am aware of this limitation, in this thesis I would at least like to establish the foundations of a sound architecture for a system that meets the stated requirements: scalable, lightweight and ready for teamwork.

It all began with an idea: the MVC pattern: illustration




CMS UM header