LimeSurvey Project Ideas for Google Code-in 2012

=Welcome Google Code-in Student aspirants!=

Please check first if you are an eligible candidate for the GCI program. This page lists task ideas developed by core developers and the LimeSurvey community. This way we get a great mix of 'most-wanted' solutions from the users and the developers.

We wish good luck to you and we hope that this contest will be alot of fun for all of us(:biggrin:) !

Important: All tasks will have to be implemented based on the development version 2.1 available on github.

=How to claim a task=

All tasks below will be entered in the Google Code-in task tracker (which will be available once the contest has officially started). You have to be a registered Google Code-in participant to claim a task.

=Task ideas=

Code: Remove tags from LimeSurvey
In LimeSurvey there are still a couple places where the obsolete   tag is used. These need to be replaced with proper HTML & CSS.

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Create a small 1-question survey.
 * Use a proper tool to search for tags in the source code.
 * Remove each of these tags and replace them with proper HTML and CSS (CSS preferred)
 * Important: Test if the appearance of your replacement matches the old behaviour
 * Create a gitHub pull request and submit the pull request link for review.

Code: Add styled error message to pre-installer failure
Idea by: mdekker

After uploading LimeSurvey to a web server, normally the installer will run when the public url is requested. In the case that a specific directory (tmp/runtime) on the server is not writable the installer can not start. Currently just a single line describing the error is shown, this should be replace by an HTML page in the design of the installer.

Task steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Analyze the problem (if you have problems reproducing please contact your mentor)
 * Discuss the issue and your proposed solution with your mentor
 * Code/document/translate/... and submit your work
 * Discuss the work with your mentor
 * Issue a git pull request

Code: Implement ajax popup dialog at token overview table when adding a survey participant
Idea posted by: Mazi

The LimeSurvey admin backend already supports jqgrid features for the token overview screen. But when adding a new token entry, a new page is used which is old fashioned and could be far more user friendly when switching to a jQuery popup dialogue. That's what we need your help with!

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Install LimeSurvey - create a small survey with a token table and add a few dummy people there.
 * Have a look at the jqgrid docs at http://www.trirand.com/jqgridwiki/doku.php
 * Look at the current dialog when adding a token. This one should appear in a jQuery popup dialog instead. After the record was added, the new record should be shown first in the grid (grid needs to re-sorted by ID descending) so that the user automatically sees the new entry on top.
 * When editing a record current inline editing is used - this has to be changed to using the popup dialog, too.
 * Discuss the patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Add unique CSS IDs to main LimeSurvey admin menu elements
Idea posted by: Mazi

For having more options to fully customize the LimeSurvey admin interface and to hide certain elements at a customized layout, all LimeSurvey admin menu elements (buttons, drop downs, text elements and so on) should be assigned their own, unique CSS ID.

Task Steps:
 * Install LimeSurvey - Have a look at the HTML of the LimeSurvey admin interface.
 * Create a list of elements on the main admin page, sorted by "buttons", "texts", "...anything else..." that need to be changed.
 * Discuss the list with your mentor to check if all admin interface elements are listed
 * Edit the related view for this screen and assign each element it's unique ID
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Add unique CSS IDs to LimeSurvey token administration elements
Idea posted by: Mazi

For having more options to fully customize the LimeSurvey admin interface and to hide certain elements at a customized layout, all LimeSurvey admin menu elements (buttons, drop downs, text elements and so on) should be assigned their own, unique CSS ID.

Task Steps:
 * Install LimeSurvey - Have a look at the HTML of the LimeSurvey admin interface.
 * Create a list of elements on the token administration page and all pages linked there, sorted by "buttons", "texts", "...anything else..." that need to be changed.
 * Discuss the list with your mentor to check if all admin interface elements are listed
 * Edit the related views for these screens and assign each element it's unique ID
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Add unique CSS IDs for all elements at LimeSurvey's "Browse responses" screen
Idea posted by: Mazi

For having more options to fully customize the LimeSurvey admin interface and to hide certain elements at a customized layout, all LimeSurvey admin menu elements (buttons, drop downs, text elements and so on) should be assigned their own, unique CSS ID.

Task Steps:
 * Install LimeSurvey - Have a look at the HTML of the LimeSurvey admin interface.
 * Create a list of elements on the browse response page and all pages linked there, sorted by "buttons", "texts", "...anything else..." that need to be changed.
 * Discuss the list with your mentor to check if all admin interface elements are listed
 * Edit the related view for these screens and assign each element it's unique ID
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Improve work flow of the "send invitation/reminder" feature
Idea posted by: Mazi

Currently, when sending email invitations or reminders, you don't see the scope of concerned data sets (some have already received an invitation/reminder, some might have opted out, some might have a missing token/email address). The user sees the list of email receivers AFTER having sent the emails which is not that good. Your task is to present these details up front.

Task Steps:
 * Install LimeSurvey - Create a simple test survey and create a token table which is filled with 2-3 test data sets.
 * Have a look at the "send email invitation/reminder" feature and note the single work flow steps when sending these emails.
 * The work-flow should be changed so that when clicking "send email invitations/reminders", a list of people who will receive the email is created up front so the user can look into the details.
 * By default a checked checkbox is shown in front of each listed user who will receive an email.
 * A button "send emails to selected users" is placed on top.
 * Furthermore, you should add a "list people who will NOT receive the email" link below which shows this different list when being clicked (default = hidden). That second list of users who will NOT receive an email contains users sorted by status like
 * "invitation already received" (invitations) / "max number of reminders already sent" (reminders)
 * "missing token"
 * "missing email"
 * "opted out"
 * anythingh else you can think of
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Add a "Check for duplicates" function at the token admin screen
Idea posted by: Mazi

