Ideas for Google Summer Of Code 2017

Greetings, Plonistas!

It's once again that time of year where we suggest ideas for students for the Google Summer of Code. It is also time for you to step forward and volunteer to mentor a Summer of Code student.

Ideas that have worked well in the past center on add-on improvements and core development tasks. Things that do not seem to work well are new APIs, developer tools, or community needs. It's best if an idea comes with clearly defined outcomes, such as an add-on release or a PLIP. You can find a list of ideas from last year's event at https://old.plone.org/events/summer-of-code/2016

For mentors, you need not feel that you have to be an expert in the code in order to provide mentorship. Mentors are there more to help students find the right questions to ask, where to ask them, and whom to ask them of. If you feel comfortable talking with other Plonistas and making introductions, mentoring is for you!

Please feel free to chime in here with ideas. Let's consider this a brainstorming location. Please do not critique individual ideas here in this topic. The discussion could get derailed by such activity.

Thanks very much for your attention, and your creativity!

Cris

1 Like

As someone who has benefited in numerous ways for over 15 years from the generosity of this community, and as a former Plone GSoC participant, I am willing to mentor this year.

Here are some topic ideas:

  1. JavaScript: form widgets and pattern improvements, in particular:
  • Data grid field replacement using patternslib, and possibly quite a bit of JavaScript to support doing a grid nicely without ugly cloning of first row (e.g. do the form rendering of the row in JS, support JS-digested supermodel XML for schema).

  • Taxonomy picker, tree based widget and ability to support some feature subset mimicking Products.ATVocabularyManager.

  • New harmonized date and date time widget, possibly using patternslib pattern as base instead of PickADate (via mockup); support keyboard navigability, and better cross-browser styling.

  1. TTW configuration tool for TinyMCE settings that would save multiple configurations for different named editing contexts.

  2. Generalized 2FA for Plone/PAS; take something like collective.googleauthenticator as an example, and try to write something pluggable that can support SMS verification code, Google Authenticator, Duo (at least as OTP, possibly supporting push).

  3. Improved navigation:

  • Global navigation configuration on context, allow for static global (top) navigation configured by content admins, not themers. E.g. suppose I am the content admin for a big site with a diverse user base; my site wants to limit the top navigation to the 3 most important of 12 folders in the navroot, while still showing all 12 in the left navigation. Moreover, I want 2 external links that open in new tab/window. One of my links needs an icon, so I need to be able to add this without asking a programmer or designer to edit the theme.

  • Portlet for most frequently visited items, using local storage to avoid unneeded storage in read transactions.

  1. Edit/add forms: save form POST content locally before submit, allow retry of failed save (edit: or even multiple offline saves when lack of successful connection is not a failure condition).

Sean

1 Like

Hi Chris,

I suggest to create an add-on able to turn any Plone site into a progressive web app so mobile users would have a better experience (including offline usage).
It would involve the Plone REST API, and it would be developped with Angular (2+) (so Ionic 2 could definitely be an option), and the experimental plone_client could be probably reused.

Wouldn't be great if the Barcelona PloneConf website was a PWA at the time of the conference? :slight_smile:

1 Like

I can also help mentoring and I have some ideas fo this year:

