The idea of this project is to enhance Seaside framework with automated tools, scripts and conventions in order to help people to develop simple web applications in Seaside in a much faster way.
Technical Details
Seaside is a powerful web framework, but in order to create a Seaside application, a developer must perform many manual steps.
Sails is an add-on for Seaside that will help reduce development time by automating these steps.
Sails will allow:
to easily connect to persistance layers (both OODBMS- and RDBMS-based)
one-step creation of components, including models and views.
easy creation of tests: unit tests, functional tests, performance tests etc.
simplified deployment and live updates of the application.
The development of Sails will be guided by the creation of one or more simple, CRUD-style test applications.
The project can be split into different subprojects that can be completed by a single student. This subprojects include:
Persistency: create an active record system. This would entail extracting Magritte descriptions from RDBMS tables and/or defining tables based on the description.
ActiveSupport: a port of Rails' ActiveSupport library. Includes sync with the Chronos-ST library. Part of the work for this could go directly into the base image.
Scaffolding: a scaffolding structure to automate menial tasks such as creation of component classes etc. Includes building a configuration and administration subsystem that simplifies Seaside's own system.
If you think there are other subprojects that can be extracted from this proposal, feel free to propose them.
Benefits to the Student
The student will learn how to manage different software systems such as Seaside, OODBMses, RDBMses and how to integrate them in order to create more complex systems. The student will also gain a deep knowledge of Seaside and its design, of the trade-offs involved in creating a complex application and/or a framework, and how to create a web application from its definition to its deployment.
Benefits to the Community
Having a package that simplifies the creation of Seaside-based web applications will help lower the barriers to entry for new Seaside developers and will be helpful in advertising Seaside and Squeak. It may also highlight possible areas of improvement for Seaside and Squeak.