If you are a university student interested in working on any of these projects we highly recommend applying for the program when the application process opens. The Plone community has a strong record of working with GSoC students and helping them succeed.
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. Applicants that submit bug fixes, even minor ones to add-on packages, are strongly preferred. The specific technologies required for each project are listed alongside the title and in the details for the idea.
Plone needs to have an easier way to customize the look of listing pages, such as those for search and faceted navigation. The end goal of this project is to provide an intuitive and flexible system for creating different kinds of listings and different kinds of search/faceted navigation pages in Plone. This could replace eea.facetednavigation, collective.listingviews, and even Plone's own search, advanced search and collections views.
This work is needed because for Plone websites customizing listing pages and creating new complex search pages are two of the most commonly requested tasks. It should be possible for a non technical person to achieve this task online with minimal training. By doing so we enhance Plone's reputation as being easy to customise and we can potentially expand its audience. For this reason this task is strategically important.
The plan as outlined in GitHub issue #239 is to make changes to mosaic first. Namely
- Inline tiles. The ability to drag tiles inside (and out of again) a rich text tile. This makes tiles more flexible because TinyMCE layout capabilities can be used in addition to the grid making more layouts possible. Stringing together small tiles for calculated values for example todays_date or last_author become possible TTW.
- Rework the existing listing tile so it appears as a richtext tile for customising the repeated block by arranging inline field tiles as needed. Adding a lead images to each item is as easy as DnD.
- Change mosaic so it can optionally work as a form. Various form tiles similar to what eea.facetnavigation has available.
- Installer such that you can optionally replace plones built in search and advanced search.
A successful GSoC student will require jQuery skills to work with the existing mosaic code base. It would also be good to have Python skills to work on the layer changes for inline tiles (but perhaps this could be done with someone else?)
Dylan Jay, Asko Soukka
PR to mosaic, p.a.tiles and associated dependencies.
(Plone & Python)
Strategically, good content import/export is important because
- it allows new users to get started quickly.
- It also helps overcome an obstacle when users expect a SQL database to be able to import and export from.
- It makes it easier for regular bulk uploads or syncs of content from external sources. It allows this for non technical users and non python developers.
The end goal is to make plone more approachable for webmasters which will in turn help grow the install base.
The aim would be a online UI which allows
- both CSV and JSON import and export of content (using seperate files for binary/content). CSV is included so non technical users can update metadata. Both formats will able to hold the same data, CSV will need to use quoted JSON for certain parts.
- It will allow for both object creation as well as finding and updating existing content via various unique attributes such as path or custom fields.
- It will work for metadata, content and binary content or just combinations of these (ie just metadata refresh if required).
- It should make it possible to export content and then reimport it into a new site with a different version such that almost all data is retained.
- Help when imports go wrong, e.g dry-run mode, reports on content created, skipped etc etc.
- Permissions and security to be respected. Lower roles can still use it just with content/fields they have access to.
It will be implemented as an add-on or extend an existing add-on, that can be incorporated into Plone as at a later date. collective.importexport is example of existing add-on that can be extended.
Mainly python. Some UX skills to help create an intuitive UI but this can be provided by the mentor.
Dylan Jay, Eric Bréhault
A new add-on and a PLIP to include this in core Plone.
PWA (progressive web apps) is an approach to building web applications that behave more like native mobile apps. For Plone, the goal of this project would be to allow administrators to turn any Plone site into a mobile progressive web app. This would improve the user experience for Plone on any mobile device: making it load faster, support offline access and in general feel more like a mobile app than a web site.
The objective is to develop an Angular 2 app that will implement the PWA behavior. It will retrieve the contents from the Plone site using the Plone REST API. The resulting JS bundle would be packaged for Plone into a basic add-on.
Eric Bréhault, Victor Fernández de Alba, Timo Stollenwerk
A new add-on.
A more harmonized date and date-time widget
An improved date/date-time widget might be based on the implementation in patternslib. It would support better keyboard input, text-only input, and improved styling across multiple browsers.
A replacement for the data-grid field
A Taxonomy picker
A tree based widget with the ability to support some of the features of Products.ATVocabularyManager. This would be of value in supporting selections from hierarchical vocabularies.
Sean Upton (former GSoC) and Franco Pellegrini
A contribution to the Plone core
(Zope, Plone & Python)
Currently, it is possible to import into Plone themes which are packaged as .zip files. Themes of this sort are easily found and may be readily adopted to Plone using the theme editor. However, in order to use them, several manual steps must be taken to adapt them to the Plone environment. This project would automate these steps, easing the path to theme development for Plone. At a minimum, this project would implement steps to:
- Automatically generate a theme manifest file describing the resources of the theme, if one were not already present.
- Automatically parse and adjust the
hrefattributes of tags within the theme HTML in order to fix them for a Plone environment.
Other steps may also be automated, but these would be an excellent first step.
Work for this project will involve updating and refactoring some of the code in plone.app.theming involved in the upload of theme packages in .zip format. It will involve writing Python and learning about the Zope and Plone layers involved in theme resources.
Python ability is required and a curiosity about Zope and Plone internals will be helpful
A PR for plone.app.theming
Plone allows users to compare different versions of their content (and revert to previous versions, if required). However, the user interface for this is very technical and of limited use to most end-users. This project is to replace the current way of viewing diffs with one similar to tools users may experience elsewhere.
The biggest improvement that needs to be made is to the diffing HTML text. The current view is very colorful but not particularly useful. The way that Wikipedia behaves in displaying changes would be a good source for influence in design, as would Microsoft Word's track changes feature.
A second focus is on fields which are not "inline-diffable". This means that the user must change to a poorly-formatted "code view" to see differences in these fields One possible approach to implementing this would be to re-use the UI of the edit form and highlight changes there.
Jens Klein, Hector Velarde
A pull request to be included in the next Plone release.
(Plone, Python, HTML, & CSS)
Out of the box, Plone 5 is WCAG 2.0 AA compliant. However, any changes to a theme, or any new theme applied to Plone can result in reduced compliance levels (sometimes severely so). Plone needs a tool to verify the accessibility compliance of one or more content items (or even an entire site) that identifies accessibility issues.
The W3C maintains a somewhat overwhelming list of Web Accessibility Evaluation Tools. The work would be to identify a viable service or software tool, allow a site administrator to invoke this tool on a per-item or entire-site basis, and package the work as an add-on ready to be installed.
Successful implementation will require HTML and CSS to create a compelling user experience, and some knowledge of Python and Plone in order to integrate the selected tool with existing Plone functionality.
A Plone add-on
Accelerated Mobile Pages are one approach to improving the performance of a website. Supporting AMP will help make Plone more attractive to end users who want the achieve the best possible load times for their pages. The goal of this idea is to increase support for AMP in Plone by extending and enhancing an existing add-on package.
The collective.behavior.amp package implements a behavior for Dexterity-based content types which adds an AMP HTML version of your content. Most of the newest mobile browsers will serve this version by default. Google will also link mobile search results to this version.
collective.behavior.amp currently supports metadata, related items (amp-related), social share (amp-social-share) and analytics (amp-analytics) components. We would like to increase support for other components including:
- ads (amp-ad and amp-sticky-ad)
- audio (amp-audio)
- comments (amp-form)
- image galleries (amp-carousel)
- tweets (amp-twitter)
- video (amp-video)
- YouTube videos (amp-youtube)
Integration with third party products could allow us to provide:
- polls (collective.polls)
- liveblogs (collective.liveblog)
- news articles (collective.nitf)
A series of pull requests on collective.behavior.amp each implementing a feature.
We love your own suggestions! Ask us at community.plone.org and we'll help you polish the idea into something we both love.
Tailor your idea to your own skills
Don't worry about this, at Plone we think it's our responsibility to find you the right mentor.
A core contribution or an add-on, most likely.