A check for duplicate token data already exists for the CSV import feature. This is not sufficient because user A might import data from a CSV file and user B might add token data later manually, which might lead to duplicate entries. That's why we need a new function which is called by clicking a certain icon on the admin screen. Here is what this new function should do:

Task Steps:
 * Install LimeSurvey - Create a simple test survey and create a token table which is filled with 2-3 test data sets.
 * Have a look at the ducplicate check function which is used when importing token data from a CSV file.
 * Talk to your mentor where at the admin interface a new icon for the duplicate token check can be added and how it might look like. Afterwards, add the icon and link to the new feature.
 * Create a new view which is shown after the button was clicked. This view should contain columns the user wants to check for duplicates. We need at least:
 * First name
 * Last name
 * Email
 * Token
 * For each column ticked at this screen, the script should check the whole token data for duplicates.
 * Extend the current view to show the duplicates below the filter options described above. It should include a tabular overview similar to the standard token list which lists only duplicate entries. If only "email" was selected previously, the overview should be sorted by email, if only "last name" was checked, it should be sorted by last name and so on. If several filters were clicked, the data should be sorted by last name
 * For each data set, mark the according cell where duplicate data was found with a red border.
 * Add buttons and a function to delete and edit a certain data set at the table of duplicate entries. These features already exist at the standard token overview, so no need to re-invent the wheel.
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Add sorting and edit/delete token functionality to "Check for duplicates" function at the token admin screen
Idea posted by: Mazi

Important: This task can only be executed if task "Add a 'Check for duplicates' function at the token admin screen" is completed. Don't start to work on this before that or your work will be most likely futile.

Once the "Add a 'Check for duplicates' function at the token admin screen" task was completed, a next step is to add some additional functionality to the screen which lists the duplicates. Here are the details:

Task Steps:
 * Install LimeSurvey - Create a simple test survey and create a token table which is filled with 2-3 test data sets.
 * Have a look at the ducplicate check function it supports checking for duplicates based on:
 * First name
 * Last name
 * Email
 * Token
 * For each column ticked at this screen, the script checks the whole token data for duplicates.
 * Your task is to extend the current view which lists the duplicates: If only "email" was selected previously, the overview should be sorted by email, if only "last name" was checked, it should be sorted by last name and so on. If several filters were clicked, the data should be sorted by last name.
 * Add buttons and a function to delete and edit a certain data set at the table of duplicate entries. These features already exist at the standard token overview, so no need to re-invent the wheel.
 * Discuss the patches with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Check for valid question code when adding/editing a question
Idea posted by: Mazi

Since LimeSurvey 1.92 we have a great new feature called ExpressionScript which requires unique question codes and disallows certain chars to be used. Currently, there is no check at question code input if the entered question code is valid. So this is your task.

Task Steps:
 * Install LimeSurvey - create a small survey of 3-4 questions and assign them valid and non-valid question codes.
 * Valid question codes may NOT
 * start with a number
 * contain dots
 * use spaces
 * ADD MORE RESTRICTIONS HERE
 * Assign a JavaScript/jquery function to the question code fields which takes care of different validations:
 * When adding or editing a question code, the validation function should check the code syntax for issues listed above and show a message like "Invalid question code" right to the field.
 * Another check should check the input against a list of existing question codes (this has to be generated on page load) and show an error like "Question code already used at question #123 ('How old are you?')"
 * Input should be validated at runtime when the user inputs the characters
 * The question code input field should use a red border as long as it is invalid input. When the input is valid, a green border and a message like "Valid question code" should be used.
 * Discuss the patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

Code: Create unit tests
Now that we are using a PHP framework, it is possible to write unit tests for the different classes (domain classes, controllers, helpers, libraries, ...) The goal of this task is to write a unit test for an untested class or method.

Task Steps:
 * Find an untested class which could use some testing
 * Discuss the badly tested class/method with the mentor and make a proposal on how to test the code
 * Write tests for class/method and create a patch
 * Discuss your patch with the mentor
 * Check-in your changes into the limesurvey svn trunk.

Code: Design a new LimeSurvey Template (Part 1, 2, 3)
Idea posted by: gautamgupta

Design a new good-looking template for LimeSurvey front-end in HTML5/CSS3. Go creative!

One template counts for 3 tasks. This is part N/3 of the task. Please claim the tasks in order.

Task Steps:
 * Install LimeSurvey - Have a look at the template system.
 * Start with the designing process, discuss the design with a mentor
 * Finalize the design
 * Submit a github pull request.
 * Done!

Code: Convert createCommand->update calls to use the model instead - Task ARU1
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 87 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU2
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in tokens_dynamic.php, Questions.php, ParticipantAttributeNames.php, Groups.php, update_helper.php and Answers.php. (There are about be about 6 of themin these files). Also do 4 more from updatedb_helper.php (so in total you have to do 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU3
NOTE: This task can only be executed if tasks ARI1 and ARI2 are completed. Do NOT start to work on this before that or your work will most likely be futile.LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 73 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU4
IMPORTANT NOTE: This task can only be executed if task ARU3 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 63 of them, you need to do only 11 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU5
IMPORTANT NOTE: This task can only be executed if task ARU4 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 52 of them, you need to do only 11 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU6
IMPORTANT NOTE: This task can only be executed if task ARU5 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 41 of them, you need to do only 11 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU7
IMPORTANT NOTE: This task can only be executed if task ARU6 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 30 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU8
IMPORTANT NOTE: This task can only be executed if task ARU7 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 20 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->update calls to use the model instead - Task ARU9
IMPORTANT NOTE: This task can only be executed if task ARU8 is completed. Do NOT start to work on this before that or your work will most likely be futile.

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the update commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->update" in updatedb_helper.php (There are about be about 10 of them)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->insert calls to use the model instead - Task ARI1
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurences of "createCommand->insert" in InstallerController.php and common_helper.php (should be about 10 of them)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->insert calls to use the model instead - Task ARI2
LimeSurvey has been plainly ported from Adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->insert" in import_helper.php (There are about be about 17 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->insert calls to use the model instead - Task ARI3
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->insert" in updatedb_helper.php (There are about be about 14 of them, you need to do only 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->insert calls to use the model instead - Task ARI4
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->insert" in ParticipantAttributeNames.php, Participants.php, ParticipantShares.php and Survey_url_paramenters.php (In total there should be 10 of these)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->insert calls to use the model instead - Task ARI5
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). As a first step the INSERT commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

