Welcome to the Joomla! Google Summer of Code (GSoC) 2009 project ideas page. As we move forward with the 2009 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Thanks!
The core polls extension has been removed from Joomla! 1.6. Develop a fully featured poll/survey suite that will allow relatively simple user polls and the collection of complex anonymized survey data authenticated against either the Joomla users database or an external database. Possibly look to  as a model or integration.
Right now we only have frontend editing for articles, there are a few improvements I can propose
Extend the template manager so that it providers an better environment for template creation and modification. Improvements might include:
Create a 1.6 Extension to flexibly manage workflow for com_content. Ideally it should be extensible to other components, but com_content should be used as the proof of concept. Work flow should manage the publication process, including assignment of editors or publishers to specific content items, notifications of relevant actions to specific individuals or groups, change of status to block author editing of published work.
As much as possible administrators should be able to construct their own work flows.
Create a 1.6 content versioning extension with the goal that this work could be integrated into the core Joomla CMS for future releases. The Page Versioning Extension will allow the ability for frontend and backend content users to be able to save and re-publish/revert previously saved versions of content items that they have access to.
Further user permissions could be introduced in order to restrict access to this overall feature.
Features could include a visual and html code difference between the current and previously saved versions, as well as general searching data such as dates and time of previous saved entries of that content.
Create a 1.6 Taxonomy extension with the goal that this work could be integrated into the core Joomla CMS for future releases. The Taxonomy Extension will allow the ability to organise content for classification, improving on the current Section and Categories classification.
Taxonomy is a vital feature of modern CMS solutions, evolving from the previous "pigeonholeing" of a content item. Full organisational structures and multi tagging of content could be included, including powerful search functions of content under those classifications.
Taxonomy is a missing feature in Joomla!, which another open-source competitor product currently offers. We have seen a number of opportunities when Joomla! misses out on being the chosen option for a CMS due to the lacking of this feature.
Keywords in articles are an important part of many Joomla! sites. They are used for page rankings but also can be used with Related Articles modules and component extensions. In this capacity, they provide a way to relate articles that is much more flexible and free-form than the built-in Section / Category / Article hierarchy.
Currently in Joomla!, keywords are entered when editing each individual article. This has several disadvantages, including:
To deal with these issues, a back-end Keyword Management extension is proposed. This extension would allow the following capabilities:
Currently in Joomla!, there are built-in Menu Items for list and blog layouts for Sections and Categories. However, the way a list of articles is selected is tightly bound with the way the list is displayed on the page. In theory, you should be able to have a list or blog layout that shows any selection of articles.
To provide this capability, an extension is proposed that would provide layouts similar to the current list and blog layouts. However, the extension would be designed so that the list of articles is provided by a plugin instead of being integrated into the layout. Example plugins could be provided to mimic the current Section, Article, and Front Page layouts. However, the power of this extension is that the user could add their own plugin that would provide a list of articles using any type of query. This list of articles would then feed into the built-in layouts provided by the extension to turn the raw article list into the desired layout.
Work has been started on this but the number of unit tests currently in use is small. We need to add many more unit tests. Also, currently unit tests are only able to be used for class methods. We have no way, for example, to test page layouts or module insertion into templates. Part of this project could be to research automated testing solutions to test the complete HTML code sent to the browser. This would allow end-to-end automated testing.
Write a test runner that makes it easy to run unit tests from a web browser. The existing unit test framework is based on running PHP from the command line. While this is essential for integrating testing into the build and release process, it's a barrier to using tests during development.
This project involves adapting web-based test runners provided by PHPUnit to support the "Joomla!" testing environment.
CiviCRM is a powerful constituent relationship management system designed for the not-for-profit/nongovernmental organizations. It currently integrates with Joomla! and the 2.2 version is native to Joomla! 1.5.
CiviCRM has a rich API only small parts of which are currently easily accessible from the Joomla! front end. Create a series of plugins that allows the flexible and highly integrated use of the CiviCRM API in Joomla Content, modules, and other core and non-core extensions (such as com_user, com_contact_diretory or calendaring components).
For this project the student should plan on interacting closely with both the Joomla! and CiviCRM teams.
Develop a suite of front end Joomla! 1.5 extensions (modules, plugins and a Joomla! style MVC front end component) for CiviCRM.
CiviCRM is a powerful constituent relationship management system designed for the not-for-profit/nongovernmental organizations. It currently integrates with Joomla! 1.0.x and 1.5 in legacy mode, and and the 2.2 version is native to Joomla! 1.5.
Thus far most functionality for CiviCRM in Joomla! has focused on the administrator. This project will focus on fuller development of the CiviCRM Joomla! front end.
This development might include modules, plugins, and a MVC front end component which will allow exposure of various CiviCRM APIs as well as allowing Joomla! users the ability to use template overrides and other ways of controlling design and functionality in ways they are familiar with.
The core of this project will be the completion of a Joomla! MVC front end component for existing front end functionality, the basic skeleton for which has been incorporated in CiviCRM 2.2.
Additional items might focus on modules and views to display information.
Some of these will focus on the display of and interaction with general information, for example:
Some will focus on the display of user level information such as:
CiviCRM is an open source constituent relationship management system used by NGOs and advocacy groups (like Amnesty International, Wikimedia Foundation or the Joomla! and Drupal projects) all over the world. Judging by the number of community-contributed and -maintained translations and civicrm.org statistics, CiviCRM installations exist in over twenty languages using various alphabets (Latin, Cyrillic, Arabic, Devanagari, Chinese). Multi-language support is essential in multilingual countries (like Canada or India), as well as in cross-border (e.g., Central and East European) and worldwide organizations.
For this project the student will extend the multilingual features of CiviCRM (initially created during Google Summer of Code 2008), including (but not limited to) some/all of the following:
CiviCRM is an open source constituent relationship management system used by small and large NGOs and advocacy groups, some of them spanning across many smaller (and not-so-small) organizations and/or divided into subgroups, chapters, etc.
The goal of this project is to extend the current CiviCRM ACL capabilities to cover the needs of such multi-part organizations, as well as CiviCRM installations that span across many organizations (with various strengths of ties between them).
The new ACL features should include (but not be limited to):
Create a component that will handle standard errors (ex. 404) so that headers are sent for the error code, but the error is trapped and redirected from the error.php file back to Joomla! where it can be handled on a normal webpage.
The following improvements could be made to the current Joomla! Media Manager:
Joomla comes with a few core components, and a Whiteboard/Wiki component would be a great addition to those. It would be a basic implementation of the feature with the following possible features:
The core extensions can be modified to produce semantic markup. The tables should be replaced withmore appropriate containers for the contents. This would not replace the need for template overrides, but rather make the default output stronger to build upon. The output should also be arranged to best suit the content in the majority of situations. Perhaps also a basic system reset CSS file would need to be developed to set some of the basic layout items, also to be easily disabled.
The core output cannot be replaced completely without causing many 1.5 templates to break. Therefore it would be necessary to either have a legacy mode for templates or to automatically detect the template type (1.5 or 1.6) in order to provide the right output.
Modules can be defined in a template to have pretty much any name they wish. While this is great for template makers, it would be good to have at least some guidelines about naming modules. Module names like user1 and user2 are essentially useless semantically, and to administrators of a site. Some templates are designed for any module to fit in any position, but in general there are at least a handful that are designed with the menu, footer, and other aspects in mind. Perhaps Joomla can create some guidelines (not requirements) related to this.
Each version of Joomla comes with a set of templates, and they are updated with each major release. 1.6 is currently in development, and will need a new set of templates. These templates should:
There are many little improvements that would help with general usability and administration for Joomla users.
Easy page layout template system so that editors can choose from a pre-defined range of layouts. This could be useful when certain pages all require the Name, Date, Author name, photo in a certain area, tagline etc. Content item templates could be defined, then saved and authors could then choose from this list, helping sites with larger article content to retain continuity throughout their areas of pages.
XML files are used in various places throughout Joomla. Historically, the installer XML files have had DTDs against which they can be validated. However, there are a number of known issues with these DTDs and there are other XML files used in Joomla that have never had DTDs written at all. Furthermore, DTDs can only catch certain classes of errors within XML files and we need to look beyond DTDs to look at XML Schemas to catch other classes of errors.
The idea is to have an component on admin side that allows articles to be edited based on the frontend navigation, Something similar to Typo3 adminimplementation (just 2 and 3 in the image).
Magento is an actively developing award winning open source eCommerce platform. The idea is to develop a bridge between Magento and Joomla. More info about Magento can be found from the following websites: Magento official website Magento online demo Store tour video Admin tour video Best of Open Source Enterprise Applications
Xinha is a powerful WYSIWYG editor, which supports plugins. So administrator can customize their working environment and even write their own plugins. The idea is to integrate Xinha into Joomla! with ability of editing content from frontend and backend. The editor environment must be configurable, output HTML code must be W3C compliant, for that we will need also to implement HTMLPurifier plugin into Xinha.
Usually administrators are working on their live site directly and sometimes they do mistakes as all people do. Usually the live site get's messed after extension installation/uninstallation process and re-configuration. The idea is to have a working copy of the live site and make changes to it, then if everything is okay after some testing, you can approve changes and the tool will synchronize changes to your live site.
Some of the steps, which will need to be done to complete this project:
Elgg was providing an elegant and powerful solution for anyone who wants to create their own online community. Elgg is free and open source and powers all kinds of social networks - from education and business to martial arts and rugby. If you are looking for a professional social intranet or just want to run a site for your fishing club, Elgg is a great choice. The idea is to develop a bridge between elgg and Joomla. More info about elgg can be found from the following websites: elgg official website elgg community online elgg Documentation
Some of the steps, which will need to be done to complete this project:
Update Systems presently doesn't have an easy to navigate structure for handling the large amount of information that is potentially available when a user wishes to install new extensions into their system backed from the update system. Updates are presented already and temporarily uninstalled items are also displayed as a technology demonstration of what can be achieved using the new system.
A completely new look extension install manager is required to help make meaning of the information that the update system exposes. In part this system should also expose information about existing installed extensions in the system (including any pending updates they might have) as well as new extensions that are available. Its purpose should be similar to the way that "Synaptic" works on Debian or Ubuntu operating systems.
The majority of the data loading framework is build already permitting the enterprising developer to focus primarily on interfacing with the installer system and building a useful user interface to make containing these extensions very easy.
Areas of further development involve research involving the development of a Firefox plugin (or similar) that stream lines installing Joomla! extensions from a web site perhaps similar to the way that Firefox is handled. This would involve developing a service that facilitates authenticated remote installation procedures.
With the development of the new infrastructure there is a need to create an independent update server to make a developer's life easier when installing creating extensions. The update server should in part offer a download facility where users can download directly from it via a front end Joomla! component as well as something that will generate XML files statically on the file system and dynamically dependent on the administrator's choice. The XML files should be generated in the defined format that already exists and should handle updating automatically.
Expanding on the system it should be able to push notifications out through an extensible plugin system as well as handle automatic mirroring of the files (again via plugins). An example of a notification plugin could be something that automatically updates the JED or posts a new article in a specific category with changelog information. An example of a mirror plugin could be something that automatically uploads files to a release on JoomlaCode, perhaps even creating the release automatically as well. The location of generated XML files should be configurable as well and may also be requested to be uploaded to external resources as well (e.g. a mirror server for the XML update files).
The application should make the most of new features introduced into Joomla! 1.6 such as the Forms API to provide plugin customisable interfaces to various systems.
An extension of this would be the provisioning of content plugins that handle the integration of download URL's and version numbers for packages that are handled through the system to allow Joomla! content items to interact with the system in a flexible manner.
Proxy functionality would also be desirable to have the update server function as a slave to other sites and permit updates through a proxy. This would also involve a method for mirroring the binary files onto the proxy server as well but has some interesting different functionality to the main project.
This is a major project consistent of various subparts. It should be undertaken by someone with at least a basic understanding of how Joomla! operates and developing for Joomla!. This is not a good starter project. Students should show an interest in this area and be happy to work in an agile method with tighter deadline for individual projects to come together as a final assessable package. A combination of options might be selected but at least three should be considered.
This is still in moderate draft phase.
Many developers create new components every day all over the world. The idea is to develop a library for rendering lists of items in the administration panel (like standard lists of users/articles/categories/etc). It must handle all routine work of creating such lists for components.
It should work like a common form creator class. You set list of fields with their types (columns) and list of values (rows) or an SQL-query to fetch them.
The main features of the library should be:
Add a new feature that could expand on the basic web links feature to allow users to submit links and then rate them. It could emulate some of the main features of digg.
This project involves building a tool that will take an existing site (probably HTML but could be partially dynamically generated) and feature the ability to suck it into Joomla!, stripping the template as it goes and attempting to rebuild the navigation structure whilst also maintaining as much metadata as possible. This project requires exception programming skill, a deep knowledge of the Joomla! CMS and someone with a knack for solving weird problems. An analogous module exists for Drupal in its "Import HTML" and might serve as a good location for study of ideas and concepts.
Typography (Etymology: typos ⎯ type, graphos ⎯ written) is the art and techniques of arranging type, type design, and modifying type glyphs (en.wikipedia.org/wiki/Typography).
Typography is an important part of any text design. It makes texts look better, more sophisticated, and professional. It was a must for all books, newspapers, and other printed text sources at the times when computers did not exist or were not widely spread and the texts were set up by professionals only. Now days 99% of texts are created by not professionals and their typography quality leaves much to be desired.
I agree with those who say that it’s a very small detail but details are something that makes things perfect. As a musician must play from the music, a HTML coder must take into account typography rules formatting texts although in both cases most of people won't notice any benefits.
Since at the age of content management systems most of texts are set up by common users the typography issue became even more visible. This issue can be at least particially solved by involving automated typography scripts preparing texts for displaying on a web page.
The goal is creating a Joomla! CMS plug-in that would correctly format texts according to the typography rules of different languages without any loss of page display speed.
The plug-in would need to fix primes, opening and closing quotes and apostrophes; fix dashes, and other punctuation; insert spaces; insert correct special symbols such as Copyright, Registered, Trademark, and other; fix parentheses, brackets, angle brackets, and guillemets; correctly format numbers; add no-break symbols when necessary, and more. In addition it would need to handle such issues as quotes within quotes, and other.
Here are two examples from everything2.com to illustrate the way the correctly formatted text would look:
As you can see, it’s not only a matter of replacing certain symbols with their ‘correct’ versions. Everything is much more complex, I’d say it’s a challenge :)
There are quite a few typography plug-ins for Joomla! CMS but none of them is actually intended to correctly format texts. Each of those does certain tricks like inserting special symbols but none is even close to making the whole thing.
The functional requirements in brief can be as follows: