-
Notifications
You must be signed in to change notification settings - Fork 887
GSoC 2017
The Pylons Project encompasses all projects hosted at https://github.com/Pylons including the Pyramid web framework, webob WSGI request/response objects, the waitress WSGI server and the colander validation library.
Please have a look at the basic contributing guidelines for the project.
To chat with the Pylons Project mentors, please use the [email protected] mailing list, visible at https://groups.google.com/forum/#!forum/pylons-discuss or contact us directly in the #pyramid
channel on freenode.net.
- Bert JW Regeer (https://github.com/bertjwregeer, x58 on
#pyramid
) - Michael Merickel (https://github.com/mmerickel, raydeo on
#pyramid
) - Nejc Zupan (https://github.com/zupo, zupo on
#pyramid
) - Steve Piercy (https://github.com/stevepiercy, stevepiercy on
#pyramid
)
All projects require strong communication and Python programming skills.
Design a new theme in Sphinx for generating documentation of all Pylons Project projects.
Resources:
- See background in New Theme Requests and Style Guide Proposal.
Difficulty: easy
Required Skills:
- Restructured Text / Sphinx
- Python
- HTML / CSS
- Web design
Mentors:
- Steve Piercy
Add support to colander for serializing to native types instead of strings. Add examples of using YAML and JSON content with colander. Update deform to work with the new types.
Resources:
Difficulty: medium
Required skills:
- Python
- HTML forms
Mentors:
- Michael Merickel
Create a new example project that demonstrates how to use Pyramid as a simple REST backend with a single-page app that integrates with Angular or React. This project would contain a nodejs-based asset pipeline for building the single-page app and could integrate new features like hot reloading.
This project would require a very well-defined proposal to get off the ground including:
- The technologies used for the full stack (e.g. React + React Router + create-react-app, SQLAlchemy, Pyramid + URL Dispatch).
- The goal and features / capabilities of the website (e.g. view, create, edit, delete wiki pages).
An example proposal might be to convert the SQLALchemy + URL dispatch wiki project into a SPA. You could describe the features of this site as things like user management, adding and deleting wiki pages, etc. This project's main goal is not to build a full tutorial (although it is not out of scope). Some other example projects are things like https://github.com/Pylons/virginia and https://github.com/Pylons/shootout.
Difficulty: easy
Required skills:
- Python
- HTML / CSS / Javascript
Mentors:
- Nejc Zupan
- Michael Merickel
- Merge the three official cookiecutters into one cookiecutter to rule them all.
- Add option to select persistent storage (None for starter, SQLAlchemy, ZODB).
- Add option to select the version of Pyramid (1.8, master, and accommodation for future releases).
Resources:
- http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/project.html
- https://github.com/Pylons/pyramid-cookiecutter-starter
- https://github.com/Pylons/pyramid-cookiecutter-alchemy
- https://github.com/Pylons/pyramid-cookiecutter-zodb
- https://cookiecutter.readthedocs.io/en/latest/readme.html
Difficulty: medium
Required Skills:
- Python
Mentors:
- Steve Piercy
- Michael Merickel
Write a better loading system for configuration to replace PasteDeploy / ini files. This project is already underway but needs a motivated student to work through details and collaborate on a solution to loading arbitrary file formats into arbitrary applications.
Resources:
Difficulty: hard
Required skills:
- Python
- pkg_resources entry points
- YAML, INI, JSON file formats
Mentors:
- Michael Merickel
Add HTTP2 and SSL support to waitress. This involves vetting and incorporating libraries to implement HTTP2 and HTTPS support inside the waitress WSGI server. Step 1 is to add SSL support to waitress with ALPN negotiation that can be used to enable h2 (HTTP2). Step 2 is to implement HTTP2 support in waitress.
Resources:
- An issue exists in the waitress bug tracker that contains more information on what we'd like to see: waitress issue #86
Difficulty: medium
Required Skills:
- Python
- HTTP 1.1 and HTTP 2.0 protocols
- SSL / TCP sockets
- asyncore socket handling
Mentors:
- Bert JW Regeer
- Michael Merickel
Re-work the WebOb tests to remove the large mono-test suite that exists for webob.Request, and others, and properly unit test/functional test the various different parts. Test fixtures using py.test would also help improve the test suite, and would allow better verification of whether WebOb is behaving correctly.
Difficulty: easy
Required skills:
- Python
- Unit testing
Mentors:
- Bert JW Regeer
- Michael Merickel
Re-work and fix WebOb's Accept handling for languages. This work could also be extended to improving Pyramid's usage of webob for stronger accept handling support.
Resources:
Difficulty: hard
Required skills:
- Python
- HTTP specifications
Mentors:
- Bert JW Regeer
- Michael Merickel
Write tests and verify proper RFC handling of data in WebOb/Pyramid in requests/responses
Difficulty: easy
Required skills:
- Python
- HTTP specifications
Mentors:
- Bert JW Regeer
- Michael Merickel
WSGI middleware as part of WebOb. For example, handling Forwarded/X-Forwarded-For and others securely.
Resources:
Difficulty: easy
Required skills:
- Python
- WSGI middleware
- HTTP specifications
Mentors:
- Bert JW Regeer
- Michael Merickel
Re-work and fix WebOb's Range header handling to support alternate Range types. There is a lot of code that currently depends on the way that ranges are handled, the fix suggested in the PR associated with that issue does not work for most cases, and would break a variety of code in WebOb. Supporting this would make using the header for pagination possible, for example.
Resources:
Difficulty: medium
Required skills:
- Python
- HTTP specifications
- Webob internals
Mentors:
- Bert JW Regeer
- Michael Merickel
This benefits both WebOb and Python itself: WebOb makes heavy use of cgi.FieldStorage
for parsing POST, unfortunately there have been a variety of cases where cgi.FieldStorage
is lacking. We carry patches to fix certain behavior in Py3.x and Py2.7.
Resources:
Difficulty: hard
Required skills:
- Python
- HTTP specifications
- Form content types
- Someone with the requisite knowledge of the various RFC standards surrounding MIME encoding and a want to dive deep, fixing this and other issues for the Python stdlib would be fantastic, but it'll also be great for WebOb.
Mentors:
- Bert JW Regeer
- Michael Merickel