NOTE: This task can only be claimed if task ARI1 to ARI4 are completed. Do NOT start to work on this before that or your work will most likely be futile.

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->insert" in importhelper.php (about 7 occurences) and update_db_helper (about 4 occurences)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->select calls to use the model instead - Task ARS1
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand).These SELECT query commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->select" in InstallerController.php, tokens.php, exportresults_helper.php, Answers.php, Groups.php, Label.php, Labelsets.php and ParticipantAttributeNames.php (about 11 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->select calls to use the model instead - Task ARS2
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand).These SELECT query commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->select" in Participants.php (about 14 occurences in total, you need to do only 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand->select calls to use the model instead - Task ARS3
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand).These SELECT query commands have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand->select" in ParticipantShares.php, Participant_attribute.php, Questions.php, Surveys_languagesettings.php, User.php (about 9 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO1
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in RegisterController.php, Statistics_userController.php, checkintegrity.php, conditionsaction.php (about 11 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO2
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in database.php, export.php and surveyadmin.php (about 11 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO3
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in surveypermission.php, tokens.php, index.php (about 11 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO4
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in common_helper.php (about 25 occurences in total, you need to do only 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO5
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in export_helper.php (10 occurences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO6
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in Survey_Common_Action.php, frontend_helper.php, activate_helper.php (10 occurrences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO7
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in database_helper.php, exportresults_helper.php, em_manager_helper.php (about 10 occurrences in total)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO8
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in import_helper.php (about 45 occurrences in total, you need to do only 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO9
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in statistics_helper.php (about 25 occurrences in total, you need to do only 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO10
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in updatedb_helper.php (about 21 occurrences in total, you need to do only 10)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO11
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in Save.php, Conditions.php, Questions.php, Survey_links.php, Survey_permissions.php, Tokens_dynamic.php (about 10 occurrences )
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO12
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in CommentCheckQuestion.php, CommentListQuestion.php, ListQuestion.php, RadioArrayQuestion.php, RankingQuestion.php, SelectQuestion.php, TextArrayQuestion.php (about 10 occurrences )
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO13
LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in label_helper.php, User.php, User_groups.php, CheckQuestion.php (about 11 occurrences )
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO14
'''IMPORTANT NOTE: This task can only be executed if task ARO8 is completed. Do NOT start to work on this before that or your work will most likely be futile because you duplicate someone elses work. '''

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in import_helper.php (about 35 occurrences in total, you need to do only 11)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO15
'''IMPORTANT NOTE: This task can only be executed if task ARO14 is completed. Do NOT start to work on this before that or your work will most likely be futile because you duplicate someone elses work. '''

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in import_helper.php (about 24 occurrences in total, you need to do only 11)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO16
'''IMPORTANT NOTE: This task can only be executed if task ARO15 is completed. Do NOT start to work on this before that or your work will most likely be futile because you duplicate someone elses work. '''

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in import_helper.php (about 13 occurrences in total, you need to do only 11)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO17
'''IMPORTANT NOTE: This task can only be executed if task ARO14 is completed. Do NOT start to work on this before that or your work will most likely be futile because you duplicate someone elses work. '''

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in statistics_helper.php (about 15 occurrences in total, you need to do only 11)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Code: Convert createCommand($query) calls to use the model instead - Task ARO18
'''IMPORTANT NOTE: This task can only be executed if task ARO10 is completed. Do NOT start to work on this before that or your work will most likely be futile because you duplicate someone elses work. '''

LimeSurvey has been plainly ported from adodb to CodeIgniter to Yii and so many of our database queries are still direct SQL commands (CDBCommand). These queries (which are written in plain SQL) have to be changed to use the model (CActiveRecord) instead (to ensure data integrity)

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Search for occurrences of "createCommand($" in updatedb_helper.php (about 15 occurrences in total, you need to do only 11)
 * Replaces these with calls to the related ActiveRecord models instead - and don't forget test each by running the related application parts.
 * Submit a gitHub pull request.

Training: Create a video tutorial for creating a "Maps" question
Idea posted by: Mazi

LimeSurvey offers an extension to the "short text" question type so it can be used as a "Maps" question type. If this feature is activated at the advanced question settings, the user will be displayed a map at the survey and he/she can place a mark on that map indicating a certain location. The results are then stored as a text string with lat./long. data.

Unfortunately no real documentation exists for this type of questions so your task would be to play around with the different settings, find out what each setting is used for and then extend the according section at the manual and create a short video tutorial explaining how this question type works.

The Video should include:
 * Explaining what the question can be used for
 * A summary of the most important settings
 * Two sample setups for this question type
 * Showing how the question looks like at the survey
 * Showing how the recorded results will look like

It might be best to record each video section separately and then join the video at the end.

Task Steps:
 * Have a look at the available "Maps" question type settings
 * Play around with them to find out what each setting does
 * Extend/complete the documentation at our wiki
 * Create a short video tutorial on how to use that question type
 * Submit the documentation and video to your mentor for review.
 * Discuss the results with your mentor and eventually overwork some parts
 * Submit your video to your mentor and complete the codumentation at our wiki.

{|
 * Recommended skills||Mentor(s)
 * Screen Recording, Video and Sound Editing|| Mazi
 * Screen Recording, Video and Sound Editing|| Mazi

}

Training: Create a video tutorial on how to use the new LimeSurvey ExpressionScript - Conditions
Idea posted by: Mazi

Since version 1.92 LimeSurvey offers a powerful ExpressionScript which can be used for conditions, assessments, piping and many more. Since this feature is a little complex, it would be nice to have a video tutorial on how to set up the correct expressions when using conditions.

Task Steps:
 * Have a look at the Expression manager documentation here: http://docs.limesurvey.org/Expression+Manager and here: http://docs.limesurvey.org/Expression+Manager+HowTos and focus on documentation about conditions.
 * Create a simple sample survey with 4-5 questions which use the ExpressionScript to define conditions.
 * Make a list of what to watch out for (syntax, variable naming, ...) when using the ExpressionScript for conditions at LimeSurvey.
 * Create a video tutorial about using the ExpressionScript for conditions at LimeSurvey. The users should learn how the Expression manager works and how to set up expressions for different conditions.
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

{|
 * Recommended skills||Mentor(s)
 * Screen Recording, Video and Sound Editing|| Mazi
 * Screen Recording, Video and Sound Editing|| Mazi

}

Training: Create a video tutorial on how to use the new LimeSurvey ExpressionScript - Assessments
Idea posted by: Mazi

Since version 1.92 LimeSurvey offers a powerful ExpressionScript which can be used for conditions, assessments, piping and many more. Since this feature is a little complex, it would be nice to have a video tutorial on how to set up the correct expressions when using assessments.

Task Steps:
 * Have a look at the Expression manager documentation here: http://docs.limesurvey.org/Expression+Manager and here: http://docs.limesurvey.org/Expression+Manager+HowTos and focus on documentation about assessments and learn how to store assessment data at equation questions.
 * Create a simple sample survey with 4-5 questions and assessment values which uses the ExpressionScript to store assessment results and sum up assessment scores.
 * Make a list of what to watch out for (syntax, variable naming, sum function, ...) when using the ExpressionScript for assessment results at LimeSurvey.
 * Create a video tutorial about using the ExpressionScript for assessments at LimeSurvey. The users should learn how the Expression manager works and how to set up expressions for different questions and assessments.
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

{|
 * Recommended skills||Mentor(s)
 * Screen Recording, Video and Sound Editing|| Mazi
 * Screen Recording, Video and Sound Editing|| Mazi

}

Training: Create a video tutorial on how to use the new LimeSurvey ExpressionScript - Piping
Idea posted by: Mazi

Since version 1.92 LimeSurvey offers a powerful ExpressionScript which can be used for conditions, assessments, piping and many more. Since this feature is a little complex, it would be nice to have a video tutorial on how to set up the correct expressions when using piping.

Task Steps:
 * Have a look at the Expression manager documentation here: http://docs.limesurvey.org/Expression+Manager and here: http://docs.limesurvey.org/Expression+Manager+HowTos and focus on documentation about piping.
 * Create a simple sample survey with 4-5 questions if which the first question answers can be used for piping at later questions.
 * Make a list of what to watch out for (syntax, variable naming, ...) when using the ExpressionScript for dynamic texts at LimeSurvey.
 * Create a video tutorial about using the ExpressionScript for dynamic texts at LimeSurvey. The users should learn how the Expression manager works and how to set up expressions for different dynamic texts.
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

{|
 * Recommended skills||Mentor(s)
 * Screen Recording, Video and Sound Editing|| Mazi
 * Screen Recording, Video and Sound Editing|| Mazi

}

Training: Create a video tutorial on how to use the new Central Participant Database Feature - Participant Import Export and attribute map
Idea posted by: Aniessh Sethh

Since Version 2 LimeSurvey offers a new feature Central Participant Database which is a central database of participants which can be shared between surveys and hence helps in easy management of participants.Your task is to create video tutorials showing how to use this new feature.

The Video should include:
 * How to use Central panel by showing the user how to import/export the participants from central database to token table and vice versa
 * The attribute map feature of CPDB

It might be best to record each video section separately and then join the video at the end.

Task Steps:
 * Have a look at http://docs.limesurvey.org/Central+Participants+Database
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Create a video tutorial about using the Central Participant Database and it's various features mentioned in what the video should include
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

Training: Create a video tutorial on how to use the new Central Participant Database Feature - CSV Import/Export
Idea posted by: Aniessh Sethh

Since Version 2 LimeSurvey offers a new feature Central Participant Database which is a central database of participants which can be shared between surveys and hence helps in easy management of participants.Your task is to create video tutorials showing how to use this new feature.

The Video should include:
 * Different ways in which the user can import/export participants using the CSV

Task Steps:
 * Have a look at http://docs.limesurvey.org/Central+Participants+Database
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Create a video tutorial about using the Central Participant Database and it's various features mentioned in what the video should include
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

Training: Create a video tutorial on how to use the new Central Participant Database Feature - Other Features
Idea posted by: Aniessh Sethh

Since Version 2 LimeSurvey offers a new feature Central Participant Database which is a central database of participants which can be shared between surveys and hence helps in easy management of participants.Your task is to create video tutorials showing how to use this new feature.

The Video should include:
 * Different type of attributes that can be created by CPDB with multilingual support
 * Share Feature with user edit rights of CPDB
 * The Blacklist feature of CPDB
 * User id editable feature of CPDB

It might be best to record each video section separately and then join the video at the end.

Task Steps:
 * Have a look at http://docs.limesurvey.org/Central+Participants+Database
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Create a video tutorial about using the Central Participant Database and it's various features mentioned in what the video should include
 * Show the video to your mentor and discuss necessary changes.
 * When you are done, upload the video at LimeSurvey's youtube channel and also add it at the online documentation.

Documentation : Change the screenshots of documentation and improve it to depict changed icons and new features
Idea posted by: Aniessh Sethh

Since Version 2 LimeSurvey offers a new feature Central Participant Database which is a central database of participants which can be shared between surveys and hence helps in easy management of participants. However, since the documentation was first written there has been many UI changes and this task requires you to add new screenshots depicting the changes, also there has been new features added such as overwriting attribute values even if participant is already present in token table of that particular survey, you need to update that too.
 * Have a look at http://docs.limesurvey.org/Central+Participants+Database
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Take new screenshots and update http://docs.limesurvey.org/Central+participants+database
 * Show the documentation to your mentor and discuss necessary changes.
 * Make the changes and complete the task

Documentation & Training: Create an article on how to use LimeSurvey to create and distribute a customer satisfaction survey
Show current and potential LimeSurvey users how they can use LimeSurvey to do customer satisfaction surveys.

The article should include:
 * 1) An Introduction.
 * 2) Setting up an customer satisfaction survey with LimeSurvey.
 * 3) Importing the tokens into the customer satisfaction survey.
 * 4) Sending out invitations and reminders.
 * 5) Viewing statistics and exporting results.
 * 6) Provide a link to the example customer satisfaction survey.
 * 7) Article conclusion.

Task Steps:
 * Create the customer satisfaction survey and test it.
 * Discuss the customer satisfaction metrics measured with your mentor.
 * Write the article.
 * Submit the article to your mentor for review.

Documentation & Training: Update the LimeSurvey glossary
Idea posted by: Mazi 

Sometimes you stumble upon a LimeSurvey feature and don't know about any details. Since LimeSurvey offers have quite a wide range of features, we have created an alphabetical list of keywords like assessments, conditions, label sets, quotas, ... with 2-3 sentences to describe each feature will help a lot. With the new LimeSurvey 2 release, some new features are available which are not listed at the LimeSurvey glossary yet.

Task steps:
 * Do some research about new features at LimeSurvey 1.92 and 2.0. Google is your friends and you should find some forum topics about this as well.
 * Also have a look at the english manual and check which features exist there: http://docs.limesurvey.org/English+Instructions+for+LimeSurvey but are not listed at the glossary
 * Make a list of 8-10 new glossary keywords and show it to your mentor.
 * Create a user accout at www.limesurvey.org. Once done, click on the "documentation" link at the menu to be redirected to the wiki. You should already be logged in there and can edit pages now.
 * Add the new keywords together with a feature description of 2-3 sentences and if possible link to the according english manual pages.
 * Ask others at our forum (or other places) to add missing features.
 * Discuss the updated glossary entries with your mentor.

Documentation & Training: Rewrite the survey settings page
Idea posted by: Mazi 

At LimeSurvey 2 the survey settings are split up into multilingual "text elements" and "general settings". There are some new settings available, too, so the documentation needs an update.

Task Steps:
 * Read the existing outdated documentation.
 * Check how the settings are structured at LimeSurvey 2 (we can provide you with login data to our test system).
 * Compare the current structure to the existing documentation.
 * Rewrite the documentation including inserting cropped screenshots where needed.
 * Submit your documentation for review by your mentor.

Documentation & Training: Update the LimeSurvey 2.0 database layout
Idea posted by: Mazi

The documentation of the LimeSurvey database layout is oudated (see http://docs.limesurvey.org/LimeSurvey+1.8+database+layout+documentation&structure;=LimeSurvey+development). Your task is to have a look at the current layout, update the documentation and the table description.

Task steps:
 * Have a look at http://docs.limesurvey.org/LimeSurvey+1.8+database+layout+documentation&structure;=LimeSurvey+development
 * Download and install LimeSurvey 2
 * Install phpmyadmin: http://www.phpmyadmin.net/home_page/downloads.php
 * Have a look at the current database layout and compare it to the outdated docs.
 * Update the old document, list missing tables and columns, mark dependencies and keys, write a short description on what each table is used for.
 * If you have problems to find it please get in touch with us on IRC. #limesurvey@freenode.org (http://www.limesurvey.org/en/community-services/live-chat)
 * Discuss the work with your mentor
 * Add your file at our wiki (Create a user account at www.limesurvey.org. This can be used to log in at the wiki as well. After having registered, click the "documentation" link on the LimeSurvey main page and navigate to the page you want to update).

Documentation & Training: Create a video tutorial on how to use filters at the LimeSurvey statistics
Idea posted by: Mazi

LimeSurvey offers detailed statistics at the admin backend. Unfortunately, lots of users don't know that they can filter data and limit statistics to certain questions only.

To make the filtering more clear to the user, a video showing how to set filters and demonstrating other statistic features should be added.

Task Steps:
 * Create a simple 5-6 question survey.
 * Fill out the survey ~20-30 times (ask your friends for some help) to create some data to be used by the statistics.
 * Explore the statistics and play around with the filter options.
 * Create a short video showing how to set different filters for a survey and how to do cross tabulation.
 * Show the video to your mentor
 * Embed the video at the statistics wiki page.

{|
 * Recommended skills||Mentor(s)
 * Wiki editing, LimeSurvey, video capture Mazi
 * Wiki editing, LimeSurvey, video capture Mazi

}

Documentation & Training: Document LimeSurvey 2 installation procedure
LimeSurvey 2.0 has a new automatic installer which makes installation process a cake-walk. Hence, installation procedure needs to be updated explaining each and every step of the installation procedure and possible errors/warnings that a user might see during installation of LimeSurvey and there solutions.

Task Steps:
 * Download LimeSurvey 2
 * Read existing installation procedure.
 * Run the automatic installer in English and create a nice screenshot of every single step.
 * Make a list of required user inouts for each step.
 * Add the single steps to the wiki. Add a screenshot for each step and describe each user input so the user will know exactly what to put in there.
 * Write down any error/warning you see during installation or while playing around with it.
 * Fill the troubleshooting section on the installation FAQ wikipage with all possible warnings a user might see and the solution(s).

Documentation & Training: Create a new wiki page for setting default answers
At LimeSurvey 1.92 we extended the feature for setting default answers to questions. This isn't documented well, there needs some work to be done:

Task Steps:
 * Create an account at www.limesurvey.org which can also be used to edit our wiki.
 * Add a note to the old documentation that the feature was extended at LimeSurvey 1.92 and later and link to the new wiki page
 * Create a new wiki page (or ask your mentor to do it) called "Setting default answers".
 * We will provide you with a login to a LimeSurvey system which contains a survey with all available question types. Check each question type if it supports the default answers feature. Note all supported question types and add the list to the wiki page.
 * Write some introductory text what default answers can be used for.
 * Have a look at the Pre-filling a text field at LimeSurvey 1.92 using default answers blog post and port the example to the wiki.
 * Search the forum for examples how to set default answers to a hidden question and what it can be used for. Add this to the wiki page as well.
 * Referring to the above, also search for how default answers for hidden questions can be used for quotas.
 * Show the new wiki page to your mentor for discussion.

Research: Usability testing
Usability testing and user input is a great source of ideas for improving your application. The goal of this assignment is to identify usability problems in LimeSurvey and discussing possible solutions for them.

We will provide you with username/password for a LimeSurvey 2.0 system. We advice to google for common usability problems before starting this assignment as a source of inspiration.

The general steps for this assignment would be:
 * 1) Work with LimeSurvey like a regular user would:
 * 2) Set up a new survey
 * 3) Answer the survey at least once
 * 4) Make changes to the survey
 * 5) Use and export the results
 * 6) &hellip; (be creative!)
 * 7) Identify usability problems in LimeSurvey and create a list:
 * 8) What was good/lacking in LimeSurvey?
 * 9) What was easy/hard to do?
 * 10) For each issue on your list, think how we could improve LimeSurvey to make it more user friendly.
 * 11) Create a summary (0.5 - 1 page) of your findings.
 * 12) Discuss possible solutions to these usability problems with your mentor
 * 13) For each issue identified as a usability problem create a feature request at our idea tracker.

