Project ideas for GSoC 2015
From LimeSurvey Manual
Welcome, Google Summer of Code student aspirants!
This page lists project ideas developed by the LimeSurvey Community - please note that we have applied as organization for GSoC 2015 but we are currently waiting if we will get accepted into this great program, again.
The ideas listed here are the ones that will get the most support since they have been developed by people who know the project and what it needs the most. However, if you have your own project idea for LimeSurvey please discuss your awesome idea with us in our forums, mailing list or in our IRC channel at #limesurvey on irc.freenode.net.
You can also find alot of ideas for new features in our feature tracker
Also have a look at our following documents:
We are looking forward to your proposal. Good luck!
Project ideas
Visualize different paths through a survey based on conditions set at a survey
Limesurvey's ExpressionScript (EM) allows adding complex conditions to survey questions so that certain questions are only shown if those conditions validate to "true". At lengthy surveys with lots of conditions this will create several different potentials paths through a survey depending on the answers given by a user. To help our growing user base to deal with this complex problem we plan to create a fully new tool for visualizing the different paths through a survey based on the existing conditions.
Steps
- Have a look at the ExpressionScript documentation to get familiar with this powerful tool for creating complex conditions
- Check how conditions are stored at the database
- Analyse how EM internally handles conditions to determine whether a question should be displayed
- Test conditions of different complexity at different survey levels (single question vs survey groups)
- Do some research on tools which can be used for visualizing paths e.g. [1]. Make sure the licence is compatible with the Limesurvey licence
- Describe the architecture of your program and how you plan to integrate it into Limesurvey. Discuss your approach with your mentor
- Start coding a first test version based on simple conditions and short surveys. Test how this scales when it comes to larger surveys and more complex conditions.
- Share your first version with other developers and Limesurvey users so they can test their own complex surveys.
Skills
You should know about PHP MVC architcture and PHP frameworks (we are using Yii framework) because most development will be PHP code. You should also know SQL because your scirpts will need to query the DB for existing conditions. Some HTML + CSS will help for creating a nice visualization of the different paths.
Difficulty
Medium
Mentor(s)
Carsten Schmitz, Marcel Minke (Mazi)
Update Limesurvey Template Engine to use Twig
Currently Limesurvey uses its own custom coded template engine. Since the framework used for Limesurvey ("Yii") supports the Twig template engine we plan to replace the custom coded template engine with Twig's template engine for better code maintenance and embedding with the Yii framework. Extra credits would get you if you introduce customized template functions - so a user can easily change logo, logo placement and colors for a specific template using the template editor.
Steps
- Check how the current Limesurvey templates are structured
- Dig into the related code to find out how the underlying Limesurvey template engine works
- Get familiar with the structure of Twig templates
- Test-edit one of the shipped templates and make it twig-compatible
- Embed the Twig template engine into Limesurvey
- Test your test template and the Twig template engine carefully
- Adjust further shipped Limesurvey templates
Skills
You should know how a template engine and framework works. In addition to that HTML and CSS skills are required for adjusting the shipped Limesurvey templates. You should also know about PHP because switching the template engine will require adjustments of the Limesurvey source code as well.
Difficulty
Easy to medium
Mentor(s)
Marcel Minke (Mazi)
Remove jQuery UI and replace it with Bootstrap, harmonize GUI of different admin screens
The Limesurvey admin GUI currently uses a mixture of jQuery UI and Bootstrap code. That does not only make the related code difficult to maintain, it also creates a lot of overhead. In addition to that, the different admin screens are not overall standardized and lack harmonization.
This task aims at standardizing the ~20-25 different Limesurvey admin screens and cleaning up the underlying code for easier maintenance and faster loading times.
Steps
- Click through the different screen at the Limesurvey admin interface. Note which screens already look nice and which ones are not following the overall design standards.
- Take a look at the related source code and MVC views to see how the code for the views is structured and which libraries are used.
- Note where at the code jQuery UI is used.
- Test how to best remove the jQuery UI elements and what is needed to replace that code with Bootstrap features.
- Adjust the admin GUI code to make it fully Bootstrap compatible.
- Check all Limesurvey admin screens, standardize the layout/design and polish them where needed.
Skills
You should be familiar with jQuery UI and Bootstrap and known about HTML + CSS. A basic understanding of the MVC coding approach as well as some PHP coding skills are also helpful.
Difficulty
Easy to medium
Mentor(s)
- Marcel Minke (Mazi)
- Carsten Schmitz
- Denis Chenu
When creating a survey at the Limesurvey admin interface the current page structure is: survey list -> survey question groups -> questions (within the current group)
That structure forces users to often navigate using the drop down and back/next buttons when dealing with larger surveys. Having a new menu on the left presenting a structured overview of all question groups with all their questions would help a lot to easily jump from question X to question Y. That new overview should contain icons for:
- Deleting a question/question group
- Directly jumping to the survey question/question group edit mode
- Copying a survey question
- Adding a new question/question group at the appropriate survey section
Steps
- Check how the current Limesurvey survey designer is structured
- Have a look at the different features available on the different levels (survey/question group/question)
- Think which features could additionally be added to the icon list above
- Check the related code for creating a full overview of question groups + questions
- Adjust the admin GUI to embed the additional overview on the left
- Create the code for the new overview and the functions presented by the different icons (most of that code is already there)
- Testing, testing, testing...
Skills
You should be familiar with the "Yii" framework we are using for Limesurvey or at least other PHP frameworks. A good understanding of object-oriented PHP programmierung is required as well. For adjusting the GUI moderate HTML + CSS skills are needed.
Difficulty
Easy
Mentor(s)
Carsten Schmitz
Make use of the SettingsWidget for core functions
Use and update (if needed) extension SettingsWidget for core Survey forms.
Some forms to be updated:
- Survey settings
- Personal settings
- Users settings (IN LS3 users' settings are managed by the authentication plugin and already use SettingsWidget)
- Export settings
Skills
PHP, html, js and css
Difficulty
Easy to moderate : some settings can be more diffcult
Link on mantis
- SettingsWidget :renderHTML
- SettingsWidget :renderDate / DateTime and Time
- Plugin manager : legend without fieldset
Mentor(s)
ExpressionScript JavaScript optimizations
Actually the ExpressionScript in LimeSurvey uses inline JavaScript for relevance, updating classes and updating HTML. In its current state an administrator or extension developer can not use their own functions. The task is to update Expression manager inline JavaScript to use an JavaScript-only event on update expression manager javascript to call an actual function on this events.
The second part of this task is to move inline Javascript to jQuery. In the old current system each input (when taking a survey) uses the onchange/onkeyup function to fire events. The idea is to remove these inline code and use only JavaScript/jQuery general code where possible.
Skills
Some PHP to update ExpressionScript class, deep jQuery/JavaScript knowledge. A jQuery plugin might be a great idea.
Difficulty
Moderate
Mantis
Mentor(s)
Revamp database grids in LimeSurvey
We have various data table/lists in LimeSurvey - for example when listing surveys, tokens or responses. With most of these lists we use jqGrid, some don't use any Javascript widget at all.
All instances of data lists in LimeSurvey should be replaced with a proper Javascript grid (which has to be chosen yet) and a related widget in Yii. As smarter as you will choose the data grid and as better the related Yii widget is coded as easier you will be able to replace the existing jqGrid with your better version.
All lists need to be customized in some way - for example with token editing we will need mass editing functions - for example you should be able to set all tokens to be unused, reset invitation/reminder date/time or similar.
Skills
- Good PHP and JavaScript skills
- Experience with jQuery and Bootstrap, AJAX
Difficulty
Medium difficulty - getting accustomed to the Yii 1.1 widget system and replacing the existing jqGrid functionality will be the difficult part.
Mentor(s)
- Carsten Schmitz
- Sam Mousa
Replace current CKEditor usage with TinyMCE
LimeSurvey currently uses extensively CKEditor to let people edit their survey texts (question, answer options, general survey texts) and invitation emails. However the CKEditor version we are using is outdated and some components are difficult to update due to CKeditor limitations. Also we use a customized CKeditor widget and a file browser widget that needs to be replaced with newer & better versions.
We have concluded that TinyMCE will be the best replacement as the codebase is very stable and it offers a plugin interface.
Your task would be to replace CKEditor instances with TinyMCE - also a widget for Yii should be written to ease any future implementation. As mentioned before the functionality of the existing CKEditor extensions need to be ported as TinyMCE plugins.
This task is linked with #Make_use_of_the_SettingsWidget_for_core_functions
Skills
- Good PHP and JavaScript skills
- Experience with jQuery and Bootstrap, AJAX
Difficulty
Medium difficulty - getting accustomed to the Yii 1.1 widget system and replacing the existing CKEditor functionality will be the difficult part.
Mentor(s)
- Carsten Schmitz
- Sam Mousa
- Denis Chenu
Idea template
Describe the idea here in general terms
Skills
Explain what sort of coding skills would be needed for a student to implement this project
Difficulty
Explain the level of difficulty involved
Mentor(s)
Put your name (and tag) here if you are willing to mentor a student for this idea
Additional links
Official GSoC links
Limesurvey coding details
- Limesurvey coding guidelines
- Accessing the Limesurvey source code
- Standard GIT commit messages
- Limesurvey code base and directory structure
- Basic Yii framework information