"Online Program Judging Site" Research Manual

phloxcharmInternet and Web Development

Dec 4, 2013 (3 years and 8 months ago)

76 views


Page
1













"Online Program
Judging Site"

Research Manual









By
:

Ian Kenna

Student No: C00152303

E
-
mail:
C00152303
@itcarlow.ie


BS
c(Honours) in Software Development

(YR4)

Institute Of Technology Carlow,

Kilkenny Road,

Carlow.



For:

Department of
Computing and Networking

Institute Of Technology Carlow

{Submission Date: 28th November 2011}

_____________________________________________________________



Page
2











Abstract




This research manual is part of a college project which requires a website to
be designed
and created. Many different technologies and tools exist for creating a website and so
research to decide those most applicable to create a website which satisfies the
requirements set down is necessary. The fundamental purpose of the site is

to
automatically mark source programming source files (files which contain instructions for a
computer to carry out, in order to achieve some goal).


Presented within are the findings of my research into the main areas of knowledge
required to create a cu
stom web site. Everything from the server machine to the
developing tools and hosting options is covered with different options in each case being
analysed and conclusions being made as a result.


As a consequence of this manual it has been seen that the
research carried out was
certainly necessary as serious errors could have been made had it not. Some further
understanding of areas such hosting and programming languages may also be required in
the future.









Page
3


Table Of Contents



Abstract .

. . . . . . . . . . . . . . .


i

1. Introduction . . . . . . . . . . . . . . . .

1


2. Problem Specification . .

. . . . . . . . . . .

2


3. Existing Websites

. . . . . . . . . . . . . .

4


3.1. Uva Online Judge

. . . . . . . . . . . .

5


3.2. Sphere Online Judge
. . . . . . . . . . .

7


3.3. Timus Online Judge
. . . . . . . . .

. . .

9


4. Proposed Website Features . . . . . . . . . . . .

11


5. L.A.M.P. (and its alternatives)

. . . . . . . . . . .

12


6. Web Based Con
tent Management Systems

. . . . . . .

14


6.1. Drupal

. . . . . . . . . . . . . . .

15



6.1.1. Installation
. . . . . . . .

. . . .

16



6.1.2. Ease Of Use

. . . . . . . . . . .

17



6.1.3. Facilities Offered

. . . . . . . . . .

17



6.1.4. Development & Support

. . .

. . . . .

18



6.1.5. Conclusion

. . . . . . . . . . .

18



6.2. Joomla!

. . . . . . . . . . . . . . .

19



6.2.1. Instal
lation

. . . . . . . . . . .

19



6.2.2. Ease Of Use

. . . . . . . . . . .

20



6.2.3. Facilities Offered

. . . . . . . . .

.

20



6.2.4. Development & Support

. . . . . . . .

20



6.2.5. Conclusion

. . . . . . . . . . . .

21



6.3. WordPress

. . . . . . . . . . . . . .

22



6.3.1. Installation

. . . . . . . . . . . .

22



6.3.2. Ease Of Use

. . . . . . .
. . . . .

22



6.3.3. Facilities Offered

. . . . . . . . . .

22



6.3.4. Development & Support

. . . . . . . .

23



6.3.5. Conclusion

. . . . .

. . . . . . .

24



6.4. DJango

. . . . . . . . . . . . . . .

25



6.4.1. Installation

. . . . . . . . . . . .

25



6.4.2. Ease Of Use

. . . . . . . . . . .

26



6.4.3. Facilities Offered

. . . . . . . . . .

26



6.4.4. Development & Support

. . . . . . .

.

26



6.4.5. Conclusion

. . . . . . . . . . .

26


6.5 Developing Tool Conclusion

. . . . . . . . .
.

27


7. Web Hosting

. . . . . .

. . . . . . . . . .

.

28


8. Conclusion

. . . . . . . . . . . . . . . . .

.

30


9. Bibliography

. . . . .
. . . . . . . . . .
. .
31


Page
4



1
.


Introduction


This document records the findings of my research into the area of websites hosting
automatic online judging programs
.

The problem specification is first analysed, followed by
a look at some existing websites which could be considered good solutions. After this

there

will be an outline of the platforms required to set up a web server, along with the different
technologi
es and packages which may be used to create the site itself. The conclusion will
sum up the
areas I have researched, the c
hoices

made between

the technologies to use, and
my reasons for these decisions.





































Page
5


2.
Problem
Specification


Title

Online Program Judging Site


Supervisor

Joseph Kehoe


Description

I need a computer program submission web site. These are commonly used for
programming competitions and allow the user to submit solutions to set problems in a
number of

programming languages


Mandatory

User Registration and log
-
on

Browsable Problem Set

Submission of solutions (in C,

C++,

Java and C#
)

Automatic Problem Marking

Management of Problem Set

Upload new problems with tests, marking scheme, etc.


Discretionary

U
ser Tracking with statistics

User Group management

Leagues


Exceptional

Online editing of code with error reporting

Timed Exams


Recommended Programming Technology:

To be decided by Student after research phase


Recommended Deployment Technology:

Either

Wi
ndows or Linux


References

http://uva.onlinejudge.org


http://en.wikipedia.org/wiki/Occam_programming_language


Student's Interpretation of the problem specification:



Problem

descriptions are published on the website
by users, this privilege should be
such that only selected