Research: Ask LimeSurvey users which information is missing or hard to find at the LimeSurvey website
Idea posted by: Mazi

The LimeSurvey website needs a refurbishing and we also think that the site structure should change. In order to find out which information is too hidden or generally missing, we need you to do some investigation:

Task Steps:
 * Requirement is that you have not worked with LimeSurvey before. Think you want to do a survey to register people for an event and want to use LimeSurvey. Go to www.limesurvey.org as a start and from there search for the information you need.
 * Download and install the software and create a simple survey asking for "Name", "Email", "Gender", "Age" and two more useful questions of your choice.
 * Make notes which information you were looking for (like "Where can I download the software?", "Where are the installation instructions?", "Where do I find tutorials?",...) and if it was difficult to find them.
 * Your list should include 6-10 different kind of informations you were looking for and related problems about finding them.
 * Looking at the list and thinking of your requirements, make suggestions on how to improve our website and manual
 * Discuss the list and your proposed solutions with your mentor
 * Write a short summary which includes the problems you noticed and possible solutions.
 * Post your finding at the forums at www.limesurvey.org to start a discussion with others. Provide your mentor with the link.

Research: Sum up forum discussion about which information is missing or hard to find at the LimeSurvey website
Idea posted by: Mazi

This task can only be executed if task "Ask LimeSurvey users which information is missing or hard to find at the LimeSurvey website" is completed. Do NOT start to work on this before that or your work will most likely be futile.

