Skip to content
Steve Piercy edited this page Mar 14, 2017 · 27 revisions

About the Pylons Project

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.

Getting Started

Please have a look at the basic contributing guidelines for the project.

Contact info

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.

Possible mentors

Ideas

All projects require strong communication and Python programming skills.

Pylons Project organization

Documentation Themes

Design a new theme in Sphinx for generating documentation of all Pylons Project projects.

Resources:

Difficulty: easy

Required Skills:

  • Restructured Text / Sphinx
  • Python
  • HTML / CSS
  • Web design

Mentors:

  • Steve Piercy

Colander and Deform

Colander Serialization

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

Pyramid

A SPA example project

Create a new example project that demonstrates how to use Pyramid as a REST backend for a single-page app that integrates angular or react. This project would also contain a node-based asset pipeline for building the app and could integrate new features like hot reloading.

Difficulty: easy

Required skills:

  • Python
  • HTML / CSS / Javascript

Mentors:

  • Nejc Zupan
  • Michael Merickel

Config file loading

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

Waitress

HTTP2 and SSL support

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

WebOb

Test suite

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

Accept handling

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

RFC Conformance and Verification

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

Proxy hardening / support

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

Range header handling

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

Improved form handling

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