-
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.
Submit your proposal through the GSoC website:
Please have a look at the Pylons Project guidelines:
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.
Colander is heavily used by a few different projects that we care a lot about. Cornice and Deform are the first 2 that come to mind. Research will need to be done here to evaluate a path forward for the library. One option is to add support behind a flag in the 1.0 branch and then release a 2.0 branch where we switch the defaults. We would also warn users and work with Cornice and Deform to update their code to work with the 2.0 branch. There are several users who have tackled this problem in the linked issues and we would also probably to get some insights from them on their use-cases and solutions.
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
TryPyramid.com app for submitting and administering Powered by Pyramid and Extending Pyramid entries.
Resources:
Difficulty: medium
Required Skills:
- Pyramid
- Python
- Forms and validation (possibly Deform and Colander)
- Database and ORM (possibly SQLite or PostgreSQL and SQLAlchemy)
- Image manipulation (possibly Pillow)
- GitHub API integration
Mentors:
- Steve Piercy
- 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).
- Update related documentation and tutorials in Pyramid to reference the new cookiecutter.
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: easy
Required Skills:
- Python
Mentors:
- Steve Piercy
- 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