At task "Ask LimeSurvey users which information is missing or hard to find at the LimeSurvey website" we present a summary of information that might be hard to find on our website. This is to be discussed at the forums (the forum topic should already exist if previous task is done). We hope to have a lengthy discussion with our users and then need a summary of the most mentioned problems.

Task Steps:
 * Think you want to do a survey to register people for an event and want to use LimeSurvey. Go to www.limesurvey.org as a start and from there search for the information you need.
 * You don't need to download and install the software and create a survey, just think of each step needed until you have successfully set up a survey asking for "Name", "Email", "Gender", "Age" and two more useful questions of your choice.
 * While searching the website/manual for the required information, make notes which information you were looking for (like "Where can I download the software?", "Where are the installation instructions?", "Where do I find tutorials?",...) and if it was difficult to find them.
 * Hand the notes to your mentor.
 * Go to the forum topic which discusses the hard to find information. Join the discussion with your findings.
 * Once this topic has received more than 20 replies, start scanning the details
 * Write a short summary which includes the problems you noticed and possible solutions.
 * Provide your mentor with the link.

Research: Analyse LimeSurvey usage - Create a short survey about most used features
Idea posted by: Mazi

From time to time LimeSurvey runs some surveys itself, we simply use those surveys to find out more about our users. The resulting data tells us a lot about the areas where we have to improve the program and makes it easier to prioritize tasks.