people or groups

may submit problems.



People submitting problems include input and output files adequate for the website
to judge a user's submission.(e.g
. For program input XXX, the resulting output should
be (XXX)mod 2, execution time limit for solution?, etc)



The site should allow for a large number of set of problems to be posted.



Registration should be open to anyone, entailed here should be signing up

to specific
groups (
e.g.
: schools, colleges).


Page
6




U
sers

may choose problems to solve as they wish (competitions aside) and also have
the freedom to submit a problem in their language of choice (again, competitions
aside).



P
rogramming competitions

(Timed Exams)

entail a problem or set of problems, open
to all users, or perhaps a certain set of users, decided by the people hosting the
competition. A specific start and finish time determines when the problem becomes
available to view and submissions

can begin, and the cut
-
off time for when
submissions will be accepted.









































Page
7


3
.
Existing Websites


With a very small amount of research I quickly discovered that there are many websites
which could meet the specifications

of my problem description quite closely. Most actually
offer functionality above and beyond the required scope of my problem description. With
the benefit of seeing how existing solutions have been implemented and potentially finding
extra functionality

worth adding to my specification
,

I decided to look further into this area.



My hope was

to

observe how current websites achieve their task and use this
information to compliment my own ideas
,

and as a result determine the best approach to
design my website. As mentioned, I will also strongly consider
adding to my own project
any
of the
observed functionality or features
which I may deem worthwhile
.



Most of the webs
ites in my area of researc
h have common
core functionality
(
presented below
) and then
vary with

features li
ke on
-
line forums, contest hosting
,

etc
.
To
begin with I decided to narrow the number of websites I would research to
three
. My first
reason being that the overall differenc
e between the sites
in terms of my project is small
and
almost every one of them provide all my basic functionality requirements
.
My second
reason is that

these three websites alone
encompass a large portion of the
additional

features offered by any of th
e sites
in existence
.



Common Judging Site Features:



Online registration using email confirmation



Login facilities

(with retrieve lost username/password facility)



Browsable problem sets

open to

all users



Statistics for problems (
at least: number of submis
sions and number solved
)



Ranking table
s

for problem solvers



Information
on

submi
tting a file



Information on submission v
erdict
s given by the site

















Page
8


3
.
1.

Uva Online Judge

(UVA Online Judge, 2011)


Introduction
to

website:

This is a large site in terms of users (over 120,000 to date) and has a large problem set
(over
2700)

to match. The general feel of the site is one of bare functionality more than anything
else but this does have the benefit of not being too clut
tered which is a common problem
with many sites. Overall it is a good site with useful extra features.

The screen shot below
shows the online forum for the site where users may discuss problems or any issues related
to the site:





Ease Of Use:

Registe
ring is simple and password resetting services are good on this site.
The templates
used across the site are consistent which leads to fast browsing with little frustration looking
for constant relocations of "back" buttons, excessive scrolling etc. Subm
issions are easy to
carry out and verdicts are easily understood in conjunction with the "verdict information"
link provided on the site.



Problem Set:

The problems to choose from on the site are numerable and

are nicely

organised in
categories

for easier browsing
.
Problem descriptions are informative and appear to be fairly
uniformly structured, which helps when scanning problems trying to find one you'd like to
attempt.





Page
9




Extra Facilities Offered:



Chat Boards



Contest Hosting



Electronic
Board



Last 50 Submissions



Yearly Statistics


These extra facilities are useful, though not as numerous as with other sites


Conclusion:

This is a good site which is well maintained and structured well which shows through in its
popularity and reliability.

A link to the old server
site

from the home page will lead

to
information on the
old sites
server hardware, operating system etc

which were very useful
in my research.


On the whole I am impressed with this

site I will consider modelling parts of
my

own
site on it
, mainly, the consistency displayed and some elements of the server setup
.
































Page
10


3
.
2.

Sphere Online Judge


(Sphere Online Judge, 2011)


Introduction
to

website:

"Sphere online judge" is a large site with
over 126,000

users, more than just under 2,500
public problems, and in excess of 10,000 problems in tota
.

Probably as a direct result of
this, it is available in 4 different languages.

Again a simple and straigh
tforward approach to
achieving its goal is seen here but have a slightly better feel than the previous site we
looked at and certainly provides more features than it. Below is a screenshot of the "judge
status" page which shows user submission and verdict

details as they are received in real
time by the site(my submission was
purely

for demonstration purposes!).





Ease Of Use:

Registration and log
-
in with the site are pain
-
free and the tutorials for problem setters and
problem solvers are excellent.
Browsing the problems could be made easier with some
more sub
-
divisions, but submitting a solution is a very straightforward process. Browsing
the site is very well implemented with static toolbars on the left changing the content on
the right

accordingly
. This leads to great ease

of use

when viewing different parts of the
site.







Extra Facilities Offered:



Full t
utorial

for problem setters


Page
11




Contest h
osting



Online t
esting



View
judge status
(observe compiling status)



Results
can be emailed to users



High
-
School l
eague
s



Top Schools/Top College Tables



Accepts large number of programming languages(currently 44)



Large problem set(around 6600)



On
line f
orum



Back
-
up submissions t
ool