(I'll continue posting here as soon as I have more ideas.)

1 Like

Idea: A new JS editor for Mosaic, probably based in ReactJS or Angular2.

I would step in mentoring here.

If this is a thing I would assemble a feature list based on what we have, ideas provided by the community and esp @vangheem, @datakurre, @ramon and some others and my experience.

1 Like

3 posts were split to a new topic: New Mosaic Editor needed?

I'd like to see the customisation of search and listings built into mosaic and therefore plone. It's a very common need and should be something an end user can do without templates or coding (for most common cases). Over the last year there have been many postings of new users trying to achieve this and being told to use jbot etc.

I've done so experiments to show how this could work - https://github.com/plone/plone.app.mosaic/issues/239.

This would effectively replace the functionality of eea.facetednavigation, a very popular plugin.

I'd be willing to mentor.

For those interested it would work like this

  • users create insert a "repeat tile" into a mosaic page
  • they define the criteria (just like a collection)
  • they can pick from several predefined repeat layouts OR
  • drag in column tiles inside the repeat tile using mosaic to rearrange and customise the looping part of the repeat part of the listing.
  • they an also use search tiles to make any page into a search rather than a collection.

Is it too early for a student willing to participate in the program to start discussing ideas here? Thank you.

If you have ideas, post them!

Something that would be really cool to do would be to reimplement the toolbar with some modern JS framework and being powered by plone.restapi so that these two tickets would be closed:

So in short: make the toolbar easy to configure TTW and easy to extend with add-ons.

Bonus points would go if the end result is a complete self-contained CSS and JS that can be manually enabled at will (i.e. with barceloneta backend.xml) so that a logged in user would only need to have the anonymous JS+CSS bundle plus this minimal toolbar bundle, only when going to folder contents or the edit views the full mockup and what not should be loaded.

I could try to co-mentor that, although I'm not so sure if I can be a good fit for mentoring.

Welcome to the discussion, @catalincraciun Please feel free to chime in. We are not yet at the point of fleshing out any of these ideas in depth, but we'd love to hear what you have to say!

Remember, @gforcada, mentoring is primarily about helping the GSOC student to communicate with the community. You'd be wonderful at that. You know who to approach for any given question, and you are yourself well known and respected. We'd love to have you mentoring.

1 Like

@seanupton, @jensens, @gforcada, @djay, @ebrehault, @hvelarde. I'm enjoying these ideas a great deal so far. I'd love it if each of you could take a stab at creating a more in-depth write-up of your ideas in the form suggested by our listing of ideas from last year: https://old.plone.org/events/summer-of-code/2016

In particular, think about the headings and filling in some details for each:

  • Summary - describe the idea as succinctly as possible
  • Implementation - what parts of Plone would need to be changed, what would need to be built/added/altered to achieve the goal (in a broad sense).
  • Skills - what skills will be especially important to a GSOC student if they want to succeed at this task? What will they need to know coming in?
  • Mentors - who would be a good fit for mentoring this task, if it isn't you? Each task should list at least two mentors (one to be a primary, one a backup)
  • Aims - what will be the specific outcomes of this work? A PLIP? A new add-on? A pull request?

You can email these to me directly, or start a new topic with your idea listed (perhaps with the "development" tag).

Thanks! And keep the ideas coming!

1 Like

@seanupton, @jensens, @gforcada, @djay, @hvelarde, I've gotten a more detailed writeup of Eric's ideas from him, but none from any of you. Could you please take a few minutes to flesh each idea out a bit more for me? Thanks very much.

do we have a deadline?

Some ideas:

improvements in how Plone shows available themes from a central theme repository (e.g. on plone.org) in a site and lets an admin install themes directly from that gallery

Summary: out of the box Plone should make it easy for an admin to install new themes

Implementation: the theming control panel should be enhanced to include a gallery of compatible Plone themes retrieved from a central theme gallery possibly on Plone.org. Each theme in the gallery should be displayed using a preview image, description the theme (Plone version compatibility, responsiveness, author, last modified date, license/fee) and an "Install" button. Clicking the Install button causes the theme's zip file to be uploaded to the Plone site the same way the "Upload Zip" button works in the theming control panel. Will require collaborating on the design and implementation of the Plone.org theme gallery.

Skills: Python, design, HTML, CSS, collaboration

Mentors:

Aims: initially a new add-on (e.g. collective.themeinstaller), eventually a PLIP

new Plone 5 themes

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 http://docs.diazo.org/en/latest/

Skills: Javascript and HTML. No Python or Plone knowledge needed.

Mentors:

Aims: Three or more themes to be packaged with the Unified Installer or added to the coming Plone.org installable theme gallery.

a theme converter, that can take HTML/CSS themes built for (say) WordPress and turn them into Diazo Plone themes

Summary: Plone's Diazo theming engine makes it much easier to apply pre-built themes (Wordpress, Themeforest) but it still requires manual labour. A conversion tool that can map common Plone content elements into Wordpress or Themeforest themes would make it even easier.

Implementation: Select a set of Wordpress or Themeforest themes with commonalities, and write Python software that generates rules.xml to map Plone content into those common theme elements. The input would be the Wordpress or Themeforest theme files (possibly in zip form), and the output would be a Plone Diazo ZIP file. An intermediate component may be needed to assist in mapping content to theme elements, so at least some kind of user interaction, if not full blown GUI, might be needed.

Skills: Python, XSLT, HTML, CSS

Mentors:

Aims: an installable (via pip or buildout) theme mapping tool

a responsive compliance theme checker

Summary: the built in Barceloneta theme for Plone 5 is responsive, but changes to the theme or new themes applied to Plone can result in reduced responsiveness. Plone needs a tool to identify non-responsive theme elements.

Implementation: identify responsive analysis services or software, allow invocation on a per-item or entire-site basis, and package them as a built in Plone tool or perhaps as a standalone tool.

Skills: Python, HTML, CSS, Plone

Mentors:

Aims: a Plone add-on or an installable tool (via pip / buildout)

a built-in accessibility compliance checker

Summary: 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 (even an entire site) that identifies accessibility issues.

Implementation: identify viable external accessibility compliance services or software, allow invocation on a per-item or entire-site basis, and package them as a built in Plone tool or perhaps as a standalone tool.

Skills: Python, HTML, CSS, Plone

Mentors:

Aims: a Plone add-on or an installable tool (via pip / buildout)

upgrade Plumi or components of Plumi to Plone 5 (ie. make a "private YouTube" distribution of Plone 5)

Summary: plumi.org is a private YouTube distribution based on Plone 4. Upgrade it to work with Plone 5.

Implementation: decide which Plumi components need to be upgraded to Plone 5; some of them may not be needed if there is an equivalent in Plone 5. Migrate Archetypes to Dexterity. Integrate Mosaic. Replace Plumi components with available new add-ons.

Skills: Python, Plone

Mentors: Anna Helme @ plumi.org

Aims: a new Plumi 5 distribution of Plone

an add-on to integrate SugarCRM with Plone

Summary: Implement a CRM (customer/client relationship management) add-on for Plone by integrating Plone with SugarCRM

Implementation: Identify ways in which SugarCRM data can be viewed, created, edited, deleted from Plone; identify ways in which SugarCRM actions can be initiated from within Plone; create shared PAS authentication plugin so Plone and SugarCRM can share users, groups, and permissions.

Skills: Python, Plone

Mentors:

Aims: a Plone add-on that integrates SugarCRM; ideally a full standalone distribution of Plone via Ansible Playbook that installs a working integrated Plone/SugarCRM system

an add-on to integrate Odoo (CRM) with Plone

Summary: Implement a CRM (customer/client relationship management) add-on for Plone by integrating Plone with Odoo

Implementation: Identify ways in which Odoo data can be viewed, created, edited, deleted from Plone; identify ways in which Odoo actions can be initiated from within Plone; create shared PAS authentication plugin so Plone and Odoo can share users, groups, and permissions.

Skills: Python, Plone

Mentors:

Aims: a Plone add-on that integrates Odoo; ideally a full standalone distribution of Plone via Ansible Playbook that installs a working integrated Plone/Odoo system

an e-commerce add-on for Plone (bda.plone.shop enhancements?)

Summary: Create a Plone shopping add-on or help improve https://github.com/bluedynamics/bda.plone.shop

Implementation: identify possible enhancements to https://github.com/bluedynamics/bda.plone.shop in collaboration with maintainers. Analyze other shopping cart systems (e.g. Shopify) and identify features that could be included in bda.plone.shop. Possibly build a Shopify integration for Plone.

Skills: Python, Plone

Mentors:

Aims: create a nicely featured Plone shopping cart add-on with future maintainability.

drop-in authentication for Facebook and Twitter logins for Plone (may already be done)

Summary: almost everyone uses Facebook and/or Twitter; Plone should come ready to enable Facebook and Twitter logins

Implementation: check which existing PAS plugins work with Facebook and/or Twitter; enhance as needed (e.g. new control panel options)

Skills: Plone, Pluggable Authentication System (PAS), Facebook/Twitter authentication

Mentors:

Aims: PLIP so Plone ships with Facebook/Twitter logins

an add-on listing for Plone (see @Alexander_Loechel's work so far on https://github.com/plone/ploneorg.addonlisting)

Summary: make an improved add-on listing gallery for Plone.org

Implementation: complete https://github.com/plone/ploneorg.addonlisting and possibly extend with voting/commenting

Skills: Python, Plone, usability, HTML/CSS

Mentors:

Aims: make it easy for Plone.org visitors to view all Plone add-ons and sort by rating/recommendation

an add-on for theme galleries for Plone.org

Summary: make a gallery for Plone.org of installable Plone themes

Implementation: allow Plone.org to store installable themes or to store "links" to installable themes (e.g. on GitHub), along with preview images, creator/maintainer contact information, links to related themes, categorized themes. Make it look like Wordpress or Themeforest's theme galleries, or like the iOS App Store. Collaborate with the Plone theming control panel enhancement that will let Plone sites display the contents of this theme gallery.

Skills: Python, HTML, CSS, usability

Mentors:

Aims: create and deploy the central Plone.org theme repository that can be used by people and Plone sites.

a custom bridge between IRC, Slack, and Gitter

Summary: Plone uses primarily three chat services. We would like to have a bridge service similar to sameroom.io that synchronizes messages across all three services.

Implementation: We currently have the use of a few sameroom.io bridges free of charge, but the way that messages appear on services other than the originating one is suboptimal. e.g. a Gitter message bridged to IRC looks like [tkimnguyen (tkimnguyen)] the message goes here

Skills: Python, IRC, Slack, Gitter, API

Mentors:

Aims: create a cleaner, free bridging service for Plone that works better with each chat service

integration of Plone with Discourse forums

Summary: Implement a discussion forum add-on for Plone by integrating Plone with Discourse

Implementation: Identify ways in which Discourse data can be viewed, created, edited, deleted from Plone; identify ways in which Discourse actions can be initiated from within Plone; create shared PAS authentication plugin so Plone and Discourse can share users, groups, and permissions.

Skills: Python, Plone

Mentors:

Aims: a Plone add-on that integrates Discourse; ideally a full standalone distribution of Plone via Ansible Playbook that installs a working integrated Plone/Discourse system

enhancements to Quaive.com social intranet

Summary: enhance Quaive in collaboration with Quaive maintainers

Implementation:

Skills:

Mentors:

Aims:

add-on for Plone that alerts site admins that their site has available upgrades (for Plone core, for add-ons, for security fixes)

Summary: Improve the quality and security of all Plone sites by alerting site administrators in the Plone UI if their version of Plone is out of date, or has available security fixes, or if their add-ons have available version upgrades.

Implementation:

Skills: Plone, usability

Mentors:

Aims: Make it obvious and easy for Plone site administrators to stay aware of desirable and critical software upgrades.

an add-on integrating Plone with MailChimp

Summary: Implement a mailing list add-on for Plone by integrating Plone with MailChimp

Implementation: Identify ways in which MailChimp data can be viewed, created, edited, deleted from Plone; identify ways in which MailChimp actions can be initiated from within Plone; create shared PAS authentication plugin so Plone and MailChimp can share users, groups, and permissions.

Skills: Python, Plone

Mentors:

Aims: a Plone add-on that integrates MailChimp; ideally a full standalone distribution of Plone via Ansible Playbook that installs a working integrated Plone/MailChimp system

#a distribution of Plone that makes setting up "mass" Plone site hosting easier / automated: signup, quotas, payment status, hosting level (free, paid, etc.)
Summary: Plone already makes it easy to host many sites using just one install, but we also want to make it easy for someone to host many Plone sites for clients.

Implementation: design a list of "hosting" features related to new client registration, billing, sizing, quotas, Plone site provisioning, theme installation, add-on installation.

Skills: Plone

Mentors:

Aims: create the godaddy of Plone hosting

an enhanced theming editor that lets you drag & drop elements around, a la wix.com

Summary: the current Plone theming control panel allows you to create XSLT rules with a clickable tool, but everything else requires editing text files (HTML, JavaScript, CSS, LESS, SASS, etc.). This new add-on or enhancement to plone.app.theming will provide a drag and drop UI to let someone visualize what the theme will look like when applied to their real site content and will let them move elements of content around to customize/modify their theme.

Implementation:

Skills: HTML, CSS, JavaScript, XSLT, usability

Mentors:

Aims:

Something based on Rapido - new training?

Summary: make Rapido more understandable and immediately useful to new power users

Implementation:

Skills:

Mentors:

Aims: improve Plone's "through the web" hackability story

#An add-on to give contextual help throughout a Plone site
Summary: add contextual help buttons on major Plone editing UI features

Implementation: identify the Plone editing/management UI elements that should have contextual help attached. Design the contextual help framework so that it is easy for developers to hook contextual help to existing and new editing and management controls. Make contextual help multilingual. Allow contributions of contextual help messages and images.

Skills: usability. Python, HTML, CSS

Mentors:

Aims: make Plone even easier to use without having to read documentation

1 Like

We are busy here with Alpine City Sprint, is there a due date?

Also, I'm volunteering to be a mentor.