There are several survey related features like conditions, assessments or quotas and we want to know to what extend they are used. So let's create a survey and ask for these details.

Task Steps:
 * Have a look at the LimeSurvey documentation and make a list of survey related features
 * Think about which information might be important and which questions could be asked
 * Think how one can best ask for some free text feedback for certain features.
 * Discuss the questions and your proposed survey design with your mentor
 * After we have agreed on the questions we want to ask, set up the survey at our online system and test it carefully.
 * Start the survey and write a short description so we can annunce it at the forums, on twitter at on the LimeSurvey homepage.

Research: Analyse LimeSurvey usage - Write a summary about the "most used LimeSurvey features" survey
Idea posted by: Mazi

Note: This task can only be started after the "Create a short survey about most used features" task was completed!

Once the "Create a short survey about most used features" task was completed and there are at least 50 answers to the survey, we need a clever person to analyse the details and write a summary

Task Steps:
 * Have a look at the "Create a short survey about most used features" at our online system (we will provide you with username/password)
 * Export the survey data to an application of your choice or use the existing analysis features
 * For each LimeSurvey feature, write a short text about the usage and positive/negative comments.
 * After you have done the analysis of each feature, write a summary which points to the features which have received most negative comments
 * Write a short description about what you did related to this task so we can use it when presenting the results to our community.

