2014

These ideas were proposed for the 2014 Google Summer of Code

This is the list of project ideas proposed by the community for Plone's participation in Google Summer of Code 2014

Note, most projects do not require the candidate to know Plone already, but we do expect applicants to have started to learn about Plone before applying. The specific technologies required for each project are listed alongside the title and in the details for the idea.

Improved text transforms

(Python)

Summary

There is a system for converting data between mimetypes in Plone called portal_transforms. A previous GSoC project started a succesor codebase, itrequires integration into Plone and conversion of existing OOTB transforms.Some new transforms, like syntax highlighting and LaTeX would also be cool.

Implementation

This would continue on from plone.transforms as a core utility.

See Also

Skills

Python

Mentors

Any active core developer with assistance from Hanno

Aims

A working Plone using plone.transforms exclusively. This would target Plone 5 eventually, so backwards compatibility isn’t a big issue. We'd want someone really motivated to help push this project into the core.

Dexterity schema specification through HTML

(Python)

Summary

Dexterity content types are currently defined by a zope.schema based interface and/or an XML file. This is then used to generate a HTML form. This project would flip that around and take a HTML form definition and generate a dexterity type to back it.

Implementation

This would take a HTML5 form with supermodel hints in the data attributes of the form. It would need to be compatible with the other ways of generating dexterity types especially round-tripping TTW to the filesystem.

Specifically, it should also be possible to convert a pre-made dexterity form to a HTML page that would generate the same content type.

See Also

Skills

The Plone/Dexterity knowledge would be quite minimal as the supermodel package and associated code is quite clean and encapsulated. The documentation, however, is quite poor and a secondary objective would be to improve supermodel and autoform documentation.

Mentors

Somebody with good experience with Dexterity, such as a participant at the Emerald Sprint. Any Plone hard-hitter would be great, though.

Aims

Extension to supermodel and dexterity that works with its release schedule.

Content Drafts

(Zope, Plone, & Python)

Summary

plone.app.drafts allows content that hasn't been finished yet to be auto-saved to a special location so that if the user has an issue with their browser or connection it's not lost.

Implementation

Integrate and extend plone.app.drafts into Plone with support for Archetypes and Dexterity. The back-end support is pretty much there but it needs a UI and integration with content type frameworks.

See Also

Skills

Plenty of Python and knowledge of Zope. Experience in dexterity would certainly be helpful.

Mentors

Elizabeth Leddy, or any Plone core developer would be appropriate

Aims

Improvements of existing packages and PLIP for Plone 5

New theme pack

(HTML & JavaScript)

Summary

Diazo allows us to use HTML and Javascript mockups as themes relatively easily. We currently have very few good quality examples. This project would be to create HTML/JS themes for Plone which can later be converted to Diazo themes.

Implementation

This requires a series of zip files that contain working single-page HTML mockups that demonstrate the core Plone features. They should have support for portlets, a navigation bar, logo, etc.

Preferably these themes would have different colourways available, through compilation of LESS/SASS, as well as different styles for customers in different industries.

See Also

Skills

Javascript and HTML. No Python or Plone knowledge needed.

Mentors

Any front-end Plone developer.

Aims

Three or more themes to be packaged with the Unified Installer.

Better Microsoft/Open Office integration

(Python)

Summary

Sometimes, people prefer to work offline. We should optionally support editing content in Microsoft Word. One way to do that is to generate a protected document that acts like a form, and parse the form on upload/save to extract the data.

Implementation

It should be possible to launch a desktop application from within the CMS (external editor) and also to save or drag-and-drop a document onto the desktop for offline editing and later re-attachment. Ideally, this should work on collections of documents (e.g. a whole folder). For this to be seamless, we also need the ability to check in/check out and invoke workflow transitions from within the application, via a special menu.

Zope has limited support for this already, but it is buggy and very un-userfriendly. It may be a good starting point, though.

See Also

Skills

Python, word/openoffice scripting.

Mentors

Martin Aspeli is most interested, but he won't have time to mentor. He'd be a good product owner, with a generalist as the mentor itself.

