GSoC 2016 Web administration and process management for PyWPS

PyWPS is an implementation of OGC WPS standard on the server side, written in Python programming language. Since it's perfectly designed for programs and machines, humans need a user-friendly tool to view and control all processes.

PyWPS now works in the way, that you can send HTTP requests with an XML file as an input and you will get an output with an XML file or data immediately or after some time. The problem is, people cannot control and manage them.

The project idea aims to create a web application, where users and administrators control and manage all processes. I will use existing Flask application to extend functions and interface to be easily usable for people. The interface, with modern web development approach and use of multiprocessing Python library, is going to allow people add, pause, remove, view progress.

= Main goals specified by mentors =


 * Get PyWPS up and running and you will be able to run several asynchronous processes in your computer.
 * Find out, what is the python way to control (and if possible) in background running processes.
 * Create REST API for this controlling.
 * If there is time, create web UI.

= Repository =

Instructions of usage are stated in README on Github and change on the fly.

The main repository:

Forked PyWPS

Supporting repository:

Python process control example

Example of an application with PyWPS and Apache

= Week reports =


 * Sixth: http://gsoc-2016.jan-rudolf.cz/article/sixth-week-report
 * Fifth: http://gsoc-2016.jan-rudolf.cz/article/fifth-week-report
 * Fourth: http://gsoc-2016.jan-rudolf.cz/article/fourth-week-report
 * Third: http://gsoc-2016.jan-rudolf.cz/article/third-week-report
 * Second: http://gsoc-2016.jan-rudolf.cz/article/second-week-report
 * First: http://gsoc-2016.jan-rudolf.cz/article/first-week-report

= Timeline by proposal =


 * April 22 - May 23 (Before the official coding period)


 * Testing current implementation
 * With help of my mentor precisely define all goals and plan steps
 * Create subdomain on my website to document my progress


 * May 23 - June 27 (Official coding period starts)


 * Creating with the current implementation user-friendly web interface
 * Integrating current functionality into the web interface
 * Start to implementing new functions, mainly the process control


 * June 27 - August 8


 * Programming to meet all defined goals
 * Writing unit tests in the style of Test Driven Development
 * Documenting all code


 * August 8 - August 15


 * Integration tests
 * Solving conflicts with tests
 * Passing through the pull request process, resolving conflicts on the repository


 * August 15 - August 23 (Final week)


 * Review of code - make sure of code clarity
 * Review of documentation

Please understand, that summer semester ends in about a half of May and I've got finals until the middle of June, I have to be little/less active to finish all exams successfully. After exams, I can fully focus on the project (I don’t plan anything else) and work 8-10 hours per day.

= Student's Bibliography =

My name is Jan Rudolf, I am computer science student at Czech Technical University in Prague. I am very strong in web development, almost 10 years of experience, and I've got solid skills of algorithms and C/C++/Python programming from my university. I have never been involved in Google summer of code before. in 2016 is my first time.