Outreach: Blog about LimeSurvey
Write an independant article about LimeSurvey on your blog. Explain what are advantages, what are disadavantages of the software - show how to create a first survey and also write about problems are on the way getting there. Motivate people to participate to help use make LimeSurvey better. The article should be in-depth and correct. It should help other to get hooked up without false promises.

Task Steps:
 * Use LimeSurvey to setup your own survey (you can use our demo version for that)
 * Blog about your experience after discussing your article with us.

Outreach: Update the German Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native German speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the German Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the German Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Spanish Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Spanish speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Spanish Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Spanish Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the French Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native French speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the French Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the French Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Italian Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Italian speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Italian Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Italian Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Polish Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Polish speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Polish Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Polish Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Portuguese Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Portuguese speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Portuguese Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Portuguese Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Romanian Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Romanian speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Romanian Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Romanian Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Russian Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Russian speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Russian Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Russian Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Outreach: Update the Chinese Wikipedia article about LimeSurvey
We have recently updated the English Wikipedia article about LimeSurvey. Unfortunately, other language versions are quite outdated, so time to get this updated as well.

Task Steps:
 * Requirements: You should speak English well to understand the content of the English Wikipedia article AND you need to be a native Chinese speaker.
 * Open the English Wikipedia article about LimeSurvey.
 * Open the Chinese Wikipedia article about LimeSurvey and compare both. Probably most of the article needs an update.
 * Update the Chinese Wikipedia article.
 * Show the updated Wikipedia article to your mentor.

Quality assurance: Unify wording in the application
By today LimeSurvey has over 3000 text strings that need to be translated for every language we support. However we know that some of these strings are very similar and could be unified so it is less work for our translators.

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Create an account on http://www.limesurvey.org, log in once and then login at http://translate.limesurvey.org
 * Choose any translation, sort by original strings and find strings that seem to be very similar and can be unified.
 * Change the source code and unify these strings there. (should be at least 20 strings)
 * Submit a gitHub pull request.

Quality assurance: Correct English texts in the application.
There are still several English texts in the application which are spelled wrong or have wrong casing. Most of this can be found in the English to English translation

They need to be corrected in the source.

Task Steps:
 * Set up your LimeSurvey development environment (if not has already happened)
 * Open the English to English translation at http://translate.limesurvey.org/projects/limesurvey2/en/default
 * Find each string in the LimeSurvey source and correct it using the 'translation' - please also obey our localization guidelines for this.
 * Submit a gitHub pull request.

Quality Assurance: Analyse user feedback and port suggestions to our idea tracker
From time to time LimeSurvey conducts user feedback surveys to find out how our users use the software and which features they are missing. We received quite a lot feedback during the last months and a lot of valuable information can be found at the textual feedback. It's a mixture of praise, suggestions for new features and other useful comments. This needs to be summed up. Also useful suggestions for new features should be ported to our idea tracker so we have this on our list for future development.

Task Steps:
 * We will give you access to our survey system so you can export the survey data of the last month into MS Word, Excel or what else you like.
 * Go through all the textual user feedback and create a list summing up common complaints, suggested features and the like.
 * Once you are done, order the lists by frequency and present it to your mentor.
 * Your mentor will go through your list and mark those ideas worth porting to the idea tracker.
 * Add ideas to the idea tracker

Quality Assurance: Find and report 3 bugs or GUI design issues at the new Central Participant Database feature (1/2)
Idea posted by: Mazi

During last years Google Summer of Code a cool new feature called "Central Participant Database" was coded. It is available since LimeSurvey 2.0. Though this feature was carefully tested there might still be some bugs in there and we want you to have a detailed look at this feature to check if you can find any weird behavior, misleading user interface or bugs.

Task Steps:
 * Have a look at the CPDB documentation.
 * We will provide you with access to a LimeSurvey 2 test system. Upload a simple survey (we can provide samples) and add token data to the survey.
 * Also add data to the CPDB feature.
 * Test this feature by checking features like
 * creating users
 * importing/exporting participants
 * adding attributes
 * moving people and attributes to surveys
 * moving people and attributes from the token screen to CPDB
 * On your list note any weird behavior, error messages or anything else you think is worth being improved.
 * Your mentor will go through your list and will discuss the details with you.
 * Add all issues to the bugtracker.

Quality Assurance: Find and report 3 bugs or GUI design issues at the new Central Participant Database feature (2/2)
Idea posted by: Mazi

During last years Google Summer of Code a cool new feature called "Central Participant Database" was coded. It is available since LimeSurvey 2.0. Though this feature was carefully tested there might still be some bugs in there and we want you to have a detailed look at this feature to check if you can find any weird behavior, misleading user interface or bugs.

Task Steps:
 * Have a look at the CPDB documentation.
 * We will provide you with access to a LimeSurvey 2 test system. Upload a simple survey (we can provide samples) and add token data to the survey.
 * Also add data to the CPDB feature.
 * Test this feature by checking features like
 * creating users
 * importing/exporting participants
 * adding attributes
 * moving people and attributes to surveys
 * moving people and attributes from the token screen to CPDB
 * On your list note any weird behavior, error messages or anything else you think is worth being improved.
 * Your mentor will go through your list and will discuss the details with you.
 * Add all issues to the bugtracker.

