<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Magiclko</id>
	<title>LimeSurvey Manual - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.limesurvey.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Magiclko"/>
	<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/Special:Contributions/Magiclko"/>
	<updated>2026-08-13T12:27:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2492</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2492"/>
		<updated>2011-03-08T20:06:09Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter, jQuery. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Adding new questions/subquestions and groups dynamically==&lt;br /&gt;
&lt;br /&gt;
Currently in LimeSurvey once a survey is activate we can not&lt;br /&gt;
*Add or delete groups&lt;br /&gt;
*Add or delete questions&lt;br /&gt;
*Add or delete subquestions or change their codes&lt;br /&gt;
&lt;br /&gt;
The idea is to cover these shortcomings. And in addition, all those participants who have already taken that survey must also be notified about the changes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Experience with a PHP framework like CakePHP or CodeIgniter and knowledge of inner working of LimeSurvey is must!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2493</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2493"/>
		<updated>2011-03-03T13:09:01Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter, jQuery. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Adding new questions/subquestions and groups dynamically==&lt;br /&gt;
&lt;br /&gt;
Currently in LimeSurvey once a survey is activated we can not&lt;br /&gt;
*Add or delete groups&lt;br /&gt;
*Add or delete questions&lt;br /&gt;
*Add or delete subquestions or change their codes&lt;br /&gt;
&lt;br /&gt;
The idea is to cover these shortcomings. And in addition, all those participants who have already taken that survey must also be notified about the changes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Experience with a PHP framework like CakePHP or CodeIgniter and knowledge of inner working of LimeSurvey is must!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2494</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2494"/>
		<updated>2011-03-02T21:20:15Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter, jQuery. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2495</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2495"/>
		<updated>2011-03-02T20:33:39Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2496</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2496"/>
		<updated>2011-03-02T20:21:16Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2497</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2497"/>
		<updated>2011-03-02T20:20:05Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, CodeIgniter, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CodeIgniter, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussion about the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 conditions engine] is an interresting start. Note however that the task will be easier this year because of the existing conditions engine and the stable database layout of LS1.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Custom Report Generation==&lt;br /&gt;
&lt;br /&gt;
The task is to make a module which will generate custom reports. Module should be able to do these things(at least) :-&lt;br /&gt;
*Creating various types of reports i.e. using tables, pie charts, graphs and bar-charts to name few.&lt;br /&gt;
*The resulting charts and other illustrations should be easy to read and understand, and should include the ability to export into standard office suites.&lt;br /&gt;
*Reports can be general or survey specific.&lt;br /&gt;
**General in the sense that it should show basic findings of a general survey graphically like number of users completing the survey, average time taken to complete the survey, average number of correct responses etc.&lt;br /&gt;
**Survey specific results should also be addressed properly e.g. how many users choose first option as there answer of a particular question, how many users didn&#039;t answer a specific question etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter. Strong mathematical background will help!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2500</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2500"/>
		<updated>2011-03-01T21:08:50Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2501</id>
		<title>Project ideas for GSOC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2501"/>
		<updated>2011-03-01T21:07:56Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Welcome=&lt;br /&gt;
