Ideas list, 2013
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.
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.
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.
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
Android Plone Application
Summary
The wordpress mobile app is a really, really cool idea. A plone version would be more difficult, as we have a more hierarchical content structure, unlike wordpress, but it should be possible to display content, notify of worklist additions, do workflow transitions and edit standard content. Advanced features would include exposing Plone events in the android calendar and exposing members as contacts.
Implementation
This would likely be a Davlik Java app, but other options may be possible – for example if it is possible to wrap python sensibly that would be nice, but it would need full API access so seems unlikely. There are also systems for deploying to multiple types of device, but pros and cons would need to be weighted. This would be a first-class android application, other options are possible, but remember iPhone applications are likely not possible due to licence restrictions.
Skills
Java and experience with android development are needed. Also, you don't NEED an android phone to do this project, but it would be helpful.
Mentors
MatthewWilkes is interested in this
Aims
A free and open source application on the android market.
Automatic theme conversion to a diazo theme
Summary
Funnelweb attempts to crawl a site and extract an existing sites content and import it into Plone. It leaves behind the theme. Work could be done to instead transform the old sites "theme" into an installable Diazo theme package as part of the same content migration process. This would result in a new plone site with the same content and theme as the original site. This would help provide less friction in the uptake of Plone.
Skills
Python knowledge, and XSLT/XPATH is an absolute must.
Mentors
Dylan Jay
Aims
A new third-party library or funnelweb enhancement
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.
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
Heads up display control panel
Summary
Drupal has this. We would love a control panel that gives a lot of info about a Plone site and grades it into Good, Ok, Bad. Such as caching, threads, login times of managers, etc, etc.
Implementation
A configlet that access many low-level Zope APIs, normal Plone APIs and system ones. Must work on Linux, OSX and Windows. A lot of the work here will be in talking to different people in the community to come up with recommendations and working out an API that can support the various things that need checking
Skills
Python, and you'll learn a fair bit of z3c form and writing platform independent code
Mentors
Any generalist, but Matthew Wilkes is particularly interested.
Aims
A core contribution and PLIP for Plone 5.
HTML5 offline support
Summary
A combination of HTML5 localstorage and javascript can be used to implement an “offline mode”, with changes stored up until the computer is back online. This would be interesting to integrate into plone as an add-on product, allowing content authors to beproductive offline (or on slow internet connections!)
It would need to be configurable with sensible defaults, so only the right content is cached offline. Integration with worklists and the workflow engine would be very useful.
Implementation
This would either be implemented using HTML 5 and SQLite. It may only be compatible with some browsers at this stage.
Skills
Javascript, Python, HTML5, SQL.
Mentors
Any all-rounder with knowledge of JS.
Aims
Support in core and a PLIP for 5.x
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
There are existing skeletons for this, started in 2011 at the Plone conference in San Francisco.
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
Standardise profile pictures support
Summary
Plone handles user portraits differently to other pieces of metadata. Any PAS plugin providing portrait images needs to monkey patch Products.PlonePAS. Prominent examples are Products.Remember or SQL/LDAP plugins.
Implementation
There is extensive information on the proposed implementation at https://dev.plone.org/ticket/12870
Skills
This will be a heavy Python task. You will be touching lots of parts of Plone's infrastructure to adapt to the new API you design. You will need to learn some low level Zope functionality to achieve this project.
Mentors
Jens Klein has done the most work on this so far.
Aims
Branches of core products for the framework team to review.
Plone Multilingual Babel View
Summary
Additional features for our new multilingual site editing's UI. Specifically, enabling users to see the canonical version of a plone content when you are editing. There are different aproaches of how to deal with this problem, overlays with original content, side-by-side view
Implementation
At the core level, this is just a simple browser view, but you will need to learn a lot about plone.app.multilingual to make sure it's performant, and you'll need to talk to a lot of users to make sure it's useful. Some kind of connector to allow using translation memories on editing would be an optional goal on this project.
Skills
Python, perhaps some jQuery
Mentors
Ramon Navarro Bosch
Aims
A pull request for plone.app.multilingual before it enters core
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
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
Automated screenshot generation for RobotFramework
Summary
Many plone products and themes have insufficient screenshots available, this project would create a library that automatically takes screenshots of Plone products that use Browser tests.
Implementation
Hook into the browser test system with zope.testbrowser and/or RobotFramework to get access to the connection to the server and intercept incoming requests. Use an open-source rendering engine like firefox's to render the page including images.
Skills
Python is a must, firefox/webkit is useful.
Mentors
Dylan Jay expressed interest in the past, a member of the CI team would be helpful
Aims
A new third-party library.
ReStructuredText-parser for Robot Framework
Summary
Robot Framework provides the easiest way to learn and write functional (Selenium) tests for Plone. Currently, Robot Framework tests can be written in separate text files or as embedded HTML tables. Implementing real Docutils-directives for Robot Framework would make it possible to embed Robot Framework tests into Sphinx-documentation and eventually use Robot Framework test (with Selenium) to embed screenshots into documentation.
Implementation
Currently, most Plone-related Robot Framework resources can be found at: https://ploneact.readthedocs.org/en/latest/ The current ReST-parser in Robot Framework is actually only a wrapper for the HTML-parser, but could still work as a starting point: http://code.google.com/p/robotframework/source/browse/src/robot/parsing/restreader.py Creating Docutils-directives is well documented, e.g. http://docutils.sourceforge.net/docs/howto/rst-directives.html
Skills
This is a pure Python project, no specialist Zope knowledge required
Mentors
Asko Soukka or any member of the CI team
Aims
A pull request for RobotFramework.
Robot Framework keyword library for zope.testbrowser
Summary
Robot Framework is currently the easiest way to learn and write functional Selenium tests for Plone. Robot is so much fun that it would be great to write all functional tests with it, but Selenium with real browsers is often frustratingly slow. When javascript is not needed, zope.testrunner should be much faster. It would be great if the two types of tests used the same API
Implementation
zope.testrunner library for Robot Framework could be written as a subset of Selenium2Library (all keywords that don't require javascript) so that developers need to learn only one set of keywords, and the library could also be tested with Selenium2Library. Also, zope.testrunner's API is mature enough that the result could be pretty long lasting.
Dummy example:
- https://github.com/plone/plone.act/blob/datakurre-testbrowser/src/plone/act/browser.py
- https://github.com/plone/plone.act/blob/datakurre-testbrowser/src/plone/act/tests/robot_browser.txt
Developer resources
- https://pypi.python.org/pypi/zope.testrunner
- http://rtomac.github.com/robotframework-selenium2library/doc/Selenium2Library.html
- https://github.com/rtomac/robotframework-selenium2library
- http://robotframework.googlecode.com/hg/doc/python/PythonTutorial.html
Skills
Python unittesting, exposure to web testing like Selenium and RobotFramework
Mentors
Asko Soukka or any member of the CI team
Aims
Probably an extension to zope.testbrowser or another product to wrap robotframework.
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.
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.