User interface: Token section workflow improvements
Idea posted by: Mazi

There are some sections at the LimeSurvey admin backend like the token part at which workflow improvements can be added, e. g. when switching to the token admin screen you don't see a list of available tokens. You have to click on the "Display Tokens" icon first.

Task Steps:
 * Install LimeSurvey 2, create a import a simple survey and add 2-3 token entries.
 * Search the code for the snippet which is called when a user calles the token admin screen.
 * Change the code so that a user is automatically directed to the list of tokens.
 * Discuss the patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

User interface: Improve "Add answer options" GUI
Idea added by: Mazi

There are some sections at the LimeSurvey admin backend like the survey designer at which workflow improvements can be added, e. g. when adding new answer options and clicking into the answer text field, you have to manually delete the "Some example subquestion" text (For further answer options the text is deleted automatically when clicking into the input field.).

Task Steps:
 * Install LimeSurvey 2, create a simple survey and add a "list radio" question. You are then asked to add answer options.
 * Search the code for the snippet which is called when a user adds answer options.
 * Add some Javascript to automatically delete the text once a user clicks into the input field.
 * Discuss the patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

User interface: User management workflow improvement (1/2)
Idea added by: Mazi

There are some sections at the LimeSurvey admin backend like when adding users at which workflow improvements can be added, e. g. after having added a new user there is a summary screen showing the username and email address. You can then click the "set user permissions" button which leads you to the next logical step of setting the permissions for this user (a user without any permissions set doesn't make much sense). This work flow can be improved by removing the step in between.

Task Steps:
 * Install LimeSurvey - Add a new user to check the work flow details.
 * Search the code for the snippet which is responsible of showing the summary screen with username and email address.
 * Change the code so that the summary is shown as a pop up (see pop up when renaming a survey for example) and lead the user directly to the admin screen where permissions for the newly added user can be set.
 * Discuss the new work flow and patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

User interface: User rights management workflow improvement (2/2)
Idea added by: Mazi

NOTE: This task can only be executed if task "User rights management workflow improvement (1/2)" is completed. Do NOT start to work on this before that or your work will most likely be futile.

There are some sections at the LimeSurvey admin backend like when setting user rights at which workflow improvements can be added, e. g. after having added user rights there is a summary screen showing "User permissions were updated successfully.". Only following option is to click the "continue" button which leads him to the user overview. This work flow can be improved by showing the feedback as a pop up and redirecting the user to the next step of setting template rights

Task Steps:
 * Install LimeSurvey - Add a new user and add user rights to check the work flow details.
 * Search the code for the snippet which is responsible of showing the "User permissions were updated successfully." summary.
 * Change the code so that the summary is shown as a pop up (see pop up when renaming a survey for example) and lead the user directly to the admin screen where template permissions for the newly added user can be set.
 * Discuss the new work flow and patch with your mentor and ask for feedback.
 * Submit a github pull request.
 * Done!

User interface: Create mockups for Central Participants Database attribute mapping screens
Idea posted by: Aniessh Sethh

Since Version 2 LimeSurvey offers a new feature Central Participant Database which is a central database of participants which can be shared between surveys and hence helps in easy management of participants.Your task is to suggest some new designs with the help of mockups to improve the attribute map screen. We are looking for some out of the box thinking as to how best this UI can be made to handle 100's of attribute mappings which is quite difficult with the current UI.

Task Steps:
 * Have a look at http://docs.limesurvey.org/Central+Participants+Database
 * Set up your LimeSurvey development environment (if not has already happened)
 * Checkout and install the 2.10 branch of LimeSurvey
 * Have a look at the attribute map screen and try to map large number of attributes to understand the problem associated with the current UI.
 * Analyse the problem and think how to improve the UI.
 * Discuss the issues and your proposed solution with your mentor
 * Create drafts of the new UI and add some description of the user interacting with the screens.
 * Discuss the work with your mentor.
 * Create a feature request in our bugtracker describing the change and attach your images + description.

User interface: Create mockups for integrating export results screens into one feature
Idea by: mdekker

LimeSurvey currently offers response export in three different screens: export to application, export to Spss and export to R. We wish to make this only one screen, based on export to application where the export to Spss and R should be added. The problem is those exports require two downloads and should show a little help text when selected and possibly have other selections that are mandatory.

Think of a way to merge the three screens into one while keeping it logical for the end user. The actual coding of the change is not part of this task.

Task steps:
 * Use the online demo and check the export to application, export to R and export to SPSS screens
 * Do a test export to check the different work-flow and note all steps involved.
 * Analyse the problem and think how to best merge the three features on one screen.
 * Discuss the issues and your proposed solution with your mentor
 * Create three drafts of an overworked and merged export screen and add some description of the user interacting with the screens.
 * Discuss the work with your mentor.
 * Create a feature request in our bugtracker describing the change and attach your images + description.

=Idea Template=

This is just a template you can use to add your ideas:

Code/Documentation & Training/Outreach & Research/Quality assurance/User interface: Some descriptive task description
Idea by: 

Here comes some text describing the current situation and how LimeSurvey will benefit from this task. The description should make clear what this task is about.

Task steps:
 * Some steps like...
 * Install LimeSurvey or use the online system we provide
 * Analyse the problem
 * Discuss the issue and your proposed solution with your mentor
 * Code/document/translate/... and submit your work
 * Discuss the work with your mentor
 * Check-in your changes into the limesurvey svn trunk/add it to the wiki/...

=We want your ideas!=

What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our forums, mailing lists or at #limesurvey on irc.freenode.net.

Getting Started

 * How to get started with LimeSurvey

How to Get Started With LimeSurvey:

- setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!