Ideas list, 2014
This is the list of project ideas for Plone's participation in Google Summer of Code 2014. If you are a university student interested in working on these we highly recommend applying for the programme.
These ideas are guidelines only, please feel free to apply for any project you like. Get in touch with us on the core development mailing list.
If you aren't elligible for Google's Summer of Code programme, or the deadlines have passed, but still want to work on one of these project we'd be happy to arrange mentoring.
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
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
- https://github.com/plone/plone.transforms
- http://plone.org/documentation/kb-old/portal-transforms/tutorial-all-pages
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Your own idea
Summary
We love your own suggestions! Ask us on the plone-developers mailing list and we'll help you polish the idea into something we love.
Implementation
As long as it benefits the Plone community it can be anything. Most likely the majority will be Python and direct to Plone, but we will also accept Zope, ZODB, WSGI, etc.
Skills
Tailor your idea to your own skills
Mentors
Don't worry about this, at Plone we think it's our responsibility to find you the right mentor.
Aims
A core contribution or an add-on, most likely.