&lt;br /&gt;
Welcome Google Summer of Code Student aspirants (:razz:)&lt;br /&gt;
&lt;br /&gt;
This page lists project ideas developed by the LimeSurvey Community. These tend to be areas that will get the most support as projects since they have been developed by people who know the project and what it needs the most. &#039;&#039;&#039;However&#039;&#039;&#039;, if you have your own idea for a project discuss your awesome idea with us in our [http://www.limesurvey.org/en/forum forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at [http://www.limesurvey.org/en/support/live-chat #limesurvey on irc.freenode.net]. Then submit your proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Central participants database (User panel)==&lt;br /&gt;
&lt;br /&gt;
Develop a central &#039;participants&#039; database for LimeSurvey that can be used as a central registry of participants between surveys. The database should allow&lt;br /&gt;
* adding/removing of users along with flexible data to store related information for users&lt;br /&gt;
* simple copying of user-information to individual survey token tables&lt;br /&gt;
* ability to link user entries with survey responses if the linked survey was not unanimous (UUIDs?)&lt;br /&gt;
* ability for survey participants to register in the panel&lt;br /&gt;
* ability to update the flexible user data from collected results&lt;br /&gt;
* a &#039;do not email&#039; blacklist to allow people to automatically unsubscribe&lt;br /&gt;
* data ownership features for multi-user systems - allow different LimeSurvey users to &#039;own&#039; different participants&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Database and PHP coding&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Moderate to high - the coding would be relatively simple, but will entail complex relationships&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jason Cleeland&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey front-end to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However proting the whole application is too much for one students. That is why we will split the task into smaller ones. This particular task deals with porting the front-end of LimeSurvey to CodeIgniter - this means all the parts that can be seen by the average survey participant:&lt;br /&gt;
*Survey taking&lt;br /&gt;
*Public statistics&lt;br /&gt;
*Central landing page&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and other students will port the back-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you fulfill the requirements above the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new fundaments while the fance walls can be built later. So we lay the fundament first and make it stable, then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmp]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Port the LimeSurvey back-end (administration) to CodeIgniter==&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is still written using old procedural code. We want to take the next step into the future and use a MVC-framework name CodeIgniter and port the whole application to this new framework. However porting the whole application is too much for one student. That is why we will split the task into smaller ones. This particular task deals with porting the backend of LimeSurvey to CodeIgniter - this means all the parts that can be seen by an administration user.&lt;br /&gt;
&lt;br /&gt;
During the rewrite you will be prompted also to encapsulate certain functions to objects where easily doable and it makes sense - we do not want you to rewrite everything. Since you are only working on a certain part of LimeSurvey and another student will port the front-end (=administration) of LimeSurvey you will be required to coordinate your coding with the other student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OOP experience in PHP and experience with a PHP framework like CakePHP or CodeIgniter are definately a must. You should get busy with LimeSurvey as early as possible. Students can raise their chance to get accepted by showing off according knowledge about LimeSurvey inner workings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are a very good PHP coder (and fit the demanded skills above) then the main difficulty in this task is the sheer size of it. The administration consists of a great number of different screens and functions which need to be ported. If you don&#039;t manage to port all of it then at least the unported parts still have to be working - still best would be if you manage to do the whole administration.&lt;br /&gt;
&lt;br /&gt;
Also the difficulty in this task is to gradually modernize an application with a modern coding approach while resisting the natural urge to rewrite everything at once. Our mantra to modernizing the application is that the framework is just laying the new foundation while the fancy walls can be built later. So we lay the foundation first and make it stable (your task in the administration), then we build new walls (See also [[LimeSurvey roadmap|the LimeSurvey roadmap]] )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault le Meur (tlemeur)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Implement a modular authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a modular authentication &amp;quot;framework&amp;quot; for LimeSurvey as well as some authentication modules. The Authentication framework will define the API each authentication plugin must (or may) implement and propose basic methods that can be used by plugins (for instance how to store the plugins parameters in DB, how to display a form using the survey template). A plugin will be responsible to implement, for each particular authentication backend, specific methods (some mandatory, some optionnal) such as: user authentication, user provisionning, user rights, ...&lt;br /&gt;
&lt;br /&gt;
Currently authentication is only used for the survey-administration GUI and not the participants interface (tokens are used for this). With the new authentication framework it will be possible to define several authentication backends and use some of them for participants-authentication.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this interface must return the identity of the authenticated user if authentication is successful.&lt;br /&gt;
** Authentication may not always be based on a simple user/password form, so the proposed framework must be generic enough to enable authentication based on other schemes (using any numbers or interaction-pages between the server and the end-user or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning:&lt;br /&gt;
** when activated on the survey administration interface, an authentication module might be able to create a newly authenticated user into the LimeSurvey internal DB (which is required for setting the user rights on the platform). The newly created user can be assigned a default profile or a per-user profile (queried from an external database).&lt;br /&gt;
** when activated on the participants interface, the authentication module will provision the token table of the correspoding survey // alternatively the general-purpose cross-survey participants-database as described in the above GSoC idea.&lt;br /&gt;
&lt;br /&gt;
The already existing authentication schemes will be ported to the new framework (internal-DB and Web server authentication delegation) and at least a new one will be implemented (openID, CAS, Shibboleth).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, SQL, Authentication protocols (openID, CAS, LDAP-bind, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
lemeur (Thibault Le Meur)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010++Authentication+framework#FAQ FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
== Rewrite and extend the conditions in LimeSurvey==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Rewrite the conditions engine that will let survey administrators design, store and evaluate conditions. Conditions must be implemented in such a way that they can be used in several features such as question branching (survey logic), assessments, quotas, ...&lt;br /&gt;
&lt;br /&gt;
This projects will at least end up with:&lt;br /&gt;
* A working GUI to design complex conditions:&lt;br /&gt;
** several atomic conditions can be combined by AND or OR logical operators and will support for grouping conditions with parentheses&lt;br /&gt;
** an atomic condition representation can be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;left operand&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;right operand&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
** an atomic condition editor will implement&lt;br /&gt;
*** several operators (equality, inequality, string-comparisons, numerical-comparisons, regexp),...&lt;br /&gt;
*** meta operators surch as &#039;Not displayed&#039;&lt;br /&gt;
** left and right operands can be answers from previous questions, or a static values. It should be extensible so that we are able in the future to use more complex operand such as the result of a specific function (for instance the sum of some previous integer questions)&lt;br /&gt;
* A working DB storage backend using a string in [http://en.wikipedia.org/wiki/Reverse_Polish_Notation RPN] (Reverse Polish Notation) to describe each condition&lt;br /&gt;
* The evaluation of conditions for the question branching feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JQuery and User Interface Design Skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
High&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Thibault Le Meur (lemeur)&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to know more&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please read the [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine FAQ about this project]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Idea template==&lt;br /&gt;
&lt;br /&gt;
Describe the idea here in general terms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain what sort of coding skills would be needed for a student to implement this project&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Explain the level of difficulty involved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Put your name (and tag) here if you are willing to mentor a student for this idea&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=More information=&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
[[GSoC getting started|Check out our &#039;Get started&#039; page]] for setting up the development environment, coding standards, and all the other important stuff that you need to know before the real fun begins!&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
Check out [[GSoC FAQ|our GSoC FAQ page.]]&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Label_sets&amp;diff=1838</id>
		<title>Label sets</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Label_sets&amp;diff=1838"/>
		<updated>2011-02-22T14:33:22Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;The function and usage of label sets have change radically with version 1.90. This page refers to v 1.90 or newer versions.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Label sets are basically list templates where each list has a set of codes with labels and can be used in most question types either as answers or as subquestions. Contrary to earlier versions of LimeSurvey label sets are merely copied to the particular question as subquestion or answers. So if you change a label set after you &#039;used&#039; it the changes are not propagated to the questions where a label set has been used as a template.&lt;br /&gt;
&lt;br /&gt;
This new usage of label sets gives much more flexibility for future development and makes the structure of a question more logical.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;&#039;&#039;&#039;Hint:&#039;&#039;&#039; A label set must be at least contain the same base language as the survey, else you will not be able to use it for any question of your survey.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of label set is as follows. If one wants to define a custom 7-point scale, a label set provides this function. In this example, a very simple custom label set with the code/label pairs is shown. Note that the label is what appears in the actual questions.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Code&#039;&#039;&#039;||&#039;&#039;&#039;Label&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1||Not useful at all&lt;br /&gt;
|-&lt;br /&gt;
|2||2&lt;br /&gt;
|-&lt;br /&gt;
|3||3&lt;br /&gt;
|-&lt;br /&gt;
|4||Somewhat useful&lt;br /&gt;
|-&lt;br /&gt;
|5||5&lt;br /&gt;
|-&lt;br /&gt;
|6||6&lt;br /&gt;
|-&lt;br /&gt;
|7||Very useful&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Another graphical example:&lt;br /&gt;
&lt;br /&gt;
Graphic (3 different smileys) instead of label text:&lt;br /&gt;
&lt;br /&gt;
[[File:3xSmiley-Question.gif]]&lt;br /&gt;
&lt;br /&gt;
=How to...=&lt;br /&gt;
&lt;br /&gt;
Click on the [[File:labels.png]] &amp;quot;Edit/Add Label Sets&amp;quot;-Icon in the Administration-Menu to edit, create, delete, import or export label sets used in the &#039;flexible&#039; labels questions.&lt;br /&gt;
&lt;br /&gt;
==...add a new label set==&lt;br /&gt;
*&#039;&#039;&#039;Set Name:&#039;&#039;&#039; Each new label set has to be given a name.&lt;br /&gt;
*&#039;&#039;&#039;Languages:&#039;&#039;&#039; Every label set must be specified for the language it&#039;s used for. You can choose as many languages from the menu as you want.&lt;br /&gt;
&lt;br /&gt;
==...import a label set==&lt;br /&gt;
*Choose a previous exported label set in a .csv-Format and click on the &amp;quot;Import Label Set&amp;quot;-Button to import. Alternative: import a whole survey - in this case the Label-Sets are imported with the questions.&lt;br /&gt;
*To edit a label set outside of LimeSurvey (for instance, using a text editor or Excel), see this tutorial: [[Editing label sets using Microsoft Excel]].&lt;br /&gt;
&lt;br /&gt;
==...edit, delete, or export a label set==&lt;br /&gt;
&lt;br /&gt;
Choose an already existing label Set in the drop-down-Box in the label set administration bar to edit, delete or export a label set.&lt;br /&gt;
*&#039;&#039;&#039;Edit label set:&#039;&#039;&#039; Here it&amp;amp;acute;s possible to rename the Label Set and add/remove languages for this Label Set.&lt;br /&gt;
**To edit a label set outside of LimeSurvey (for instance, using a text editor or Excel), see this tutorial: [[Editing label sets using Microsoft Excel]].&lt;br /&gt;
*&#039;&#039;&#039;Delete label set:&#039;&#039;&#039; After a pop-up, you can delete the selected Label Set.&lt;br /&gt;
*&#039;&#039;&#039;Export label set:&#039;&#039;&#039; Export current Label Set to a .csv-File.&lt;br /&gt;
*&#039;&#039;&#039;Labels bar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
+To add a new label you have to fill in a label code, assessment value and label-text and press on the &amp;quot;Add new label&amp;quot;-Button. After this the label should be listed above. It&#039;s possible to use a graphic instead of or additionally to a label text. Just use HTML-code to include the graphic you want, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img border=&amp;quot;0&amp;quot; src=&amp;quot;http://www.yourdomain.at/pics/pic.gif&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your label set has more than one language, you can choose which language you want to edit. Every label needs a code, an assessment value and a title. The code can only be changed in the base language of the Label Set. The assessment value can be ignored (set it to 0) if you do not use [[Assessments|assessments]]. The title is the text, which is displayed in the question.&lt;br /&gt;
*&#039;&#039;&#039;Del-button&#039;&#039;&#039;: You can delete labels with the &amp;quot;Del&amp;quot;-button.&lt;br /&gt;
*&#039;&#039;&#039;Up/down-buttons&#039;&#039;&#039;: It&#039;s possible to change the row of labels by the &amp;quot;Up&amp;quot; and &amp;quot;Dn&amp;quot;-buttons.&lt;br /&gt;
*&#039;&#039;&#039;Fix sort&#039;&#039;&#039;: You can check the consistency and do a sort of the labels by pressing the &amp;quot;Fix Sort&amp;quot;-Button.&lt;br /&gt;
&lt;br /&gt;
Labels which are in use by questions are hyperlinked to the question.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;(:idea:) &#039;&#039;&#039;Hint:&#039;&#039;&#039; The order of the labels can be modified by editing the label-set, however it is not possible to add new labels once the label-set is in use with question of an active survey.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;simplebox&amp;quot;&amp;gt;(:idea:) &#039;&#039;&#039;Hint:&#039;&#039;&#039; Some useful label sets are available on the [http://www.limesurvey.org/en/additional-downloads/Label-Set-Templates/ limesurvey site]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Uploaded resources management=&lt;br /&gt;
&lt;br /&gt;
This tab lets you manage files (pictures, media files) that were uploaded in the HTML Editor.&lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* Browse available files&lt;br /&gt;
* Export files as a ZIP archive&lt;br /&gt;
* Import a ZIP archive of files&lt;br /&gt;
&lt;br /&gt;
Caution:&lt;br /&gt;
* Authorized file extensions are defined in config-defaults.php by your system administrator.&lt;br /&gt;
* Files for the survey are in the upload/labels/&amp;lt;lid&amp;gt; sub directory.&lt;br /&gt;
** Uploaded files will only be seen while browsing resources on this survey objects (labels) not in other labels or objects (groups, questions, answers).&lt;br /&gt;
** However do not expect this limited visibility to ensure confidentiality of the resources as they are reachable with a simple browser to anyone who knows the URL to the file.&lt;br /&gt;
* Creation of sub directories of the ZIP archive won&#039;t work.&lt;br /&gt;
* You can&#039;t import a ZIP file containing sub directories.&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Documentation_Wiki&amp;diff=1908</id>
		<title>LimeSurvey Documentation Wiki</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=LimeSurvey_Documentation_Wiki&amp;diff=1908"/>
		<updated>2011-02-10T09:02:19Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=LimeSurvey manual (1.85 and later)=&lt;br /&gt;
&lt;br /&gt;
The LimeSurvey manual is available in the following languages:&lt;br /&gt;
*[[File:gb.png]] &#039;&#039;&#039;[[English Instructions for LimeSurvey|English]] - This is the base language!&#039;&#039;&#039;&lt;br /&gt;
*[[File:cn.png]] [[Chinese (Simplified) Manual|Chinese (Simplified]])&lt;br /&gt;
*[[File:cn.png]] [[安装|Chinese (Traditional]])&lt;br /&gt;
*[[File:fr.png]] [[Instructions fran&amp;amp;ccedil;aises pour LimeSurvey|French]]&lt;br /&gt;
*[[File:de.png]] [[Deutsche Anleitung f&amp;amp;uuml;r LimeSurvey|German]]&lt;br /&gt;
*[[File:gr.png]] [[Greek Manual|Greek]]&lt;br /&gt;
*[[File:it.png]] [[Documentazione Italiano|Italian]]&lt;br /&gt;
*[[File:jp.png]] [[日本語マニュアル|Japanese]]&lt;br /&gt;
*[[File:pl.png]] [[Podręcznik obsługi|Polish]]&lt;br /&gt;
*[[File:pt.png]] [[Manual de Instru&amp;amp;ccedil;&amp;amp;otilde;es do LimeSurvey|Portuguese]]&lt;br /&gt;
*[[File:es.png]] [[Manual de Instrucciones en Espa&amp;amp;ntilde;ol|Spanish]]&lt;br /&gt;
&lt;br /&gt;
Please note that not all translations are complete/up-to-date.  English is the base language (likely most complete and up-to-date). We always need help to translate pages from English to one of the other languages. If you would like to help, [[Creating, editing and translating LimeSurvey Wiki pages|start here]].&lt;br /&gt;
&lt;br /&gt;
=LimeSurvey development=&lt;br /&gt;
*[[Development overview]] - General pages about LimeSurvey development&lt;br /&gt;
*[[LimeSurvey 1.x development documentation]] - All pages about LimeSurvey 1 development&lt;br /&gt;
&lt;br /&gt;
=Translating LimeSurvey=&lt;br /&gt;
&lt;br /&gt;
If you want to &#039;&#039;&#039;add new translations&#039;&#039;&#039; or &#039;&#039;&#039;correct a translation&#039;&#039;&#039; please follow these instructions:&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=LimeSurvey+1.x+Translating+LimeSurvey How to translate LimeSurvey 1.x]&lt;br /&gt;
&lt;br /&gt;
=Google Summer of Code / Code-In participation=&lt;br /&gt;
*[[LimeSurvey Google Code-in 2010]]&lt;br /&gt;
*[[GSoC_Getting_Started]]&lt;br /&gt;
*[[LimeSurvey GSoC 2011]]&lt;br /&gt;
*[[LimeSurvey GSoC 2010]]&lt;br /&gt;
*[[LimeSurvey GSoC 2009]]&lt;br /&gt;
&lt;br /&gt;
Temporary: [[LimeSurvey Documentation|Shadow, Structured copy]] of this top level page&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=LimeSurvey_GSoC_2011&amp;diff=2021</id>
		<title>LimeSurvey GSoC 2011</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=LimeSurvey_GSoC_2011&amp;diff=2021"/>
		<updated>2011-02-09T11:04:12Z</updated>

		<summary type="html">&lt;p&gt;Magiclko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This is the main page for GSoC2011. Maybe you are interested in one of these subpages:&lt;br /&gt;
*[http://docs.limesurvey.org/Project+Ideas+for+GSOC+2011 Project Ideas for GSOC 2011]&lt;br /&gt;
*text&lt;br /&gt;
&lt;br /&gt;
...or one of these general pages:&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started Getting started]&lt;br /&gt;
*text&lt;/div&gt;</summary>
		<author><name>Magiclko</name></author>
	</entry>
</feed>