Status p
age(All The User's Submission Statistics)



Downloadable applications
to track a user's ranking



Allows users to set up their own contests


The number extra facilities offered is noteworthy and just as importan
t is their quality
.

The
backup facility is excellent which has now been developed to allow user to backup their
submissions automatically, and without duplicate code files.


The system for setting up a
user as a problem setter is very streamlined and has probably contributed to the sites
success.




Problem Set:

The problems are plentiful, in good diversity in
terms of challenge, and are well
documented. As previously mentioned, if they were given more structure using categories
the browsing would be much improved.



C
onclusion:

Here is a very good site which has grown well and functions just as well. The look

and feel
of the site could be improved slightly, as could the browsing facilities but overall it certainly
accomplishes it's task comfortably.
The site has dealt with
6082313 submissions to date and
so further research into its server setup would be wort
hy as is clearly a system that works
well, however such information isn't currently published but may be presented on request.













Page
12


3
.
3.

Timus Online Judge

(University, 2011)


Introduction
to

website:

The "Timus" website

has a simple but elegant format with good facilities created by Ural
State University. It has a good selection of problems and overall has a simple site structure
which is easy to use. The screenshot below is top level of their problem set:





Ease Of

Use:

Navigating the site is quite easy and works well as with the static bar along the top
displaying whatever is chosen in the rest of the webpage below it.
User registration, file
submission and result explanations are all quite good.


Extra Facilities

Offered:



Backup posted solutions



Technical Support(by email)



Judge status



Web
-
board



FAQ's



Authors r
ank
-
list



Contests hosting



Archive







Page
13


Problem Set:

There is a good sized problem set to be found here, once again with good variance but with
an added
feature of having each problem rated in terms of difficulty. Browsing the problem
set is fine and problem descriptions are nicely uniform.


Conclusion:

This is a very good site overall and performs well but with a little GUI revamp and some
added features

could be considerably better.







































Page
14


4
.
Proposed
Website Features


Having reviewed existing websites in detail and I will now list the main features I plan to
implement in my solution, with a little more detail given where
deemed necessary:


1.

Registration and Login:

Allows password recovery.

2.

Problem Setting Privileges:

Some users

(problem solvers)

must be allowed to place
problems on the site.

3.

Problem Set:

Problems will be organised into categories and easily browsable.

4.

Multiple Submissions:

A user may submit as many source code files as they like for
each problem.

5.

Online Editing:

It will be possible to edit code on the site itself and then submit it.

6.

Languages Accepted:

The site will accept at least the required progr
amming
languages but will hopefully cater for more.

7.

Judging:

A fast, automatic, and reliable judging system lending itself to easy creating
of problems for problem setters. It will provide informative feedback, explained by
tutorials on the site.

8.

Statist
ics:

Individual user upload numbers, success rate, favourite language etc will
be provided. There will be published ranking tables for users and also site statistics
detailing the most problems attempted/solved, most popular language used etc.

9.

Groups:

U
sers may join groups such as schools
or colleges which will have their own
statistics tables. These groups may also be used to control entry to competitions.

10.

Competitions:

Some site users may be granted "hosting privileges" which entitle
them to set up o
nline, timed competitions.

11.

Backup Facility:

A user may download each file they submitted to the site.





















Page
15


5
.
L.A.M.P.

{and

its alternatives}


To develop and create a website a developing environment consisting of
five main elements
is
required:

1.

A machine with an operating system to act as a web server

2.

A web server

program

to

run

and

the website

3.

A database to store all information relating to the website

4.

A programming language which can be used to code the web pages, and also to
communic
ate between the web server and the database.

5.

Additional software (usually) to aid in the development and maintenance of the
website pages, such as a Content Management System (discussed in chapter 6).


Provided that you have a machine to act as a server,
"L.A.M.P." provided the requirements
from 1 through 4. Before discussing L.A.M.P. further, we will look at these four elements in
more detail:


1.

T
he

solution to this problem will most likely be a single website and in any case will not
be
no more
demanding than a single website should it be broken up. As a result, the
hardware requirements for a web server to facilitate a single website will not be strenuous.
Problem uploading and testing will be the main processing demand of the website.

As see
n
by observation in an existing site

(see chapter 3.2. Sphere Online Judge)

the workload for a
server for even a relatively large judging site are not enormous. The answer to the question
of finding a web server is then simple
-

the courtesy laptop provide
d to this student by the
college for the academic year! As we shall see shortly, it is possible to run a server on the
same machine you are developing the website on, so the college machine shall suffice for
that purpose also. However, the solution to th
is problem will be created with the intention
of it being fully deployed and maintained, with the hope it will someday reach the scale of
existing large judging sites. Ergo, portability will be kept in mind so that the website may be
run from large server
s should the site ever reach that level.


2.

A
piece
of software

running on the server machine whose job it is

to
serve up the web
pages, handle requests, connection issues etc
.


3.

Content for this website will largely be problem sets, uploaded source f
iles by users,
tables of testing results, and (potentially) forum threads. This is all information will could
not feasibly be stored in the web pages and so like any good web site of consequence it will
stored along with other site information in a databa
se. There are many database systems in
existence with probably the most common in use (for similar purposes to here) being
versions of MySQL. Regardless of the database software used it must serve several main
functions to be a viable mechanism of storag
e for this website:


Scalable

-

Must be able to handle large amounts of information should the website grow
,
many users submitting several files for each problem they attempt can lead to
heavy
storage demands if the files are to be kept for long periods.

S
peed

-

This website should not overstretch any of the good database technologies


Page
16


Security

-

User
s registration information will be stored as well as information for potentiall
y
several administrators.

Reliability

-

Hosting is a potential feature of this site (if even not included in this solution)
and so work
-
loads are likely to at their highest during these times. Hence, timed contests
will require accurate and precise data transfers to and from the database to
ensure fair
judging. E.G. What if, in the last seconds of a contest a considerably large number of
solutions are tested and verified within the accepted time but a back
-
log at the database
end means some results are not stored due being
outside the allott
ed time
?


4.

A programming language must be used to connect the web server to the database, to
create the web pages etc. Many choices exist and will be presented shortly. Most of these
choices will suffice for

a large portion of web sites though if parti
cular demands are in place
the choice may be limited, e.g. your site must utilise some component written in a certain
language.


Back to L.A.M.P.

Linux, Apache, MySQL & PHP (L
.
A
.
M
.
P
.
) is a solution stack of free, open source software
which
is very useful f
or
build
ing

web servers. The original acronym now has many
alternatives as W.A.M.P. (Windows replaces Linux), M.A.M.P. (Mac OS replaces Linux) and
Perl/Python may also be used instead of PHP
. This obviously leads to great diversity to
implement a LAMP solution and so it has been widely used.
All of these elements are still
free to use and so much help is available for any issues which may arise. The minimal setup
cost and high availability

of a LAMP system contribute to its success as the choice for small
scale websites and people wishing to experiment.


Linux:

The operating system which must be installed on the hardware.

This is a pop
ular
choice of operating system due to its reliability
.


Apache
:

The server program running on the
operating system

which connects to the MySQL
database.

A very popular server Apache powers a considerable portion of the worlds
websites.


MySQL
:

One of the most popular database technologies and is quite ro
bust.


PHP
:

Possibly the most commonly used language in a L.A.M.P. setup, PHP is widely used as
a scripting language to great effect, but can also be replaced quite well by python.



Conclusion:

Having experimented with different version of LAMP (as seen
in section 6.), and having
existing knowledge of windows the result of this are of research is that LAMP should be
used over "Windows" as it appears to be more reliable and has sufficient support to aid
someone developing in this evironment.





Page
17


6.

Web Bas
ed Content Management Systems


Introduction

To clear up any possibly unnecessary confusion it is worth nothing some
acronyms in this
area of computing:
There are many different technologies today associated with

building
websites and some
have

several

ali
ases. This section of the document will largely deal with
an area known as "CMS", or "Content Management Systems". However CMS may also be
known as "WCMS", where the "W" stands for "Web". It
again
may also be known as
"WBCMS", where "WB" stands for "Web
-
Based".

Similar to CMS is "CMF", or "Content
Management Framework"
-

which may also be preceded by "W" or "WB".

For simplicity,
this document will use only CMS and CMF where possible.



CMS vs CMF vs Framework!

To build a website the wheel needn't be
re
-
invented and in practice this means it shouldn't
be necessary to create a solution using nothing other than a programming language! In
short, there are three different levels at which you may start:


1.

A Framework

2.

Content Management Framework (CMF)

3.

Conte
nt Management System (CMS)


These technologies are listed from

a

low level to
high level

in terms of programming
. A
framework may is basically
a pro
gramming language with API's
geared towards creating web
applications
. What a Framework provides could be
considered as the tools and raw
materials to create a hou
se
-

you build the

walls, a roof, a staircase and furniture etc

yourself
from the equipment/timber/cement and so on
.
Examples of these technologies are "Rails"
and "Django". A CMS
on the other hand
might be thought of as providing pre
-
built walls,
roofs etc which you can adjust and join together in certain ways to build your creation.

Examples are "WordPress" and "Joomla".

A CMF for simplicity
;

may be considered
something in between, where you have

more
flexibility

to make adjustments to the pre
-
built components
i
t provides to you, a
n example is "Drupal".


The specification of this problem requires many different parts of the website to work
together to accomplish its task (e.g. Log In, uploading of

files, source code compilation,
producing output tables etc). The site may have to deal with large numbers of submissions,
problem sets etc in the future and may also have to provide functionality such as "contest
hosting". With the varied features requ
ired (and potential addition of others in the future),
it is important the result of this project be easily updatable and expandable. Consequently,
the system implementing the solution to this problem must be flexible. The best approach
to creating a fle
xible website must include a Content Management System (CMS) and/or
Content Management Framework (CMF). A brief overview of some software packages
implementing these technologies will be presented in this section of the document.






Page
18


6.1
.

Drupal

(Drupal, 2001)


Drupal claims to be both a free open source CMS and

CMF as it provides the flexibility of a
CMF but also has built
-
in components and so can also be considered a CMS.



Nodes: The secret to D
rupal's flexibility
.

When viewed in a basic manner
,

a node in Drupal may be viewed as a set of related pieces
of information. Each piece of information or "content" shown on a w
eb page may be
viewed as a node

which contains not only the information itself but also its "meta
-
data".
This means that if
,

for example
,

text was to be displayed, the node stores the text as well as
any information detailing how it should be displayed.
A node may also contain informa
tion
detailing in which scenarios the information is to be displayed.
With each item of content
being stored in a node with structure a website can be build with many different scenarios,
each using the nodes in differing configurations.































Page
19


6.1.1. Installation


I decided to install a "LAMP"
(see section 5.)

instance and run "Drupal"
(version 7.9)

on top of
it so as to learn about these technologies, both of which were completely new to me. To
get a version of "LAMP" on my machine I
first
had to download a free copy of "VirtualBox"

(VirtualBox, 2011)

which allows another operation system to run under "Windows" without
affecting it. "VirtualBox" was straightforward and simple to use with no

errors or bugs
encountered to date.

Getting a copy of Ubuntu"(version 10.4.0 LTS) set up on "VirtualBox"
was si
mple and I was comfortably
installing programs and exploring the operating system
after just a few hours of experimenting.


Drupal (version 6.16
-
1ubuntu0.1) was downloaded through

Ubuntu

and installation
up until and including configuring "Apache"(version
2.2.14
-
5ubuntu8.7)

was without issue

or delay. However, the MySQL

(version 5.1.4l
-
3ubuntu12.10) installation appeared to be
fine until configuration of different files lead to a failed connection attempted with the
database. Despite researching the issu
e, numerous un
-
install and reinstall attempts, as well
as trying to
correct the issue by updating the

i
nstallation
no progress was made
.

After a
complete reinstallation of VirtualBox and Ubuntu I tried again with Drupal. This time around
things were succ
essful and the lessons were certainly learned! The problem as it turned
was my own fault. While making a list of new usernames and passwords for the Ubuntu
system I choose defaults for the database but forgot to note t
hem!


To help set up all the
differe
nt CMS systems for my research I decided to use similar passwords and usernames
for simplicity, then change them for the chosen system to be used for development.
Unfortunately when I signing in to the database in this case I failed to recall that a passw
ord
had automatically been setup during installation and so all attempts to enter my commonly
used password were never going to work. A better system for recalling passwords and
usernames was introduced and the problem hasn't been repeated!

The installat
ion process
was repeated with success on the second attempt.


A noteworthy point of the installation process is that in contrast to another other
setup experienced during research, Drupal requires a database to be created to complete its
installation.

















Page
20


6.1.2. Ease Of Use


Installation creates a webpage accessible on the local machine, this page is how

you access

Drupal
(
you
must
log in with user details provided during the installation process
)
.



A
well laid
-
out and easy to use
toolbar
along the top of the screen provides acc
ess
to all options and features. Switching between screens, configuration etc is straightforward
and makes Drupal quite nice to use. The overall look and feel of the application is excellent,
with intuitive menu la
youts, with an uncluttered workspace to operate in.
Customization of
the developing environment is minimal but largely isn't necessary anyway.

Drupal's
administrator setup is very easy to browse with everything nicely categorised. Installing
new features

is simple with very little tinkering necessary, allowing for fast development.



6.1.3.
Sample Usage



This is a screen shot of a forum I set up which could be used for users to discuss anything
related to the site. While logged in as an administrator

I was able to create a new forum
and select which user roles could post, add new topics etc.










Page
21


6.1.4. Development &
Support


This is the latest versin of Drupal available yet is already available in 172 different
distributions packages. A Drupal d
istribution package contains a core Drupal product
combined with a selection of modules usually necessary to create a certain type of product.
For example, there are distributions targeted for people wishing to create everything from
one page CV sites, to

websites allowing users to test new Drupal modules.


There exists
thousands
of modules
(over 12,000 presently)
allowing a developer to
quickly add features to a website. These modules are largely written by
Drupal users and
are free to use, with new ver
sions being released for most of the popular ones. Support is
massive for the Drupal community and is encouraged for every user, advanced and new. As
a result, help with just about any aspect of developing with this product is never too far
away with ple
nty of forums and even paid experts offering tuition.







6.1.5. Conclusion


Drupal is a stable product which has plenty of support via it's community to help developers
both use the existing products, and help support the community by creating your
own.
Using the tool itself is a pleasure and though installation is complicated and requires a lot of
input compared to other developing packages it is worth the extra effort. A large part of the
requirements of my problem solution could be provided for
by existing Drupal modules, and
editing these or creating new modules should not be a problem.


















Page
22


6.2
.

Joomla
!

(Joomla, 2005)


Joomla is another open source free CMS designed to create websites. It has been used
to
produce many different types of websites such as social networking sites

(Quizilla, 2011)
,
financial sites (Citibank

-

not publicly
accessible
), educational sites

(Harvard University
-

GSAS, 1999
-

2
011)

and many others.
Joomla! c
laim it's used for 2.7% of

the

top 100
,00

websites in the world

and boasts that c
ore functionality can be increased with over 6000
extensions.

Other notable points are that it o
ffers a free developers support forum wit
h
around 1200 posts per day.


In a basic view of things; Joomla! consists of a platform and extensions. Some
extensions are created by Joomla! and are part of the core product, while others are created
by developers in the Joomla! community. These extens
ions provide additional functionality
to developers.
This system is a little different to
comparable

developing tools
(such as
WordPress and Drupal)
and requires some effort to
understand
.



6.2.1. Installation


Joomla! can be downloaded and installed
directly from the main site in the form of basic
core packages (as small as 7.1MB) or distribution packages tailored for certain purposes
(e.g. creating school website). Installation manuals are plentiful and the large community
make is easy to find help
in the form of tutorials and forum posts. A very useful option to
get started with Joomla! is a free 30 day trial "Online Demo" hosting service they run. In
short, Joomla! provide

will host your application on a testing site with no cost for 30 days.
T
r
aining and support is also provided free of charge

with this service
.

I decided to download
and test Joomla! locally in the event that if I chose to develop using Joomla!, I would already
have everything set up on my machine.


This research into Joomla! c
ame after
I
had previously used

BitNami WordPress Stack


to install a WAMP
(see section 5.) installation along with WordPress

(see section 6.3.1.)
. I
was very impressed with this setup and decided to test its ability to install further CMS
di
stributions on

top of the WAMP stack. The BitNami

product
claims

a Joomla! module
(and
many others)

may

be downloaded and integrated into the setup with minimal configuration
and no adverse effects on existing installations on the stack.

For my experience at least, thi
s
was very true as the entire process from start to finish was as straightforward as would be
expected, resulting in the development environment being created in less than
five

minutes
(Joomla! version 1.7.3
-
0)
.








Page
23


6.2.2. Ease Of Use


The Joomla! developing environment must be accessed by loading a webpage it creates
during installation. As with Drupal, this page provides a log
-
in feature which takes the user
to the local installation of Joomla!. The layout of menus
for the main deve
lopment
environment
here isn't instinctively easy to follow, and it takes some time to explore
and
get used to it. A somewhat strange aspect of this package is the lack of a straightforward
facility to view the web pages you have created!
In fact,

the
sy
stem
Joomla!

employs is
difficult enough to grasp such that you are not likely to start developing without a little
reading!

Once the "
component
" system is understood however, things move a little more
quickly, and you can start to create and modify conte
nt with a little more ease.
Unfortunately
,

the development environment never seemed to become quite as easy to use
as other
s
, even
with more practice.

Joomla! certainly proved to be the slowest tool to get
started with out of the CMS's researched.


6.2.3
.
Sample Usage




6.2.4. Development & Support


Fast development for beginners in Joomla! requires key knowledge and understanding of
certain areas and presented below are some (without which progress may be quite slow):


Components:

Content is largely handled through one or other form of component in
Joomla!


B
locks:

Each page will usually have several content blocks called "positions", these positions
are arranged (along with other pages details like fonts) on the page using a tem
plate.


Modules
:


These
may be places in the content blocks.

Most things involving user input or
linking are modules (e.g. Menus, sign in, etc), they may be considered simple plug
-
ins.
Modules can be switched on or off.


Content:

Usually, content is added and
assign
ed

to

the

main body of the page.


Add
-
ons:

These are the elements of JOOMLA! d
evelopment

providing extra functionality
which are

not provided

with installation (
usually include a component and module
)
.







Page
24


Learning how to use the developing environment is just as essential and to learning the
content system used by Joomla!
Here is a screenshot showing the Joomla developing
environment being used to create a tutorial for "problem setters":



Given the Jooml
a!'s mass usage support from the community is excellent, as would
be expected. Extensions are constantly being created and updated.



6.2.5. Conclusion


As mentioned, development is slow when compared to other CMS tools but the system
does have its benef
its and the list of quality sites produced with Joomla! bears proof to this.

Though the system Joomla! employs is worth learning for someone wishing to create quality
websites for small
-
scale or one
-
off jobs it may be better to use faster tools offering
the
same level of quality output. Another issue is that while Joomla! does require some learning
a tool such as Drupal may provide more flexibility but with the same quality of product,
should the same amount learning be applied to its technologies.














Page
25


6.3
.

WordP
ress

(WordPress, 2003)


"
WordP
ress
"

is a very popular free, open source, online blog tool

(has been used by over 25
million people)
. Though it's initial purpose was solely to help people create and host their
own blog sites
WordP
ress has now become a full CMS by extending its capabilities using
thousands of
"
plug
-
ins
"
. This CMS is a mature and stable product built on PHP and MySQL.


WordPress claims t
he m
ajority of users don't require plug
-
ins

and this indicates
to me its
typical usage

-

simple blogs.





6.3.1. Installation


Having discovered

the concept of
"WAMP" during my research (see section 5.) I wanted to
experiment with its

potential and decided to use "BitNami WordPress Stack"

(version 3.3.1
-
5)

to get a copy of WordPress
(ver
sion

3.2.1)
.

This BitNami

(Bitnami, 2011)

produ
ct is
essentially a WAMP and WordPress

bundle designed to be installed on a machine with
minimal setup.


The downloading of the product was fast and simple and the installation process was
very surprisingly complication free(especially as this was the first CMS I installed and had
read many ho
rror stories about configuring "Apache" and "MySQL"!). From

start to finish
the process took

under ten minutes

to get a
working

versi
on of "WordPress" on my
machine, with no database configuration.


6.3.2. Ease Of Use


The package may be launched from wi
ndows a normal program and installation creates a
simple webpage allowing you to log in and get started. The layout is simple but effective
and the environment isn't too cluttered but it can be a bit slow to get around due to the
simplistic menu layout.
Menu tabs are titled wi
th non
-
technical terms and the tool as a
whole seems to be geared towards every
-
day users. I didn't find this product as simple to
use as you might expect and feel this is mainly due to too many options and scenarios being
presented

before you create content, as opposed to creating something, then fine
-
tuning or
playing with it.









Page
26


6.3.3.
Sample Usage




Here we can see as simple web page I created which allows users to upload their source
code files. All that was required was

using a "shortcode" in the page editing view to create
an instance of the uploading tool.



6.3.4. Development & Support

Finding plug
-
ins is easy as you may search using the built
-
in tool and installing is without
issue also. The range of features offer
ed by the numerous plug
-
ins is large, as you might
expect. However these extra plug
-
ins are generally of a "plug and play" nature and are
mostly designed to be either used as they are, or not used at all. Hence, customization or
getting them to work toge
ther would be difficult.


This product can provide many of the functionalities I requi
re such as creating user
groups, but sometimes at a cost.

For example to implement this feature properly in
WordPress you would need to install a "role and capabilities"

plug
-
in. This is a feature
which should be provided fully, and automatically with any good CMS and shows the narrow
audience for which this package is focused.


The template system however is excellent with good choice and though
customisation could be
easier there are so many options to download that
something close
to any look or feel you seek should exist, requiring little or no alteration.


However, I quickly became aware of just how blog
-
orientated this package was when
I tried to set up a simple ve
rsion of an online judging website. This system is based around
creating simple web pages displaying text, but also offers additional features which can be
added in the form of "widgets" and plug
-
ins. It is true that the numerous plug
-
ins provide a
very
wide range of features to a developer
-

I found and tested several plug
-
ins providing file
upload functionalities. The plug
-
ins are mainly open
-
source as is the main program itself

Page
27


however the standard of coding is poor. For the file upload feature alone
I found some of
the plug
-
ins easy break with some simple testing(attempting to upload files outside the
accepted range failed one plug
-
in, another allowed uploading but displayed information was
incorrect and it's download feature worked not at all).


Much

the same as the other CMS scenarios, a good community exists for help with
this product and forums will provide the answers to most queries.


6.3.5. Conclusion


With the questionable quality and hence questionable reliability of the plug
-
in features
offered by this setup I would be very hesitant to use them. The core WordPress program
does its job quite well, and it simple and easy to use. It also does hold true to its claim of
providing thousands of features for your site via plug
-
ins. However for

my project these
plug
-
ins are usually too specific in nature and so would require changes, resulting in quite a
few seperately developed and then altered pieces of software. This is clearly not the best
way to create a robust website when you have a choi
ce. In short, to develop my project
WordPress would provide little more than a good working environment to structure and
launch the website. The main functions of the site would have to be self
-
coded to ensure
integrity and reliability.



























Page
28


6
.4.
Dj
ango

(DJango, 2005)


"
Django
"

is a high
-
level
Python web framework built
designed to allow rapid development
of web applica
tions.
Hence, Django differs from the other elements in this section given
that it is a

"Framework" as opposed to a CMS. This effectively means creating the site is
much more involved with writing code as opposed to the "drag and drop" component type
development seen with the CMS's.


This technology is used by people seeking to create a web
site with great flexibility.
Since you are largely creating the website from scratch control and customization is
effectively in your hands. This does however, come at a price, as learning to use Django will
require a working knowledge of python as well
as understanding the Django framework.


Django is very efficiency
-
focused and claims to adhere to the DRY principle(Don't
Repeat Yourself) as much as possible.

Python

code

is used

to define models for your data
and Django creates the
database with an API
to access it automatically. You can then write
a short piece of code to create an administrators interface for your application. The website
itself is con
s
tructed using templates. The focus on efficiency is once again seen here with a
"template inherita
nce" system being used to render the web pages as efficiently as possible.

All this results in a good system to create a website should you have the time to learn and
use Django.









6.4.1. Installation


To run Django I once again utilized
the

Bitnam
i prod
uct. As expected the process was
without complication and this was a relief as research had shown that manual installation
and setup can prove to be very troublesome. With a small amount of database
configuration the setup process created the Djang
o setup on my machine with a test
project.











Page
29


6.4.2. Ease Of Use



6.4.3.
Sample Usage




6.4.4. Development & Support

6.4.5. Conclusion




































Page
30


6.5
.
Developing Tool
Conclusion



Of all the tools used here the option
deemed most suited to my project is Drupal. I feel it
provides the best ratio of flexibility to development speed to any of its counterparts. It
should be possible to largely create the website using existing components (altering code
where necessary), o
r creating new components myself. WordPress is a highly useful tool
but appears to be streamlined towards creating blogs and does not provide the flexibility
and control I would like. Joomla! is on a par with Drupal but the extra complications
involved w
ith developing combined with slightly less control than Drupal when creating
custom websites leave it falling short. Django is clearly the best option

for creating a
custom website with as much control as might be necessary but the low level programming
i
nvolved means it would take longer to produce a site which could be created with all the
same features in Drupal, but in less time.
































Page
31


7
.
Web Hosting




With the intention of this website ultimately being deployed as

a

fully function
ing and
maintained site I want

to develop the site with this goal in mind. There exists many options
for hosting a website and listed below are
the ones

I considered.



Hosting on a personal machine

With development environments capable of
running and testing on the same machine this is
an obviously attractive choice. All of the developing tools reviewed in this document have
this capability and it certainly appeared to work. Developing and testing locally is highly
recommended by the deve
loping community and hosting agents alike. With no previous
experience building websites it would obviously make sense for me to develop and test
offline as much as possible before ever cons
idering deploying the website.


With the
possibility

of my websit
e only reaching completion nearing the end of the
allotted
project
time, the time the website would be fully deployed is likely to be short
anyway. Hence, I decided to concentrate on developing and testing first,
then should time
permit a little more rese
arch into hosting sites could lead
to full deployment
.

This has the
added advantage of eliminating the possibility of more time spent researching hosting, and
perhaps never having the opportunity to use it!


Pay for h
osting on a
n

internet hosting website

A simple enough site such as an online judging site should not require anything
extraordinary of

a good

hosting site.

"Virtual hosting" (where many sites may run on the
same server
-
provided by the hosting site
)
is

provided by most hosting sites and
so
sim
ply
choosing a good provider should suffice if I were to choose this route.
There are a multitude
of web hosting sites offering many feasible options for deploying a website. Finding a
reliable host is a little more effort though, and credibility must be

ensured before signing up.
To do this it is

commonly

recommended that you

use well
-
known and tested providers, and

contact existing si
tes using the host if deemed necessary.


Another option would be to use "colocation" services. Here, you provide the se
rver
machine yourself and place it in a web hosts "data centre". Connection and rental fees are
paid for the service the host provides to your machine but if you need total control of your
server this is an alternative method to dedicated servers. For th
e purposes of my project
however, this
option is not necessary.


Hosting on an
college
-
owned machine

This option was given consideration and is potentially a good choice to host my judging site
should it reach the stage of full deployment. It would be my wish to create this website and
hand it over to

the college,
who

would presumably host it themselves

in that eventually.

As
stated before however, concentration must be placed on development and testing
initially
,
and time spent researching hosting may not pay off in the end.

Assuming the project
reaches completion and there is time for deployment, I s
hall then approach the Institute to
see if they would consider hosting my judging site.



Page
32


Conclusion

The end result of this research is that I deem developing and testing on my personal
machine the best option to begin with. Considerable research would be
required for setting
up and maintaining my owner server. Security issues for servers are very important and
this area would also require further research
. In the event a project is created and ready to
deploy, I shall first approach the Institute to ask

permission for hosting, with the intention of
relinquishing the rights and responsibilities of the website to the Institute when my project
delivery date is reached (though where possible, I would help with any necessary further
testing, administration, m
aintenance etc not where time permits while in college, and also
after the academic year should end). If the Institute does not permit hosting my site I will
use a hosting site to complete my testing as I would like to test my solution under full
deployme
nt before the delivery date, if possible.





































Page
33


8
.
Conclusion


The areas covered by this research were largely very relevant to creating a solution to my
problem and as a result the time spent on the research is considered
very worthy indeed.


Reviewing existing databases res
ulted in a very accurate idea of how my site should
be laid out, the look and feel it should have, as well as the features which should be
provided.


Time spent investigating LAMP is certainly considered

sell spent as this the Linux
operation system is an area I have always been interested in but until now have never
worked with. The reliability of LAMP was a major factor in my choosing it but also was my
readiness to learn a new operating system.

My in
terest in this area lead to a good working
knowledge of Linux, and to a lesser extent
-

Apache, MySQL, Python, and PHP.


Content Management Systems was an area completely new to me and working with
the different CMS tools has given me a very good understan
ding of how websites are
created.
More has been learned in this area than any other involved in this research report
and I feel the decision to use Drupal to develop my project was well
-
informed. I must add
however, that given I possess a working knowled
ge of Python some further research into
replacing PHP with Python as the coding language for this project would certainly be
worthwhile.


Web hosting though not the most critical area of this project was definitely seen in a
new light when research was com
plete. Little knowledge of hosting was possessed before
this document was compiled but it proved to be an interesting area of research for me. I
hope
it will be necessary to learn more in the future,
necessitated by my project
approaching

the stage of de
ployment.

























Page
34


9
.
Bibliography

Bibliography

(2003). Retrieved October 16th, 2011, from WordPress: http://www.wordpress.org/


(2005). Retrieved October 16th, 2011, from Joomla: http://www.joomla.org/


(2005). Retrieved
October 16th, 2011, from DJango: https://www.djangoproject.com/


Bitnami
. (2011). Retrieved November 21, 2011, from Bitnami:
http://bitnami.org/stack/wordpress


Drupal
. (2001). Retrieved October 16th, 2011, from Drupal: http://www.drupal.org/


Harvard
University
-

GSAS
. (1999
-

2011). Retrieved November 28th, 2011, from Harvard

University: http://gsas.harvard.edu


Quizilla
. (2011). Retrieved November 28th, 2011, from Quizilla: http://www.
Quizilla.teennick.com


Sphere Online Judge
. (2011). Retrieved Oct
ober 16th, 2011, from Sphere Online Judge:
http://www.spoj.pl/


University, U. S. (2011).
Timus Online Judge
. Retrieved October 16th, 2001, from Timus
Online Judge: http://www.acm.timus.ru/


UVA Online Judge
. (2011). Retrieved October 16th, 2011, from UVA
Online Judge:
http://www.uva.onlinejudge.org/


VirtualBox
. (2011). Retrieved October 12th, 2011, from VirtualBox:
https://www.virtualbox.org/