Technology Overview: Yellow Duck CMS
Technology Overview: Yellow Duck CMS
Table of Contents
Technology Overview 1
Programming language 1
Code Igniter 1
CakePHP 2
Prado 2
Database engine 3
MySQL 3
SQLite 4
CVS 4
Subversion 4
TinyMCE 4
FckEditor 5
Flash TextArea 5
Technology Overview
i
Yellow Duck CMS
JavaScript libraries 5
Prototype 5
jQuery 5
Technology Overview
ii
Yellow Duck CMS
Technology Overview
Programming language
The Yellow Duck CMS will be written using the PHP1 programming language.
• PHP has proven to be fast (especially if you are using an cache engine)
• PHP is easy and cheap to deploy on a production web server
• Since PHP 5, we can create full blown object oriented code
• PHP is widespread in the web development world
• PHP is easy enough so that even less experienced programmers can understand the code
• PHP is an interpreted language, as such we are avoiding costly and time-consuming compile cycles
Code Igniter3
Code Igniter is the framework created by the same people that created Expression Engine 4. The framework supports both
PHP 4 and PHP 5 environments and claims to be one of the fastest frameworks around.
However, some of the concepts of Code Igniter make it difficult to implement in the Yellow Duck CMS. As with many MVC
frameworks, you are forced to follow their concepts and it’s very hard to overrule them.
Also, the way you can extend base classes in the framework is a bit cumbersome and very limited. Also the form validation
functions are very basic. A solid form framework is unfortunately not available in Code Igniter, expect for a few form helpers.
Another disadvantage of Code Igniter is that it’s libraries are not usable in a stand-alone environment.
The advantages of Code Igniter is that it’s very easy to use and to learn, also for people that don’t have a lot of experience
with web application frameworks. Another advantage is that Code Igniter has quite an active community.
1 http://www.php.net
2 http://framework.zend.com
3 http://codeigniter.com
4 http://expressionengine.com
Technology Overview
1
Yellow Duck CMS
CakePHP5
CakePHP is an almost straight port of Ruby On Rails 6 to PHP. It follows the concept of convention over configuration,
making it very easy and fast to develop with.
However, the big disadvantage is that you are really forced to use their conventions. If you want to do something that is not
directly supported by the framework, you’ll have a hard time doing so.
The advantage of CakePHP is that it does a lot of the hard work without you having to program everything manually.
It also seems that the development of CakePHP has slowed down somehow. The version we should be using, version 1.2 is
already in beta for a very long time and doesn’t seem to get to a released stated.
CakePHP shares many of the disadvantages that Code Igniter has. There is no form framework, the framework is pretty slow
and isn’t optimized for PHP 5.
Different articles on the net indicated that Symfony is one of the slower PHP 5 frameworks.
Symfony has very good documentation, complete with a 490 page book online on their website. There seems to be a forms
framework available for it as well.
However, the model layer seems to be uniquely Propel8. It looks like the developer is forced to use this ORM and cannot
easily swap to a different one.
Prado 9
Prado is quite different from the other PHP frameworks mentioned here. Prado is what is called a “component framework”.
The style of programming can be compared to developing an application using Microsoft Visual Basic. Prado can be seen as
a PHP version of ASP.NET.
Prado is a very handy framework to construct desktop-like web applications but is too cumbersome to develop a content-
management system with.
One of the biggest advantages of the Zend Framework for PHP is that it’s essentially a big library of different modules that
help you with creating a web application. Each module can be used on it’s own without needing any of the other modules
from the framework. However, each module provides hooks to let them all work together in one single application.
5 http://www.cakephp.org
6 http://www.rubyonrails.org
7 http://www.symfony-project.org
8 http://propel.phpdb.org
9 http://www.pradosoft.com
Technology Overview
2
Yellow Duck CMS
The Zend Framework for PHP also supports a Model-View-Controller architecture. This biggest difference between the Zend
Framework and e.g. Code Igniter and CakePHP is that you can define yourself how you want to structure your MVC web
application. You have full control over the directory structure and execution pipeline.
There are also a lot of very useful components included by default in version 1.5 of the framework, which will speed up the
development of the Yellow Duck CMS significantly.
Database engine
There are two database engines that will initially be supported by the Yellow Duck CMS. The supported engines will be
MySQL10 and SQLite 11.
MySQL
MySQL is the most commonly supported database engine for PHP web applications. Most hosting companies provide
support for MySQL out of the box.
MySQL is a real database server, running a server process on a machine (either the web server or a separate box). MySQL is
known to be very fast and can handle very high loads.
We should however be careful with multi-user situations where MySQL can corrupt data if you are not carefully programming
this. A good idea might be to use the InnoDB storage engine so that we can support cascading deletes, transactions and
referential integrety.
MySQL is also the obvious choice if you want different developers work with the same database content simultaniously.
10 http://www.mysql.com
11 http://www.sqlite.org
Technology Overview
3
Yellow Duck CMS
SQLite
SQLite is a library that supports a database in a single file. SQLite is very lightweight and doesn’t require you to setup a
database server and maintain it. The library behind SQLite supports most standard SQL constructs and is very easy and
fast.
The advantage of having the entire database in a single file is that you can easily transport the database around, make
backups and restore the database. It also allows different people to work on an individual database or even providing
different databases for different environments (development versus deployment versions of the database).
The drawback however is that multiple developers cannot work on the same database file. Each developer will have it’s own
copy of the database.
CVS 12
CVS used to be the standard in version control software, but is quite outdated nowadays.
Subversion13
Subversion is the de-facto standard in version control software. Similar to CVS, it’s an open source package.
• Atomic commits
• Everything is versioned, even renames, directories and metadata
• Can work over a network using the standard WebDAV protocol
• Branching and tagging are cheap operations
• The repository is stored in plain-text files
• Binary files are handled very efficiently
TinyMCE14
TinyMCE 3.0.5 is compatible with:
12 http://ximbiot.com/cvs/wiki/
13 http://subversion.tigris.org
14 http://tinymce.moxiecode.com
Technology Overview
4
Yellow Duck CMS
FckEditor15
FckEditor 2.6 is compatible with:
Flash TextArea 16
Flash Text Area is compatible with:
JavaScript libraries
Prototype17
To be written...
jQuery 18
To be written...
15 http://www.fckeditor.net
16 http://osflash.org/flashtextarea
17 http://www.prototypejs.org
18 http://jquery.com
Technology Overview 5