While one centralized eVote database and application server would be most efficient and easiest to maintain, the idea of storing voting information at this centralized host is not very appealing to the intended clients of this system. Instead of centralizing the entire system, we propose to centralize it for each firm. This way, the system needs to be installed only once per firm.
One of the goals of eVote is to provide a quick and simple setup, as well as efficient maintenance of the entire system. Typically we can achieve this goal by building an integrated software package with a one-stop installation and maintenance utility. On the other hand, we want to make sure that the system is robust and scalable in its line of duty. In respect to this requirement, we will need to rely on off-the-shelf products that have been optimized for their purpose and that are already being used in the industry.
In terms of a quick and easy setup from a client's perspective, we have come to the conclusion that a platform-independent, web-based application serves this purpose best. Needless to say, we are assuming that every desktop is equipped with a web-browser, may it be Netscape or Internet Explorer. As an alternative to the web-based solution, we are faced with a stand-alone application. However appealing this may be, it requires a desktop-specific setup, which at the very least involves configuration parameters with respect to the centralized data source. Furthermore, we would either need to ensure that the application is fit for the client's platform, or provide a virtual machine to this end.
As we are interested in making this product as platform-independent as possible, we are looking for a web server of the same nature. Java Server Pages (JSP) stand out for the choice in regards to a web-based application, since JSP applications tend to be served by Java-based web servers. Moreover, we are looking for a small-scale JSP server that requires at best no configuration at all. Apache's Tomcat JSP server satisfies these requirements in addition to not requiring licenses for its redistribution and use. Alternatively, the clients may elect to use their own JSP web servers.
Besides requiring a web server, we also need an appropriate data source, for which we propose a small-sized database engine. Again, the clients are welcome to use an already existing database engine at their firm. As an alternative to a database, we could make use of flat files for data storage. However, this methodology requires some sort of data source server as well. At the very basic level of the flat file approach, each web request entails reading the contents from the pertaining files and possibly writing back to the file system as well. Understandably, this method is highly inefficient, especially for large file, and may easily result in corrupted data. For that reason, some type of data source server is necessary to ensure consistency and efficiency. This approach is not any different from using a database engine in the first place. Using an SQL database we can furthermore adhere to standard queries that simplify the development of the Java Server Pages. As before, we would like to pay special attention to platform independence when choosing a database engine. MySQL is a very popular and small-scaled database engine that exists for a variety of platforms, including Windows, Solaris, Linux, and many other flavors of UNIX. Because this database engine is a small-scale application, it requires very little configuration and is not bound to special hardware requirements, e.g. special hard drive partitioning, etc.
In order to use the database engine with JSP, a MySQL-JDBC driver is necessary as a third component. One such driver is the MM MySQL JDBC driver that requires no configuration at all. This driver is only necessary for clients that elect to use the MySQL database; clients that make use of a different database need to provide the appropriate JDBC driver.
Because this product is intended to be self-contained and independent of any globally central system, we are faced with the challenge of reaching the majority of clients by attempting to support the majority of platforms in the industry. The tools used are to support the following platforms: Windows 95/98/NT/2000, Solaris 2.7 and upwards (Sparc and Intel), and Linux. For each of these platforms, we are able to provide Java 2 SDK, which in turn is needed to run the Apache Tomcat JSP Server. MySQL, the proposed database for eVote is available for these three platforms, as well as for a multitude of additional platforms, including several flavors of Unix (Irix, SCO, AIX, HP-UX, FreeBSD) and MacOS X Server. However, it is highly unlikely that any of these platforms are used in the targeted industry for eVote, which is why it seems economically viable to support the above-mentioned operating systems.
For each platform, we will provide an installation script or setup program that will install MySQL, Tomcat, and the JDBC driver in a specified environment. This will include setting up the required connection for database access from the JSP scripts. Such information will be prompted for during the installation process.