Automated configuration of packaged web applications
Description of the project: web applications is an area in which Debian could do a lot better. Even most well-packaged web applications still require some manual steps for configuring a frontend web server and/or a database. The aim of this project is to improve a tool that operates one layer above the package manager, and that 1) can be used as a consistent interface to configure supported web applications; 2) can be extended by the packaged application themselves by providing some support files in the right location; and 3) requires no technical backgound to be used (i.e. is usable by end users). A prototype of this tool is being put together by the project mentor, and the students's goal during the program will be to add support for as many applications as possible.
Confirmed Mentor: Antonio Terceiro
How to contact the mentor: firstname.lastname@example.org, terceiro on IRC
Confirmed co-mentors: ...
Deliverables of the project: base tool to configure web applications, support for 2-3 popular web applications (each using a different technology to serve as example for other ones).
Desirable skills: Basic Debian packaging (i.e. modifying existing packages to include extra files), some scripting language experience (Ruby or Python or Perl or shell), a basic understanding of how web applications work, interacting with database systems.
What the student will learn: Debian packaging, configuration of web applications, practical tool development.
- The initial idea for the tool is that there will be a user interface where the user will select which application he/she wants, and provide some information needed to configure that application (i.e. domain name, path under the domain -- / or /myapp, etc). On the backend, there will be a mechanism that will apply a selected set of chef cookbooks, passing the information provided by the user, ir order to get the application installed and configured.
- The tool is being written in Ruby, and will use chef as a backend for applying configuration to servers.
- because those are the tools the project mentor is confortable with.
Please see /WarmUpTasks for a set of tasks applying students must complete before submission
Related projects, documents, talks:
Plinth seems to be a nice UI for dead simple management of servers. Probabaly it would be a good idea for this project to actually use Plinth as a UI.
For this project we will also need more research into other external non-distro web app packaging tech, in particular the various PaaS providers.