Aims

An add-on product in the collective

WebODF support

(Python & JavaScript)

Summary

WebODF is a Javascript library that allows through-the-web editing of Open Document files possible. This would be an excellent addition to the Plone interface as a content type, allowing better collaborative document editing.

Implementation

A Javascript library that is licence compatible with Plone already exists. A new content type needs to be created that stores the ODF file, and a widget that displays the WebODF editor displayed. The display view should be the WebODF viewer. The type itself should act like a rich text object with a download option.

See Also

Skills

Python, Dexterity, Javascript

Mentors

Paul Roeland for the direction of the product and any Plone generalist for the code quality.

Aims

An add-on in the collective namespace.

Improvements to Patterns widgets

(HTML & JavaScript)

Summary

Patterns (and plone.app.widgets) is the new widget story for Plone that allows Javascript developers to create new widgets for Plone. There are some specific improvements that need to be made to the widget javascript:

Pick-a-date

Better keyboard-only-navigation of pick-a-date, with support for text-entry of dates and basic normalized, localized date parsing (using a wrapper around moment.js parsing). Recurrence-rule widget pattern, possibly based on work in plone.app.event? Add timezone picker based on select2 pattern as (a) distinct widget; (b) something that can be enabled as part of the date widget.

A "fullcalendar" replacement as a mockup pattern

Possibly based on D3.js and/or Vega; consumes mockup JSON calendar data irrespective of its source. Target deliverable would be pattern that consumes configuration options, JSON/iCalendar/xCal/hCalendar listings of event data and outputs weekly, monthly, or daily calendar (to time-scale) with ability to switch views without page reloads.

A subject/tags picker

Support for tree-like controlled vocabularies and/or ad-hoc keywords, and auto-complete; might re-use parts of related items widget; should support some eventual tool like possible successor ATVocabularyManager. Could use ICD.9, NAICS, IPTC, and other freely available vocabularies as data-sets for development.

Datagridfield

Something like the UI bits of collective.z3cform.datagridfield re-done using more modern code, look/feel, as a pattern.

Basic new widgets

color picker; slider/range input; likert-scale widget; add infinite scroll to Select2 pattern; location picker (search using map that pops up/down in overlay, gets normalized street addresses and/or geocoded latitude/longitude for pin); person-picker based on Select2 supports names/profile pictures; image-thumbnail picker.

Microformat support widgets

For use with TinyMCE 4 when editing rich text. e.g. an hCard entry form, a basic event entry form for (limited) hCalendar, a rel-license generator, location support for h-adr plus h-geo.

Implementation

HTML and Javascript mockups for the new widget designs, added to the mockups repository.

See Also

Skills

Javascript and HTML. No Python or Plone knowledge needed.

Mentors

Sean Upton (former GSoC) has expressed interest

Aims

A contribution to Plone core

Better helper packages for the security team

(Plone & Python)

Summary

There are two packages that are works in progress to manage security vulnerability notification. The first one is designed to integrate with plone.org (or any other website listing security vulnerabilities). This package needs finishing in order to make management of vulnerability publication for Plone easier. Part of that package provides a remote API for the other package which will run in Plone sites, to notify administrators of new problems.

Implementation

Much of this work was done in the San Francisco Conference Sprint and the Amsterdam Cathedral Sprint, but there are still features relating to notifying users and some display issues that need handling.

See Also

Skills

For the plone.org section: Dexterity content types, general Python development. For the client side: simple Plone development.

Mentors

Matthew Wilkes

Aims

A PLIP for inclusion in core ASAP and integration into plone.org

A new Plone message board

(Python, HTML, JavaScript & Plone)

Summary

Products.Ploneboard has been around since quite some time as the standard solution to build message boards in Plone. With dexterity and plone.app.discussion we introduced new technologies in Plone that should make it easy to re-build the Products.Ploneboard functionality from the scratch to write a future-proof, faster and more flexible solution for Plone.

Implementation

