GSOC 2016 Project Ideas: Difference between revisions
From Joomla! Documentation
Puneet.0191 (talk | contribs) |
Anabarcellos (talk | contribs) adding extension ideas |
||
| Line 500: | Line 500: | ||
---- | ---- | ||
====Project X: | === Extension Ideas === | ||
====Project X: Larger Joomla ACL publication ==== | |||
<table border="0" style="width:100%"> | <table border="0" style="width:100%"> | ||
| Line 507: | Line 510: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Add to new levels publishing stream: author, reviewer, publisher, supervisor. Where you can determine the profiles, according to the category of the content. essential tool for large projects where there are various teams and responsibilities.</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 515: | Line 518: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>1. A publishing stream screen, linked to categories (com_categories)<br> | ||
2. Adding action buttons Approve / Review<br> | |||
3. Flag for the backend module, to-do items for review / approval, according to the user profile | |||
</td> | |||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 523: | Line 529: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>php, oo, javascript</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 531: | Line 537: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Medium</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 539: | Line 545: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Roberson Augusto</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 546: | Line 552: | ||
---- | ---- | ||
====Project XI: | ====Project XI: Recording actions logs, accessible by super admin ==== | ||
<table border="0" style="width:100%"> | <table border="0" style="width:100%"> | ||
| Line 553: | Line 559: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Store the tasks performed by any user, informing those who did, where did when did and what made within the project.</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 561: | Line 567: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>A component to map The Croods within the CMS, with filters by date, extension and user</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 569: | Line 575: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>php, oo, javascript</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 577: | Line 583: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Medium</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 585: | Line 591: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Emerson Rocha</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 591: | Line 597: | ||
[[Image:Gsoc2016.png|50px|center]] | [[Image:Gsoc2016.png|50px|center]] | ||
---- | ---- | ||
====Project XII: | ====Project XII: Double marking position for modules ==== | ||
<table border="0" style="width:100%"> | <table border="0" style="width:100%"> | ||
| Line 598: | Line 604: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Allow a module to be used in two or more menu items, but in different positions. often módulso need to be duplicated in order to be used in more than one menu item and / or home site. allowing tow module and position + menu reduce the amount of unnecessary duplication</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 606: | Line 612: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Option interface to change the position, the selected menu item</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 614: | Line 620: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>php, oo, javascript</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 622: | Line 628: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Medium to hard</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
| Line 630: | Line 636: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td>Julio Pontes</td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
[[Image:Gsoc2016.png|50px|center]] | [[Image:Gsoc2016.png|50px|center]] | ||
---- | ---- | ||
[https://groups.google.com/forum/#!forum/jgsoc-2016 For more information please see this mailing list discussion] | [https://groups.google.com/forum/#!forum/jgsoc-2016 For more information please see this mailing list discussion] | ||
Revision as of 23:00, 20 February 2016

Welcome to GSoC 2016 Ideas Page
Welcome to the Joomla! Google Summer of Code (GSoC) 2016 project ideas page. As we move forward with the 2016 version of the Joomla! GSoC, we will post ideas that have been submitted to the GSoC Team below.
Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!
If you are interested in participating as a student please review the materials on applying that are available at Google. We strongly encourage you to ask questions about process and ideas on our joomla-gsoc mailing list.
Guidelines for sending proposal are present on our GSoC Home Page
Find examples of other years at https://docs.joomla.org/GSOC_2014_Project_Ideas
Idea Pool
Joomla CMS Ideas
Project I: Improved multi-lingual content management
| Project Description: |
|---|
| The idea is that when users want to translate content items on a multi-language site, they can have the articles side-by-side (dual-pane). This way you don't have to switch back and forth between articles. Respect also the ACL settings. So someone assigned for Dutch cannot translate any French documents for example. |
| Expected Results: |
|---|
| A dual-pane translation screen An ACL setting for allowing access to language based articles |
| Knowledge Prerequisite: |
|---|
| PHP, Joomla CMS multi-lingual system, JavaScript, Joomla ACL |
| Difficulty: |
|---|
| Medium to Hard |
| Possible mentors: |
|---|
| Jean-Marie Simonet, Achal Aggarwal |

| Brief explanation: |
|---|
| There is currently no easy way to share a draft version of an unpublished article with people who do not have Administrator access. This project would add elements to the Articles: Edit user interface that would support the generation of a shareable link that would allow those with the link to view a draft version of an article. This project would be a complete new feature that could be merged into Joomla 3. |
| Expected Results: |
|---|
| The details of the user interface would be subject to change/discussion, but could look something like the following:
A new "Save as Draft" toolbar button on the Articles: Edit page. When clicked the article will be saved as a draft in the content version history. The version history page will need to be modified to show this special version of the article. A new "Share" toolbar button on the same page. When clicked, the draft version of the article opens in a new tab with a special URL which can be copy-pasted so that the draft may be shared prior to publication. Bonus points for adding a "Preview" toolbar button that will open a new browser tab with a preview of the article currently being edited, without needing to save the article first. Code must be accompanied by documentation in the form of wiki pages and full help screens. Code must be accompanied by appropriate tests. |
| Knowledge Prerequisite: |
|---|
| PHP, Joomla CMS |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| NA |

Project III: Administrator Menu Editor
| Brief explanation: |
|---|
| This has been discussed at some length here: https://issues.joomla.org/tracker/joomla-cms/5492 |
| Expected Results: |
|---|
| An appropriately coded extension that could be merged into Joomla 3.x.
Code must be accompanied by documentation in the form of wiki pages and full help screens. Code must be accompanied by appropriate tests. |
| Knowledge Prerequisite: |
|---|
| PHP, Joomla CMS |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| Tharuna Balaji |

Project IV: Embedded Content Done Right!
| Brief explanation: |
|---|
| Develop a unified framework for adding any form of embedded content. A standardised syntax for embedded content tags would be used to call a content plugin that would parse the tag and call plugins in a new embed group to return the appropriate embed code. This builds on the idea of oembed(http://oembed.com/) but with the capability of overcoming the problems of invalid content associated with some oembed providers. It is not restricted to oembed providers and can be used to embed any kind of content for which an embed plugin can be written. Support for new data sources can be added by writing an embed plugin, making it easy for site builders to integrate new embed sources to their sites. We would gain a powerful, extendable method of embedding content anywhere that supports content plugins. |
| Expected Results: |
|---|
| An appropriately coded set of plugins that could be merged into Joomla 3.x, including a selection of embed extensions for popular services such as YouTube, Vimeo, Slideshare, Twitter, Facebook, MediaWiki, etc.
Bonus points for writing a JavaScript extension for TinyMCE to make it even easier to embed content. Code must be accompanied by documentation in the form of wiki pages and full help screens. Code must be accompanied by appropriate tests. |
| Knowledge Prerequisite: |
|---|
| PHP, Joomla CMS |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| Ashwin Date, Ashan Fernando |

Project V: NoSQL Database Driver (Redis, MongoDB)
| Brief explanation: |
|---|
| The goal of this is project is to add a lightweight database driver for the most commonly used NoSQL databases (Redis, MongoDB) to the Joomla CMS, and not to write yet another ORM, that is outside the scope of this project dued to the 8 weeks timeframe. |
| Important Links: |
|---|
| The original pull request: “implementation of Redis caching” https://github.com/joomla/joomla-cms/pull/3615 merged on Joomla 3.4 |
| An open pull request “Redis sessions handler” https://github.com/joomla/joomla-cms/pull/7659 |
| The PHP Driver https://github.com/phpredis/phpredis |
| Expected Results: |
|---|
| Starting from version 3.4, Joomla already has a Redis cache management.
The student is expected to extend the actual cache and session management allowing the storage with the NoSQL (mongodb, redis). As a wanted side effect, the code written (drivers) should became an easy starting point for developers, to write extensions that can store data on NoSQL databases. |
| Knowledge Prerequisite: |
|---|
| Joomla, PHP, SQL, Nosql, data model(relational, key-value, document), Redis, MongoDB, Github |
| Difficulty: |
|---|
| Medium to Hard |
| Possible mentors: |
|---|
| Nicola Galgano, Achal Aggarwal |

Project VI: Improve Acceptance Tests with PageObjects
| Brief explanation: |
|---|
| Joomla! currently does not have a viable system test coverage. That leads to regression bugs all the time. The project needs acceptance tests urgently. Using PageObjects as the main concept in this test class will enable us to re-use the tests in future versions, thus to provide better backward compatibility between major versions. |
| Expected Results: |
|---|
| Coverage of the backend pages with PageObjects, Coverage of core frontend pages with PageObjects, A reasonable coverage of the backend with system tests |
| Knowledge Prerequisite: |
|---|
| PHP, OOP. Basic knowledge about Docker and CodeCeption would be an advantage. |
| Difficulty: |
|---|
| Easy |
| Possible mentors: |
|---|
| Niels Braczek |

Project VII: Create Menu Item From Article or Other Component
| Brief explanation: |
|---|
| Return to the old option to Link Menu (V! 1.0.11) facilitating the creation of menus from the creation of an article. Bolder would allow this menu created from other components, such as index search, contact, and even extensions. |
| Expected Results: |
|---|
| 1. Could be a plugin, with an option to choose which parent menu item and the specific content would be linked.
2. To save the item, add the field to the menu. 3. There could be a inputText to enter the title menu |
| Knowledge Prerequisite: |
|---|
| PHP, OOP, Javascript |
| Difficulty: |
|---|
| Easy |
| Possible mentors: |
|---|
| Pedro Renan |

Project VIII: Browser Automated Tests for Joomla! CMS (covering Users and Content features)
| Brief explanation: |
|---|
| The idea behind the project is to create the system tests for joomla User Management and Content features(For Joomla 3.x). The suggested technology for developing the tests layer is the Codeception Open Source Testing Framework (more info at http://codeception.com).
Test will have to cover the User cases of: creating, editing, removing, publishing articles of content and being modified by different user roles. Also the student is asked to create the integration tests that links the Administrator, the Frontend (by creating menu items) and the Modules and Plugins applications that are related to the Users and Content Features. For example: create an article in frontend, listing all the featured articles, show the articles of an specific category or create a menu item that links to an article. Joomla is a Mobile Ready CMS, therefore the tests will have to cover different screen resolutions and the different positions of the elements. The student will have to study the old system tests structure built in the Nearsoft PHP Library and propose a new structure for testing the Joomla Core. The resulting tests need to accomplish the goal of being easily maintainable while being well architectured dividing the responsibilities in scenarios, Pages and Step objects. The mentors will provide the student with code samples that will help the student to achieve the mentioned goals. To read more about using Codeception with Joomla! Read here: https://docs.joomla.org/Testing_Joomla_Extensions_with_Codeception |
| Expected Results: |
|---|
| At the end of the project the student should create a Pull request against the Joomla-cms repository (https://github.com/joomla/joomla-cms) providing the system tests for the Users and Content features. |
| Knowledge Prerequisite: |
|---|
| PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML and basic Git usage.
Value will be given to these candidates that have basic understanding of Selenium, xPath, Codeception framework, Javascript and Knowledge on linux console and Docker Containers. Is a must for being a candidate for this project to proof that you have been able to run in your local machine the current Webdriver Test Suite. See instructions at https://github.com/joomla-extensions/weblinks#tests |
| Difficulty: |
|---|
| Medium to Hard |
| Possible mentors: |
|---|
| Javier Gomez, Yves Hoppe |

Project IX: One-click Multiple Images Adding Into Article
| Brief explanation: |
|---|
| Current workflow for adding images to article is costly for human time and efforts:
1. Before you start create article you have to create folder for new images in Media Manager. 2. At article creating screen you need to open extra window to upload images in necessary folder or in root of media folder. 3. You can upload multiple files here, but you can't paste more than one image into article, so if you have upload image in path like /2015/02/20/something - you have navigate into this folder again. And now multiple it on ~10 articles in day. |
| Expected Results: |
|---|
| One-click multiple images adding into article.
Image folders should be created automatically by template. And as result, end-users are not wasting time with files/folders/pop-ups juggling. |
| Knowledge Prerequisite: |
|---|
| Usability, user experience, programmer-free outlook on life. PHP, AJAX, Jquery, cross-browser JavaScript. |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| Abu Huraira Bin Aman |

Extension Ideas
Project X: Larger Joomla ACL publication
| Brief explanation: |
|---|
| Add to new levels publishing stream: author, reviewer, publisher, supervisor. Where you can determine the profiles, according to the category of the content. essential tool for large projects where there are various teams and responsibilities. |
| Expected Results: |
|---|
| 1. A publishing stream screen, linked to categories (com_categories) 2. Adding action buttons Approve / Review |
| Knowledge Prerequisite: |
|---|
| php, oo, javascript |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| Roberson Augusto |

Project XI: Recording actions logs, accessible by super admin
| Brief explanation: |
|---|
| Store the tasks performed by any user, informing those who did, where did when did and what made within the project. |
| Expected Results: |
|---|
| A component to map The Croods within the CMS, with filters by date, extension and user |
| Knowledge Prerequisite: |
|---|
| php, oo, javascript |
| Difficulty: |
|---|
| Medium |
| Possible mentors: |
|---|
| Emerson Rocha |

Project XII: Double marking position for modules
| Brief explanation: |
|---|
| Allow a module to be used in two or more menu items, but in different positions. often módulso need to be duplicated in order to be used in more than one menu item and / or home site. allowing tow module and position + menu reduce the amount of unnecessary duplication |
| Expected Results: |
|---|
| Option interface to change the position, the selected menu item |
| Knowledge Prerequisite: |
|---|
| php, oo, javascript |
| Difficulty: |
|---|
| Medium to hard |
| Possible mentors: |
|---|
| Julio Pontes |

For more information please see this mailing list discussion