Differences between revisions 1 and 35 (spanning 34 versions)
Revision 1 as of 2015-03-18 15:47:24
Size: 3735
Editor: ?BrandonF
Comment:
Revision 35 as of 2015-03-25 03:49:20
Size: 8303
Editor: ?BrandonF
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
* '''Name:''' Brandon Fairchild  * '''Name:''' Brandon Fairchild
Line 7: Line 7:
 administration. I was a Google Summer of Code student last year on the Debian Continuous Integration Project. I have been involved in programming for the past six years. During that time I have programmed in C, Java, Python, Ruby, BASH scripting, and other languages. I have taught myself most of the languages that I know. Currently, I run Linux on all of my computers, specifically Debian. I am familiar with web development since I took some classes on the subject and practice it in my spare time and I have become familiar with databases such as MySQL and SQLite.  administration. I was a Google Summer of Code student last year on the [[http://ci.debian.net|Debian Continuous Integration Project]] and I have continued maintaining my code and adding new features as a member of the project team. I have been involved in programming for the past six years. During that time I have programmed in C, Java, Python, Ruby, BASH scripting, and other languages. I have taught myself most of the languages that I know. Currently, I run Linux on all of my computers, specifically Debian. I am familiar with web development since I took some classes on the subject and practice it in my spare time and I am comfortable working with databases such as MySQL and SQLite. I also host my own OwnCloud instance and web server on a Debian server at home.
Line 16: Line 16:
Presently, more applications are being moved to non self-hosted environments where control over a user's data may occur. Free software web applications have been created to allow users to self-host their web applications and give them more control over their data.
Line 17: Line 18:
The following will be done with this project: Unfortunately, although these services are available, non-technical users usually cannot have a good experience in getting these web services set up on their own systems in comparison to desktop applications. Many roadblocks exist for them, such as the information programmers and system administrators easily understand. This would include setting up the applications (installation, configuration, and/or databases), backups, and upgrading. This project aims to help fix this.
Line 19: Line 20:
 1. '''A tool for allowing 'userops' on a Debian system:'''
      * Web interface for the tool that allows installation of web applications by users less able to get it set up by themselves and manage upgrades and security.
      * Plinth looks like a good front-end interface for the tool.
The goal of this project is to create a tool that will run a layer above apt which will install and configure packaged web applications. This tool will be controlled by the end user through a web user interface to allow for easy installation and configuration of web applications on Debian systems. To accomplish this, the tool will need an easily understandable web UI and not require the end user to use a terminal.
Line 23: Line 22:
 2. '''Recipes for configuration:'''
    
The following will be accomplished with this project:
Line 26: Line 24:
 3. '''Documentation:'''  1. '''A tool that will allow 'userops' on a Debian system:'''
        * The tool will be controlled through a web UI presented to the end user
        * The web interface for the tool will allow for the installation of web applications by users less able to get it set up by themselves and manage upgrades and security.
          * The front-end of the tool will use Plinth for the UI
          * To install applications from this interface, the end user will simply select 'install' for the application they have selected

 2. '''Recipes for configuration:'''
      * Initially, the tool will support 3 popular web applications. Support will be included for OwnCloud or [[https://wiki.debian.org/Wordpress/|Wordpress]] (PHP), MediaGoblin (Python), and Redmine (Ruby, Rails)
        * These will serve as examples for future support of other web applications
      * The tool will run Chef to configure and install the packages with these recipes

 3. '''Patching of Debian packages'''
      * Some packages may need their config files externalized to /etc/<appname>/conf.d to prevent upgrades from breaking the configuration
        * This will be accomplished with patches to the Debian packages or the upstream project

 4. '''Documentation:'''
Line 32: Line 45:
 * Communicate with the initiative announced by MediaGoblin
 * Communicate with the maintainers of the packages that will be initially supported
  
by the tool
 * Communicate with the [[http://mediagoblin.org/news/userops.html|UserOps initiative]] announced by MediaGoblin 
   * http://lists.mediagoblin.org/listinfo/userops and #userops on irc.freenode.net
 *
Communicate with the maintainers of the packages that will be initially supported by the tool
Line 38: Line 51:
 * '''Benefits to Debian''': It will allow Debian users to be able to self host web applications that requires knowledge of
                            
system adminstration and web servers. This tool will simplify hosting these applications on Debian.
 * '''Benefits to Debian''': It will allow Debian users to be able to self host web applications that require knowledge of system administration and web servers. This tool will simplify hosting these applications on Debian.
Line 41: Line 53:
 * '''Deliverables''': A web interface tool allowing the installation of web applications, automated configuration of these
                      
applications, takes care of upgrades, and documentation.
 * '''Deliverables''': A tool that automates the installation, automated configuration, and upgrading of packaged web applications through a web interface presented to the user; code documentation.
Line 49: Line 60:
 ''' From now until community bonding:'''
  * Get familiar with Chef, Plinth, Debian packaging, and get a feel for building applications with the required technologies
  * Research more PaaS providers ([[https://www.heroku.com|Heroku]], [[https://bitnami.com|Bitnami]], etc.)

Line 50: Line 66:
  * Get more familiar with Chef and other technologies needed for this
  * Communicate with the mentor, Debian community, and others (MediaGoblin 'userops' list)
  * Continue any research needed with Chef, Plinth, Debian packaging, and other technologies needed for this project
  * Communicate with the mentor, the Debian community, and others ([[http://lists.mediagoblin.org/listinfo/userops|MediaGoblin UserOps mailing list]], the Debian webapps mailing list)
Line 55: Line 71:

 
  * '''May 25 - June 5'''
    * Work on the back-end of the automated configuration tool
  * '''June 6 - June 13'''
    * Write a Chef recipe module for a PHP web application (OwnCloud or Wordpress)
    * Test the application recipe/module and make it usable through the tool
    * Write any necessary patches for the package for config file externalization
  * '''June 14 - June 21'''
    * Write a Chef recipe module for a Python (MediaGoblin?) or another web application if it isn't packaged by then
    * Test the application recipe/module and make it usable through the tool
    * Write any necessary patches for the package for config file externalization
  * '''June 22 - June 25'''
    * Testing, TBD
  * '''June 26 - July 3 '''
    * '''Midterm evaluations''', testing, polishing, documentation work
Line 59: Line 87:
  * '''July 4 - July 12'''
    * Write a Chef recipe module for a Ruby web application (Redmine)
    * Test the application recipe/module and make it usable by the tool/daemon
    * Write any necessary patches for the package for config file externalization
  * '''July 13 - July 23'''
    * Get a server running for the web UI
    * Implement the web front-end with Plinth for easy installation and configuration of packaged web applications and hook it into the back-end / daemon
  * '''July 24 - July 31'''
    * Work on the any necessary UI changes and any backend improvements
  * '''August 1 - August 12'''
    * TBD
  * '''August 13 - August 20'''
    * Testing, polishing the function of the application, fix remaining bugs
  * '''August 21 - 27'''
    * '''Final evaluations'''
Line 60: Line 103:
'''AFTER GOOGLE SUMMER OF CODE'''
  * Continue the development, testing, and maintenance of the tool
Line 61: Line 106:
  * '''Final evaluations'''
Line 64: Line 108:
 * '''Other summer plans''': I have no other summer plans.  * '''Other summer plans''': I have no other summer plans. (although I am thinking about attending DebConf15)
  • Name: Brandon Fairchild

  • Contact/Email: csbit32 at gmail dot com, IRC: nerith on freenode/OFTC, Github: https://github.com/nerith

  • Background:I am a Computer Science student with an interest in free and open source software development and system administration. I was a Google Summer of Code student last year on the Debian Continuous Integration Project and I have continued maintaining my code and adding new features as a member of the project team. I have been involved in programming for the past six years. During that time I have programmed in C, Java, Python, Ruby, BASH scripting, and other languages. I have taught myself most of the languages that I know. Currently, I run Linux on all of my computers, specifically Debian. I am familiar with web development since I took some classes on the subject and practice it in my spare time and I am comfortable working with databases such as MySQL and SQLite. I also host my own ?OwnCloud instance and web server on a Debian server at home. I am the best person to work on this project because I understand what needs to be accomplished, have the skills that are needed, and I am willing to learn.


Project: Automated Configuration of Packaged Web Applications

https://wiki.debian.org/SummerOfCode2015/Projects/AutoConfigWebApps


Project Details

Presently, more applications are being moved to non self-hosted environments where control over a user's data may occur. Free software web applications have been created to allow users to self-host their web applications and give them more control over their data.

Unfortunately, although these services are available, non-technical users usually cannot have a good experience in getting these web services set up on their own systems in comparison to desktop applications. Many roadblocks exist for them, such as the information programmers and system administrators easily understand. This would include setting up the applications (installation, configuration, and/or databases), backups, and upgrading. This project aims to help fix this.

The goal of this project is to create a tool that will run a layer above apt which will install and configure packaged web applications. This tool will be controlled by the end user through a web user interface to allow for easy installation and configuration of web applications on Debian systems. To accomplish this, the tool will need an easily understandable web UI and not require the end user to use a terminal.

The following will be accomplished with this project:

  1. A tool that will allow 'userops' on a Debian system:

    • The tool will be controlled through a web UI presented to the end user
    • The web interface for the tool will allow for the installation of web applications by users less able to get it set up by themselves and manage upgrades and security.
      • The front-end of the tool will use Plinth for the UI
      • To install applications from this interface, the end user will simply select 'install' for the application they have selected
  2. Recipes for configuration:

    • Initially, the tool will support 3 popular web applications. Support will be included for ?OwnCloud or Wordpress (PHP), ?MediaGoblin (Python), and Redmine (Ruby, Rails)

      • These will serve as examples for future support of other web applications
    • The tool will run Chef to configure and install the packages with these recipes
  3. Patching of Debian packages

    • Some packages may need their config files externalized to /etc/<appname>/conf.d to prevent upgrades from breaking the configuration

      • This will be accomplished with patches to the Debian packages or the upstream project
  4. Documentation:

    • Documentation will be provided to allow others to test and use the tool
    • Documentation for non-technical users so that they can also understand the tool and how to use it
    • Show how to setup an instance of the tool for development purposes and usage
    • Detailed documentation on how the tool functions through the use of code comments and written documentation.
  5. Communicate with the UserOps initiative announced by ?MediaGoblin

  6. Communicate with the maintainers of the packages that will be initially supported by the tool


  • Synopsis: A tool will be created that will simplify and automate self-hosting of web applications on Debian systems.

  • Benefits to Debian: It will allow Debian users to be able to self host web applications that require knowledge of system administration and web servers. This tool will simplify hosting these applications on Debian.

  • Deliverables: A tool that automates the installation, automated configuration, and upgrading of packaged web applications through a web interface presented to the user; code documentation.


Project Schedule

[Note:] Code documentation will be done throughout the coding period.

BEFORE CODING PERIOD

  • From now until community bonding:

    • Get familiar with Chef, Plinth, Debian packaging, and get a feel for building applications with the required technologies
    • Research more PaaS providers (Heroku, Bitnami, etc.)

    Community Bonding:

    • Continue any research needed with Chef, Plinth, Debian packaging, and other technologies needed for this project
    • Communicate with the mentor, the Debian community, and others (MediaGoblin UserOps mailing list, the Debian webapps mailing list)

CODING PERIOD 1

  • May 25 - June 5

    • Work on the back-end of the automated configuration tool
  • June 6 - June 13

    • Write a Chef recipe module for a PHP web application (?OwnCloud or Wordpress)

    • Test the application recipe/module and make it usable through the tool
    • Write any necessary patches for the package for config file externalization
  • June 14 - June 21

    • Write a Chef recipe module for a Python (?MediaGoblin?) or another web application if it isn't packaged by then

    • Test the application recipe/module and make it usable through the tool
    • Write any necessary patches for the package for config file externalization
  • June 22 - June 25

    • Testing, TBD
  • June 26 - July 3

    • Midterm evaluations, testing, polishing, documentation work

CODING PERIOD 2

  • July 4 - July 12

    • Write a Chef recipe module for a Ruby web application (Redmine)
    • Test the application recipe/module and make it usable by the tool/daemon
    • Write any necessary patches for the package for config file externalization
  • July 13 - July 23

    • Get a server running for the web UI
    • Implement the web front-end with Plinth for easy installation and configuration of packaged web applications and hook it into the back-end / daemon
  • July 24 - July 31

    • Work on the any necessary UI changes and any backend improvements
  • August 1 - August 12

    • TBD
  • August 13 - August 20

    • Testing, polishing the function of the application, fix remaining bugs
  • August 21 - 27

    • Final evaluations

AFTER GOOGLE SUMMER OF CODE

  • Continue the development, testing, and maintenance of the tool


  • Exams and other commitments: I do not have any exams during the coding period.

  • Other summer plans: I have no other summer plans. (although I am thinking about attending DebConf15)

  • Why Debian?: Debian was one of the first Linux distributions that got me interested in Linux and free and open source software. It is one of my distributions of choice due to the stability and quality of releases. I want to give back to Debian for the value it has provided to me.

  • Are you applying for other projects in SoC? I am not applying for any other projects.