Copy the basic design of Ploneboard but update it to meet our current best practices and use the latest technology. A proof-of-concept implementation has already been implemented at https://github.com/tisto/collective.ploneboard

See Also

Skills

Python, HTML, JS and some minor Dexterity

Mentors

Timo Stollenwerk (former GSoC student)

Aims

Take over development of collective.ploneboard and make it a viable replacement for Products.Ploneboard

Updated version of Plone GetPaid

(Plone & Python)

Summary

GetPaid is a payment add-on for Plone that lets users mark pages as needing a subscription, or create basic web-shops. The current version is unmaintained and could do with being updated to work on the latest versions of Plone, and support for newer payment processors like Stripe added.

Implementation

The current version of GetPaid has been abandoned for years, there are reports it doesn't work on the latest version of Plone. You'll need to use the Plone migration guide to get it working, while testing migrations from old versions work correctly. That should be the first release of the product.

After that, you should start adding new features to GetPaid, such as ensuring Dexterity support, Stripe as a payment processor, etc.

See Also

Skills

Plone add-ons, Plone 3, Plone 4, Python, consuming APIs

Mentors

Any Plone generalist, with advice from David Glick

Aims

A new version of GetPaid.

git sync with plone.app.theming

(Git, Python, & Zope)

Summary

Currently there are two ways to develop themes for plone. Using eggs which requires full access the filesystem so has security implications for shared environments, or via zip files, which makes it hard to track versions and tedious to move to and from development, staging and production.

Implementation

The end result of this task would be to allow a developer to push a git repo with the same format as a diazo zip and have to appear in the theming control panel. Any changes they push happen to the theme live. If they decide to edit the theme via the theme editor then those changes are recorded back in git and can be pulled. If possible, the user should be able to switch branches easily in the theme editor and checkout multiple braches into different themes so they can test different branches at the same time.

The system should work with zeo, should be easy to install but doesn't have to be implemented using python inside Zope.

See Also

Skills

Knowledge of Git, a fair amount of Python and some basic Zope

Mentors

Dylan Jay, or any core developer

Aims

Probably a pull request to the theme editor for inclusion in a later version of Plone

PyPy support for Zope

(Zope & Python)

Summary

We would love to get Zope and Plone working on PyPy, not least for the performance improvements. We've started this work, but there are a fair few bits left that need significant work done.

Implementation

Firstly, you'll need to build a working buildout under PyPy and then work on making all tests pass. We have lots of branches that work under PyPy that are in progress, these will need to be extended and improved until they're at the state that they can be merged.

It's vital that the Zope codebase continues to run on Python 2.6 and 2.7, as well as this not interfering with the work on supporting Python 3.3

Skills

Very good knowledge of Python, use of the CPython API and PyPy is highly desirable.

Mentors

Matt Wilkes, David Glick, or any Zope core developer.

Aims

Pull requests for Zope.

Zope4: Remove medusa

(Zope, Plone, & Python)

Summary

Slow work has been happening to produce a newer version of Zope that's more modern. There are lots of GSoC sized projects. This one is removing the old HTTP server.

Implementation

There has been a HTTP server called Medusa shipped with Zope for a long time. This has been removed in a branch, but that may have been lost or bitrotted as it happened in a non-standard location. Remove this server and replace it with a WSGI interface. The publisher will need to be updated to handle this correctly.

Skills

Lots of Python and Zope core thing

Mentors

An active Zope core developer

Aims

A pull request for Zope

Zope4: Integrate WebOb

(Zope & Python)

Summary

Slow work has been happening to produce a newer version of Zope that's more modern. There are lots of GSoC sized projects. This one is removing the old HTTPRequest and HTTPResponse objects.

Implementation

Lots of Zope and Plone code relies on the HTTPRequest objects, but we want to be able to use more standard Python code, so we would like to replace them with WebOb. We might have to wrap WebOb with some extra methods to support the legacy code, but we should be able to move between the two within an application without worrying about compatibility.

Skills

Lots of Python and Zope core thing

Mentors

An active Zope core developer

Aims

A pull request for Zope