<?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=Lemeur</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=Lemeur"/>
	<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/Special:Contributions/Lemeur"/>
	<updated>2026-08-10T14:45:38Z</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=2498</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=2498"/>
		<updated>2011-03-01T21:26:16Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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;
== 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;
==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>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2499</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=2499"/>
		<updated>2011-03-01T21:13:41Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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;
Discussion about [http://docs.limesurvey.org/tiki-index.php?page=GSOC+2010+Condition+engine LS2 FAQ on the conditions engine]&lt;br /&gt;
&lt;br /&gt;
[http://docs.limesurvey.org/tiki-index.php?page=Conditions+Engine The conditions Engine revisited]&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>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2502</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=2502"/>
		<updated>2011-03-01T21:06:05Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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 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;
==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>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2011&amp;diff=2503</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=2503"/>
		<updated>2011-03-01T20:41:56Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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 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;
==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;
----&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>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Statistics&amp;diff=3273</id>
		<title>Statistics</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Statistics&amp;diff=3273"/>
		<updated>2010-12-13T12:56:21Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;The statistics feature is available from the menu of the browse screen, which - of course - is only available once a survey has been activated.&lt;br /&gt;
&lt;br /&gt;
This is a short [http://www.screencast.com/users/healthinformatics/folders/Jing/media/0a3c9a66-fb41-4a84-b7dc-c8af363c391f video tutorial], showing how to get to the statistics screen.&lt;br /&gt;
&lt;br /&gt;
=What is the statistics feature?=&lt;br /&gt;
&lt;br /&gt;
Lets say you&#039;ve got a survey running, or it is finished, and you want to start analyzing the results. LimeSurvey can dump all the results into an Excel spreadsheet (or CSV file, or Microsoft Word file). You can do whatever takes your fancy with the data then. Alternatively you can use the statistics feature to have a look at your data, and start getting some useful information from it.&lt;br /&gt;
&lt;br /&gt;
The statistics feature allows you to &#039;filter&#039; your data and retrieve numbers, and summaries of different fields from it. The statistics script doesn&#039;t attempt to do highly complex filtering - but you&#039;d be surprised at the sort of information that can be easily obtained.&lt;br /&gt;
&lt;br /&gt;
=Viewing Results and Field Summaries=&lt;br /&gt;
&lt;br /&gt;
When you click the &amp;quot;Get statistics&amp;quot; button you will be presented with a list of all available questions. For each question there is a checkbox that can be selected in order to show a summary of this table, and an icon that when clicked (or if the mouse hovers over it) will give you the full text of the question. To view the results for a question or questions, check the checkbox(es) at the top of the question(s) and then click &amp;quot;View stats&amp;quot;. Alternatively to view the results for all available questions, check the &amp;quot;View summary of all available fields&amp;quot; box at the very top and then click &amp;quot;View stats&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will then be given a &amp;quot;Results&amp;quot; table which will indicate the number of cases and a &amp;quot;Field Summary&amp;quot; table for each question selected which will summarize all possible answers in the question(s), their totals and their percentage.&lt;br /&gt;
&lt;br /&gt;
=Filtering data=&lt;br /&gt;
&lt;br /&gt;
As of 1.85+, data can be filtered in several ways:&lt;br /&gt;
#By survey completion - use the dropdown at the top to select Completed, Incomplete or All records. For a discussion on incomplete responses see [[Browsing survey results]].&lt;br /&gt;
#By ID - use the inputs to filter by ID number&lt;br /&gt;
#By response - click on one or more responses in the list under each question to filter the data by those responses (use CTRL/click to select multiple responses in the same question). Note that if you choose to view summary of all available fields (checkbox at top) you will need to select your response filters before checking that box.&lt;br /&gt;
&lt;br /&gt;
Selecting &amp;quot;View stats&amp;quot; will then give you the &amp;quot;Results&amp;quot; table, indicating the number of responses matching your criteria, and a &amp;quot;Field Summary&amp;quot; table for each question selected which will summarize all possible answers in the question(s), their totals and their percentage. It is important to note that these results are a subset of your total responses. So, for example, if your criteria display 146 records out of a total 180, the summary will show the breakdown of just those 146 records for that table.&lt;br /&gt;
&lt;br /&gt;
The images below indicate that I have elected to view the stats for &amp;quot;Employment status&amp;quot; of &#039;&#039;&#039;&#039;&#039;completed records/female/age 18-25&#039;&#039;&#039;&#039;&#039;. This gives me the results for 6 out of 14 records.&lt;br /&gt;
&lt;br /&gt;
[[File:stats_1_823x525.gif]]&lt;br /&gt;
&lt;br /&gt;
[[File:stats_2_823x504.gif]]&lt;br /&gt;
&lt;br /&gt;
Things to be cautious of&lt;br /&gt;
*If you set criteria on the same question that you ask for a summary, then that question will only present answers matching your criteria. So it is good practice not to set any criteria on the same question you are getting a summary of.&lt;br /&gt;
*To select multiple entries for a question hold down the CTRL button when clicking. To &#039;unselect&#039; the last criteria (if you want to clear all criteria from a question) click on the last highlighted answer with the CTRL button.&lt;br /&gt;
&lt;br /&gt;
=Browsing / Exporting filtered results=&lt;br /&gt;
&lt;br /&gt;
If you want to export the responses that match your criteria, click on the &amp;quot;export&amp;quot; button at the bottom of the &#039;Results&#039; table. This will bring up the usual export screen, however when you export the results you will only receive the responses that match your criteria. Similarly, click on browse to view the matching responses in the browse screen.&lt;br /&gt;
&lt;br /&gt;
=Graphs=&lt;br /&gt;
&lt;br /&gt;
For charting the library pChart is used which is completely included and usually doesn&#039;t have to be configured.&lt;br /&gt;
&lt;br /&gt;
However for some languages (like Chinese) the usual font used (Vera) does not cover the needed character set. In that case you can use the setting $chartfontfile to set a new TTF font file in config.php (Check out config-defaults.php for the right setting). For Chinese (Simplified and Traditional) we recommend to use the FireFlySung font which can be downloaded from [http://cle.linux.org.tw/fonts/FireFly/].&lt;br /&gt;
&lt;br /&gt;
After the graphs have been generated you can export these graphs easily. Use a right-mouse-click over the image and choose &amp;quot;Save image as&amp;quot; and save the graph as a .png-file to your chosen location. Normally all results are displayed as pie charts - only for question type &amp;quot;Multiple Options&amp;quot; bar graphs are used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Kreisdiagramm.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Balkendiagramm.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=&amp;quot;incomplete responses&amp;quot;, &amp;quot;no answers&amp;quot; and not &amp;quot;completed/not displayed&amp;quot; counts=&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;&#039;incomplete responses&#039;&#039;&#039;&amp;quot; counts: when the participant wasn&#039;t able to go till the end of the survey and thus haven&#039;t clicked the &amp;quot;Submit&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
Technically speaking, this is when there is no SubmitDate in the response table for this entry.&lt;br /&gt;
&lt;br /&gt;
A question with &amp;quot;&#039;&#039;&#039;no answer&#039;&#039;&#039;&amp;quot; counts: when the question was displayed, but the participant hasn&#039;t given an answer.&lt;br /&gt;
&lt;br /&gt;
Technically speaking, this is when the question is not mandatory, was displayed, received no answer and the user clicked Next or Submit: the consequence is that the database field for this answer is set to &amp;quot;&amp;quot; (empty string). This &amp;quot;no answer&amp;quot; status cannot be really computed for Date or pure Numerical questions where the database field cannot record a string.&lt;br /&gt;
&lt;br /&gt;
A question with &amp;quot;&#039;&#039;&#039;not completed/not displayed&#039;&#039;&#039;&amp;quot; counts: when the page containing the question was not displayed. This can be because of conditions, or just because the participant left the survey before this page was displayed (or just while this page is displayed, but without clicking the Next button).&lt;br /&gt;
&lt;br /&gt;
Technically speaking, the database field for this question is filled with a NULL value.&lt;br /&gt;
&lt;br /&gt;
=Public Statistics=&lt;br /&gt;
&lt;br /&gt;
The new feature to show statistics to the user at the end of a survey was introduced in version 1.80RC3. Using this feature the user is presented a link at the end of the survey which takes him to the public statistics.&lt;br /&gt;
&lt;br /&gt;
There are &#039;&#039;&#039;two important settings&#039;&#039;&#039;. At first you have to [http://docs.limesurvey.org/tiki-index.php?page=Creating+a+new+survey#Presentation_amp_Navigation enable public statistics for your current survey] at survey settings -&amp;gt; presentation &amp;amp; navigation -&amp;gt; Public statistics.&lt;br /&gt;
&lt;br /&gt;
Because often you only want to show statistics for certain questions there is an [http://docs.limesurvey.org/tiki-index.php?page=Question+attributes#public_statistics additional question attribute &amp;quot;public_statistics&amp;quot;]. This question attribute has to be applied to all questions which should be shown to the user. Note that the use of this question attribute is limited to [http://docs.limesurvey.org/tiki-index.php?page=Question+attributes#public_statistics certain question types].&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1405</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1405"/>
		<updated>2010-04-07T15:51:06Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; project for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web server Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Do I have to implemenet a framework for each of the above test case ?&lt;br /&gt;
&lt;br /&gt;
Of course not.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say that the Generic Authentication Framework is implemented as a PHP Class, then it will define an API made up of his public methods. Then each True authentication module will inherit from this Class.&lt;br /&gt;
&lt;br /&gt;
For instance, the Generic framework may define:&lt;br /&gt;
&lt;br /&gt;
- An API that will return the capability of the module (is it able to do authentication, user-provisionning, ...)&lt;br /&gt;
&lt;br /&gt;
- A set of methods to handle authentication, user provisionning (maybe noop if not implemented), ...&lt;br /&gt;
&lt;br /&gt;
- A set of facility methods used by modules in order to display messages, errors, login forms, setup-forms&lt;br /&gt;
&lt;br /&gt;
- A set of methods to record/read/modify the module parameters in DB&lt;br /&gt;
&lt;br /&gt;
Then in LS1 core code, an instance of an Auth module is instanciated (depending on the setup parameters), and only the methods defined in the Generic Authentication Framework are used (never specific methods form the Authentication module). This makes it easy to implement a new Autnentication module without having to modify LS1 core code.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each survey. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;br /&gt;
&lt;br /&gt;
This project could bebefit from ideas developped for the Horde project, especially the [http://git.horde.org/framework/Auth/lib/Horde/?onb=master Auth] class and library&lt;br /&gt;
&lt;br /&gt;
Some user-proposed patches:&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=4035&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=3020&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1415</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1415"/>
		<updated>2010-03-30T21:01:29Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details (or check [[Expression engine for conditions]] to see how it works&lt;br /&gt;
&lt;br /&gt;
Anyway here is an interresting link with algorithms for Infix to Postfix conversions and Postfix to infix conversions.&lt;br /&gt;
&lt;br /&gt;
http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html&lt;br /&gt;
&lt;br /&gt;
Also note that we&#039;ll not only need a way to do Infox to Postfix conversion (RPN) while defining a condition, but also Postfix to infox conversion in order to display a previously recorded condition and to build the PHP and/or Javascript evaluation code.&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...). This also means we need to define a specific &amp;quot;grammar&amp;quot; to describe conditions operands.&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* What is this &amp;quot;grammar&amp;quot; you&#039;re talking about to describe operands ?&lt;br /&gt;
&lt;br /&gt;
Since we have several operands types and since we want to record conditions as a simple RPN string, we  need a grammar (a syntax) to &amp;quot;type&amp;quot; the different kinds of operands:&lt;br /&gt;
* a constant&lt;br /&gt;
* an answer from a previous question&lt;br /&gt;
* a value from the participant&#039;s profile (equivalent from the token attribute in LS1)&lt;br /&gt;
* another context specific variable (such as an assessment variable, or the result of a predefined function such as the sum of previous numerical answers).&lt;br /&gt;
&lt;br /&gt;
This is not a proposal for a syntax, but just a stupid example of a condition in RPN using a syntax to type operands:&lt;br /&gt;
&lt;br /&gt;
 {ANSWER: Q0001} {ANSWER: Q0002} &amp;gt;= {ANSWER: Q1234} {CONST: Yes} = AND&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;br /&gt;
&lt;br /&gt;
- understand how to mark a question as &amp;quot;Not displayed&amp;quot;&lt;br /&gt;
* I want to jump into LS2 code, what should I check ?&lt;br /&gt;
&lt;br /&gt;
The following is a first answer I (lemeur) gave to the #limesurvey channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lemeur&amp;gt; First you must be aware of the fact that I implemented part of LS1 conditions and am a LS1 core developper so I&#039;m very familiar with LS1.&lt;br /&gt;
&lt;br /&gt;
         However I&#039;m not very familiar with the LS2 codebase yet&lt;br /&gt;
&lt;br /&gt;
         So I have several questions regarding LS2 for you, my future GSOC participant, regarding how questions are implemented in LS2.&lt;br /&gt;
&lt;br /&gt;
         - are &amp;quot;mandatory&amp;quot; questions implemented and how&lt;br /&gt;
&lt;br /&gt;
         ==&amp;gt; mandatory questions: questions that you can&#039;t skip (you can&#039;t proceed untill you&#039;ve answered)&lt;br /&gt;
&lt;br /&gt;
         ==&amp;gt; This is important to understand this, because when a mandatory question is hidden by conditions, you have to alter the mandatory property&lt;br /&gt;
&lt;br /&gt;
         - Is there a &amp;quot;No answer was given&amp;quot; code recorded to DB&lt;br /&gt;
&lt;br /&gt;
         ==&amp;gt; I mean, is there a way to know if teh question was displayed but no answer given&lt;br /&gt;
&lt;br /&gt;
         ==&amp;gt; this must be different from &amp;quot;no answer recorded because the question was not displayed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[22:31]    &amp;lt;lemeur&amp;gt;    this is the kind of questions I&#039;m longing to know about LS2 because it will have so much implications for the Conditions engine project&lt;br /&gt;
&lt;br /&gt;
[22:32]    &amp;lt;lemeur&amp;gt;    Another question regarding participants&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lemeur&amp;gt; Now regarding participants, in LS2 they are managed in a complete different way than what was done for LS1&lt;br /&gt;
&lt;br /&gt;
         and since conditions can be based on information from the participant&#039;s profile, we need to understand how to reach participant&#039;s data from within the conditions engine we also need to understand if accessing the participants data is possible for all kind of surveys.&lt;br /&gt;
&lt;br /&gt;
         - For instance is it possible for Anonymous surveys ? (should not)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lemeur&amp;gt; You may now understand why I think the conditions engine has so much implications and dependances on the rest of the LS2 core&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1416</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1416"/>
		<updated>2010-03-30T13:36:29Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details (or check [[Expression engine for conditions]] to see how it works&lt;br /&gt;
&lt;br /&gt;
Anyway here is an interresting link with algorithms for Infix to Postfix conversions and Postfix to infix conversions.&lt;br /&gt;
&lt;br /&gt;
http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html&lt;br /&gt;
&lt;br /&gt;
Also note that we&#039;ll not only need a way to do Infox to Postfix conversion (RPN) while defining a condition, but also Postfix to infox conversion in order to display a previously recorded condition and to build the PHP and/or Javascript evaluation code.&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...). This also means we need to define a specific &amp;quot;grammar&amp;quot; to describe conditions operands.&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* What is this &amp;quot;grammar&amp;quot; you&#039;re talking about to describe operands ?&lt;br /&gt;
&lt;br /&gt;
Since we have several operands types and since we want to record conditions as a simple RPN string, we  need a grammar (a syntax) to &amp;quot;type&amp;quot; the different kinds of operands:&lt;br /&gt;
* a constant&lt;br /&gt;
* an answer from a previous question&lt;br /&gt;
* a value from the participant&#039;s profile (equivalent from the token attribute in LS1)&lt;br /&gt;
* another context specific variable (such as an assessment variable, or the result of a predefined function such as the sum of previous numerical answers).&lt;br /&gt;
&lt;br /&gt;
This is not a proposal for a syntax, but just a stupid example of a condition in RPN using a syntax to type operands:&lt;br /&gt;
&lt;br /&gt;
 {ANSWER: Q0001} {ANSWER: Q0002} &amp;gt;= {ANSWER: Q1234} {CONST: Yes} = AND&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;br /&gt;
&lt;br /&gt;
- understand how to mark a question as &amp;quot;Not displayed&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1417</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1417"/>
		<updated>2010-03-30T11:51:06Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details (or check [[Expression engine for conditions]] to see how it works&lt;br /&gt;
&lt;br /&gt;
Anyway here is an interresting link with algorithms for Infix to Postfix conversions and Postfix to infix conversions.&lt;br /&gt;
&lt;br /&gt;
http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html&lt;br /&gt;
&lt;br /&gt;
Also note that we&#039;ll not only need a way to do Infox to Postfix conversion (RPN) while defining a condition, but also Postfix to infox conversion in order to display a previously recorded condition and to build the PHP and/or Javascript evaluation code.&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...). This also means we need to define a specific &amp;quot;grammar&amp;quot; to describe conditions operands.&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* What is this &amp;quot;grammar&amp;quot; you&#039;re talking about to describe operands&lt;br /&gt;
&lt;br /&gt;
Since we have several operanrds types and since we want to recod conditions as a simple RPN string, we  need a grammar (a syntax) to &amp;quot;type&amp;quot; the different kinds of operands:&lt;br /&gt;
* a constant&lt;br /&gt;
* an answer from a previous question&lt;br /&gt;
* a value from the participant&#039;s profile (equivalent from the token attribute in LS1)&lt;br /&gt;
* another context specific variable (such as an assessment variable, or the result of a predefined function such as the sum of previous numerical answers).&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;br /&gt;
&lt;br /&gt;
- understand how to mark a question as &amp;quot;Not displayed&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1419</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1419"/>
		<updated>2010-03-30T09:13:46Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details.&lt;br /&gt;
&lt;br /&gt;
Anyway here is an interresting link with algorithms for Infix to Postfix conversions and Postfix to infix conversions.&lt;br /&gt;
&lt;br /&gt;
http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...).&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;br /&gt;
&lt;br /&gt;
- understand how to mark a question as &amp;quot;Not displayed&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1409</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1409"/>
		<updated>2010-03-29T14:50:51Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; project for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;br /&gt;
&lt;br /&gt;
This project could bebefit from ideas developped for the Horde project, especially the [http://git.horde.org/framework/Auth/lib/Horde/?onb=master Auth] class and library&lt;br /&gt;
&lt;br /&gt;
Some user-proposed patches:&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=4035&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=3020&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1410</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1410"/>
		<updated>2010-03-29T14:50:07Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; poject for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;br /&gt;
&lt;br /&gt;
This project could bebefit from ideas developped for the Horde project, especially the [http://git.horde.org/framework/Auth/lib/Horde/?onb=master Auth] class and library&lt;br /&gt;
&lt;br /&gt;
Some user-proposed patches:&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=4035&lt;br /&gt;
&lt;br /&gt;
http://bugs.limesurvey.org/view.php?id=3020&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2474</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2474"/>
		<updated>2010-03-29T14:46:57Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#student_eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: Email bounce tracking &amp;amp; handling of international email addresses==&lt;br /&gt;
&lt;br /&gt;
Currently there is no way to process email bounces of invitation or reminders in an automated way. If a bounce is received the administrator has to manually process every bounce - either by finding out a correct email address or removing the participant completely. Additionally it would be great if LimeSurvey could handle International email addressing - although the RFC for this kind of features are still experimental it would be great if we can be ahead of time. Primary goals of this task:&lt;br /&gt;
&lt;br /&gt;
- Create a facility to handle email bounces using various methods. Easier to install methods which run without CRON jobs and with a single email account - more advanced and safer methods which require certain email server setups. Make it quick and easy to configure and handle. Create followup actions in case an email is bounced. Differentiate between bounces and other &#039;away-messages&#039;.&lt;br /&gt;
&lt;br /&gt;
- Extend the PHPmailer library and LimeSurvey so it can handle international email addressing (including configuration)&lt;br /&gt;
&lt;br /&gt;
Skills&lt;br /&gt;
&lt;br /&gt;
PHP, knowledge of email handling and RFCs, some HTML &amp;amp; JS&lt;br /&gt;
&lt;br /&gt;
Difficulty&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
Probable Mentors&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault LeMeur (lemeur)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 GET/POST parameters 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 (only if the token for this user has not been already added).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Use Cases &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Think of these when writing your proposal&lt;br /&gt;
# Questionnaire which has a special section displayed only if a user answers a chosen question in a specific way (i.e. branching)&lt;br /&gt;
# Question on your favourite ice-cream, with an option &amp;quot;Other&amp;quot;, upon which the user will be asked to enter his own choice (i.e. multi-datatype question types)&lt;br /&gt;
# Questionnaire, which asks how many children you have and then loops a set of predefined questions that many times. (i.e. looping)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Your proposal &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your proposal needs to be fairly detailed and must dig deep down to the implementation level, with good analysis of the performance. &amp;quot;Read the data from the user and store it in the database&amp;quot; is no good! How are you going to store it? What is the schema going to be? Does it satisfy the requirements, for branching, conditions, pluggable question types? Does it scale well? Is it efficient - what is the time complexity? Can I get summaries out of it in a reasonable time? All this needs to be addressed. Early submissions are accepted by both mentors and suggestions and comments will be given (:wink:).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
**&#039;&#039;&#039;Batch import:&#039;&#039;&#039; import users through CSV, XML, etc...&lt;br /&gt;
**&#039;&#039;&#039;Batch processing:&#039;&#039;&#039; Add an interface to manipulate (add &amp;amp; modify) several users at once&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
&#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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2010==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2010 Limesurvey GSoC 2010]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2475</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2475"/>
		<updated>2010-03-29T14:46:36Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#student_eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: Email bounce tracking &amp;amp; handling of international email addresses==&lt;br /&gt;
&lt;br /&gt;
Currently there is no way to process email bounces of invitation or reminders in an automated way. If a bounce is received the administrator has to manually process every bounce - either by finding out a correct email address or removing the participant completely. Additionally it would be great if LimeSurvey could handle International email addressing - although the RFC for this kind of features are still experimental it would be great if we can be ahead of time. Primary goals of this task:&lt;br /&gt;
&lt;br /&gt;
- Create a facility to handle email bounces using various methods. Easier to install methods which run without CRON jobs and with a single email account - more advanced and safer methods which require certain email server setups. Make it quick and easy to configure and handle. Create followup actions in case an email is bounced. Differentiate between bounces and other &#039;away-messages&#039;.&lt;br /&gt;
&lt;br /&gt;
- Extend the PHPmailer library and LimeSurvey so it can handle international email addressing (including configuration)&lt;br /&gt;
&lt;br /&gt;
Skills&lt;br /&gt;
&lt;br /&gt;
PHP, knowledge of email handling and RFCs, some HTML &amp;amp; JS&lt;br /&gt;
&lt;br /&gt;
Difficulty&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
Probable Mentors&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault LeMeur (lemeur)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 GET/POST parameters 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 (only if the token for this user has not been already added).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Use Cases &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Think of these when writing your proposal&lt;br /&gt;
# Questionnaire which has a special section displayed only if a user answers a chosen question in a specific way (i.e. branching)&lt;br /&gt;
# Question on your favourite ice-cream, with an option &amp;quot;Other&amp;quot;, upon which the user will be asked to enter his own choice (i.e. multi-datatype question types)&lt;br /&gt;
# Questionnaire, which asks how many children you have and then loops a set of predefined questions that many times. (i.e. looping)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Your proposal &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your proposal needs to be fairly detailed and must dig deep down to the implementation level, with good analysis of the performance. &amp;quot;Read the data from the user and store it in the database&amp;quot; is no good! How are you going to store it? What is the schema going to be? Does it satisfy the requirements, for branching, conditions, pluggable question types? Does it scale well? Is it efficient - what is the time complexity? Can I get summaries out of it in a reasonable time? All this needs to be addressed. Early submissions are accepted by both mentors and suggestions and comments will be given (:wink:).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
**&#039;&#039;&#039;Batch import:&#039;&#039;&#039; import users through CSV, XML, etc...&lt;br /&gt;
**&#039;&#039;&#039;Batch processing:&#039;&#039;&#039; Add an interface to manipulate (add &amp;amp; modify) several users at once&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
&#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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2010==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2010 Limesurvey GSoC 2010]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1411</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1411"/>
		<updated>2010-03-29T14:44:51Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; poject for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;br /&gt;
&lt;br /&gt;
This project could bebefit from ideas developped for the Horde project, especially the [http://git.horde.org/framework/Auth/lib/Horde/?onb=master Auth] class and library&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1412</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1412"/>
		<updated>2010-03-29T14:44:20Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; poject for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;br /&gt;
&lt;br /&gt;
This project could bebefit from ides developped for the Horde project, especially the [http://git.horde.org/framework/Auth/lib/Horde/?onb=master Auth] class and library&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1420</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1420"/>
		<updated>2010-03-29T10:40:02Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details.&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...).&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;br /&gt;
&lt;br /&gt;
- understand how to mark a question as &amp;quot;Not displayed&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1421</id>
		<title>GSOC 2010 Condition engine</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Condition_engine&amp;diff=1421"/>
		<updated>2010-03-29T10:38:20Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the GSOC2010 Condition Engine Project&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* Will I have to implement an RPN parser?&lt;br /&gt;
&lt;br /&gt;
In fact a first version of an RPN parser has already been integrated to LS2, ask macduy for more details.&lt;br /&gt;
* Why is this a difficult project ?&lt;br /&gt;
&lt;br /&gt;
We want a generic condition engine, able to support multiple kind of conditions. The conditions can be based on static values (predefined string or number) or variable values (context dependant values such as a previous answer, or a user-specific value, ...).&lt;br /&gt;
&lt;br /&gt;
We also want to make the GUI as user friendly as possible so that even if we can design complex conditions, simple conditions design doesn&#039;t become a hassle.&lt;br /&gt;
&lt;br /&gt;
Moreover, conditions may have several usage in LS2, not only helping design question branching but also helping design assessments and so on. This means that implementing conditions may require a lot of communication between the &amp;quot;condition engine&amp;quot; team and the other LS2 developpers.&lt;br /&gt;
* Do I have to understand how LS1 implements conditions ?&lt;br /&gt;
&lt;br /&gt;
Understanding LS1 conditions is important because it will show you what is currently possible to do.&lt;br /&gt;
&lt;br /&gt;
However you don&#039;t have to understand how everything is implemented.&lt;br /&gt;
&lt;br /&gt;
Please carefully read [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey The conditions documentation for LS1]&lt;br /&gt;
&lt;br /&gt;
I would highly recommend setting several surveys with conditions and see how it works:&lt;br /&gt;
&lt;br /&gt;
- for question per page surveys, for group by group surveys, for all-in-one surveys: note how condition evaluation is either done on the server side, or on the client side&lt;br /&gt;
&lt;br /&gt;
- also try several kind of conditions:&lt;br /&gt;
&lt;br /&gt;
- conditions on previous answer compared to a static value or to another previous answer, conditions on token (user-dependant value),&lt;br /&gt;
&lt;br /&gt;
- understand the difference between a condition using &amp;quot;not answer&amp;quot; and &amp;quot;not displayed&amp;quot; (the latest is not supported in LS1)&lt;br /&gt;
&lt;br /&gt;
- think about a strategy for LS2 to better handle the &amp;quot;Chained conditions&amp;quot; issue and other [http://docs.limesurvey.org/tiki-index.php?page=Setting+conditions&amp;amp;structure;=English+Instructions+for+LimeSurvey#Things_to_watch_out_for gotchas from LS1 conditions]&lt;br /&gt;
* How does the condition engine relates to other parts of the LS2 core ?&lt;br /&gt;
&lt;br /&gt;
Conditions will be used in a variety of ways: question branching, assessments, ...&lt;br /&gt;
&lt;br /&gt;
What this means is that a condition will be mapped to an action.&lt;br /&gt;
&lt;br /&gt;
For instance:&lt;br /&gt;
&lt;br /&gt;
- in a question branching context: map the conditions to the &amp;quot;Display question XXX&amp;quot; action&lt;br /&gt;
&lt;br /&gt;
- in an assessment context: map condition to the &amp;quot;update assessment score YYY by exectuing the following arithmetic operation ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For the question branching action, the condition engine, must:&lt;br /&gt;
&lt;br /&gt;
- understand how answers are stored (either in SESSION, in DB or even in the HTML page if the evaluation is done by Javascript)&lt;br /&gt;
&lt;br /&gt;
- understand how to access participant&#039;s specific data&lt;br /&gt;
&lt;br /&gt;
- understand how LS2 handles mandatory questions and how to alter this behaviour if the question is hidden&lt;br /&gt;
&lt;br /&gt;
- be able to reset an answer to &amp;quot;No answer&amp;quot; if a previously answered question becomes hidden because the participant changed his mind and modified a previous answer (see the deletenonvalue parameter).&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2476</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2476"/>
		<updated>2010-03-29T10:01:31Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#student_eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: Email bounce tracking &amp;amp; handling of international email addresses==&lt;br /&gt;
&lt;br /&gt;
Currently there is no way to process email bounces of invitation or reminders in an automated way. If a bounce is received the administrator has to manually process every bounce - either by finding out a correct email address or removing the participant completely. Additionally it would be great if LimeSurvey could handle International email addressing - although the RFC for this kind of features are still experimental it would be great if we can be ahead of time. Primary goals of this task:&lt;br /&gt;
&lt;br /&gt;
- Create a facility to handle email bounces using various methods. Easier to install methods which run without CRON jobs and with a single email account - more advanced and safer methods which require certain email server setups. Make it quick and easy to configure and handle. Create followup actions in case an email is bounced. Differentiate between bounces and other &#039;away-messages&#039;.&lt;br /&gt;
&lt;br /&gt;
- Extend the PHPmailer library and LimeSurvey so it can handle international email addressing (including configuration)&lt;br /&gt;
&lt;br /&gt;
Skills&lt;br /&gt;
&lt;br /&gt;
PHP, knowledge of email handling and RFCs, some HTML &amp;amp; JS&lt;br /&gt;
&lt;br /&gt;
Difficulty&lt;br /&gt;
&lt;br /&gt;
Medium&lt;br /&gt;
&lt;br /&gt;
Probable Mentors&lt;br /&gt;
&lt;br /&gt;
Carsten Schmitz (c_schmitz)&lt;br /&gt;
&lt;br /&gt;
Thibault LeMeur (lemeur)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 GET/POST parameters 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 (only if the token for this user has not been already added).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Use Cases &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Think of these when writing your proposal&lt;br /&gt;
# Questionnaire which has a special section displayed only if a user answers a chosen question in a specific way (i.e. branching)&lt;br /&gt;
# Question on your favourite ice-cream, with an option &amp;quot;Other&amp;quot;, upon which the user will be asked to enter his own choice (i.e. multi-datatype question types)&lt;br /&gt;
# Questionnaire, which asks how many children you have and then loops a set of predefined questions that many times. (i.e. looping)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt; Your proposal &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your proposal needs to be fairly detailed and must dig deep down to the implementation level, with good analysis of the performance. &amp;quot;Read the data from the user and store it in the database&amp;quot; is no good! How are you going to store it? What is the schema going to be? Does it satisfy the requirements, for branching, conditions, pluggable question types? Does it scale well? Is it efficient - what is the time complexity? Can I get summaries out of it in a reasonable time? All this needs to be addressed. Early submissions are accepted by both mentors and suggestions and comments will be given (:wink:).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
**&#039;&#039;&#039;Batch import:&#039;&#039;&#039; import users through CSV, XML, etc...&lt;br /&gt;
**&#039;&#039;&#039;Batch processing:&#039;&#039;&#039; Add an interface to manipulate (add &amp;amp; modify) several users at once&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2010==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2010 Limesurvey GSoC 2010]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1413</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1413"/>
		<updated>2010-03-29T09:57:11Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; poject for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project ?&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1414</id>
		<title>GSOC 2010 Authentication framework</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=GSOC_2010_Authentication_framework&amp;diff=1414"/>
		<updated>2010-03-29T09:56:54Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page is dedicated to the &amp;quot;Authentication framework&amp;quot; poject for GSOC2010&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
* What is the difficult part of the project&lt;br /&gt;
&lt;br /&gt;
The difficult part will not be to implement openId or CAS or any&lt;br /&gt;
&lt;br /&gt;
authentication scheme as we usually are able to find opensource&lt;br /&gt;
&lt;br /&gt;
libraries to connect to these authentication backends. I think the most&lt;br /&gt;
&lt;br /&gt;
difficult part will be to design an interface in LS1 that will make it&lt;br /&gt;
&lt;br /&gt;
possible to implement  _any_kind_  of authentication backends.&lt;br /&gt;
* Is there a list of authentication protocol you want to support ?&lt;br /&gt;
&lt;br /&gt;
There is no such list because we want a framework that can be extended even with user-specific authentication systems.&lt;br /&gt;
&lt;br /&gt;
For instance, you can consider the following different cases:&lt;br /&gt;
&lt;br /&gt;
1- Case study 1:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, and the&lt;br /&gt;
&lt;br /&gt;
password (or password hash) is read from the internal (usual) DB or on&lt;br /&gt;
&lt;br /&gt;
another Database (such as LDAP when using Ldap as a database and not&lt;br /&gt;
&lt;br /&gt;
using ldap-bind).&lt;br /&gt;
&lt;br /&gt;
2- Case study 2:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is based on a simple User/Password form, but the&lt;br /&gt;
&lt;br /&gt;
authentication is delegated to a server able to check the password&lt;br /&gt;
&lt;br /&gt;
validity: for instance LDAP (when using Ldap-bind authentication), or&lt;br /&gt;
&lt;br /&gt;
Radius.&lt;br /&gt;
&lt;br /&gt;
3- Case study 3:&lt;br /&gt;
&lt;br /&gt;
LS1 is integrated into another web application which does implement&lt;br /&gt;
&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
LS1 authentication is then done simply by checking a value in a given&lt;br /&gt;
&lt;br /&gt;
SESSION parameter, or in a GET parameter.&lt;br /&gt;
&lt;br /&gt;
4- Case study 4:&lt;br /&gt;
&lt;br /&gt;
LS1 uses the web serveur Authentication (equivalent of current Web&lt;br /&gt;
&lt;br /&gt;
Server Authentication Delegation mode)&lt;br /&gt;
&lt;br /&gt;
5-Case study 5:&lt;br /&gt;
&lt;br /&gt;
LS1 authentication uses an external authentication protocol which&lt;br /&gt;
&lt;br /&gt;
requires several messages to be exchanged between the authentication&lt;br /&gt;
&lt;br /&gt;
server and the client (maybe several forms to be filled). For instance:&lt;br /&gt;
&lt;br /&gt;
first screen asks for username, the server replies with a challenge,&lt;br /&gt;
&lt;br /&gt;
then the second form ask for the passwords corresponding to the proposed&lt;br /&gt;
&lt;br /&gt;
challenge.&lt;br /&gt;
&lt;br /&gt;
6-Case study 6:&lt;br /&gt;
&lt;br /&gt;
Authentication is done on a remote web service which generates a&lt;br /&gt;
&lt;br /&gt;
service-token for LS1. The user is then redirected to LS1 and provides&lt;br /&gt;
&lt;br /&gt;
(either in a cookie or in a GET or POST parameter) the token. LS1 has to&lt;br /&gt;
&lt;br /&gt;
check that the token is valid and then grants access to the user.&lt;br /&gt;
&lt;br /&gt;
Example of such authentication protocoles are CAS and openId.&lt;br /&gt;
* Is this project just about authentication ?&lt;br /&gt;
&lt;br /&gt;
No it isn&#039;t restricted to authentication but extends as well to user-provisionning (which I sometimes call authorization).&lt;br /&gt;
&lt;br /&gt;
Indeed, authentication only checks that the user is&lt;br /&gt;
&lt;br /&gt;
really who he pretends to be, but it doesn&#039;t cope with the user rights&lt;br /&gt;
&lt;br /&gt;
issue. So once authentication is performed, LS1 needs to know the user&lt;br /&gt;
&lt;br /&gt;
rights for this user: the global rights, as well as specific rights on&lt;br /&gt;
&lt;br /&gt;
each surveys. The current approach when delegating authentication to the&lt;br /&gt;
&lt;br /&gt;
Web server, is to let the authentication module create the new user if&lt;br /&gt;
&lt;br /&gt;
it is not already in the LS1 database. it is event possible to assign&lt;br /&gt;
&lt;br /&gt;
him user-specific global rights by a &amp;quot;hook&amp;quot; function. The Authentication&lt;br /&gt;
&lt;br /&gt;
interface will have to specify this aspect as well so that any&lt;br /&gt;
&lt;br /&gt;
authentication module will be able to populate the LS1 permissions system.&lt;br /&gt;
* What other sources of information should I read/use, ... ?&lt;br /&gt;
&lt;br /&gt;
I really encourage you to carefully read and understand the following page:&lt;br /&gt;
&lt;br /&gt;
http://docs.limesurvey.org/tiki-index.php?page=Optional+settings&amp;amp;structure;=English+Instructions+for+LimeSurvey#Authentication&lt;br /&gt;
&lt;br /&gt;
Morover a look at the following file in LS1 will help you:&lt;br /&gt;
&lt;br /&gt;
usercontrol.php&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2483</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2483"/>
		<updated>2010-03-16T21:45:38Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 GET/POST parameters 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 (only if the token for this user has not been already added).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2009==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2009 Limesurvey GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2484</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2484"/>
		<updated>2010-03-16T21:37:49Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 GET/POST parameters 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 (only if the token for this user has not been already added).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2009==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2009 Limesurvey GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2485</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2485"/>
		<updated>2010-03-16T21:24:43Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes. 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 API 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 GET/POST parameters 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 provisionned the token table for the survey (if not already done).&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2009==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2009 Limesurvey GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2486</id>
		<title>Project ideas for GSOC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Project_ideas_for_GSOC_2010&amp;diff=2486"/>
		<updated>2010-03-16T21:09:28Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &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:)!! Please check if you are an [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#eligibility eligible candidate] for the GSoC program.&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/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing list] or at #limesurvey on irc.freenode.net. Then submit &#039;&#039;&#039;your&#039;&#039;&#039; proposal. Good Luck (:biggrin:)&lt;br /&gt;
&lt;br /&gt;
=Project ideas=&lt;br /&gt;
&lt;br /&gt;
==Example Format...==&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;
==LimeSurvey 1: File Upload question type==&lt;br /&gt;
&lt;br /&gt;
The idea is to have a question type in LimeSurvey1 where survey participants can upload one (or more) files. Often in surveys the participant is asked to create some content (pictures, movies, documents, etc.)  to upload as an answer to a question. The following goals are  primary in this task:&lt;br /&gt;
*Easy handling for the participant (uploading one or more files should be a piece of cake - also removing files if accidentally the wrong file was uploaded)&lt;br /&gt;
*Extensive configuration options for the question type like&lt;br /&gt;
**How many files are required, minimum and maxim number of files,&lt;br /&gt;
**maximum/minimum upload size,&lt;br /&gt;
**Allowed file types&lt;br /&gt;
*Safe!! storage in the file system, checks for file contents&lt;br /&gt;
*Implementation in statistics / data entry / printable survey / response browsing / response editing &amp;amp; RemoteControl&lt;br /&gt;
*Administrator can download one or more files (zip-packaging files for download) from one response and across responses&lt;br /&gt;
*Provide possible hooks for third party processing tools&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, jQuery, AJAX - existing knowledge on the general idea and related security would be of big advantage&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;
c_schmitz (Carsten Schmitz)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 1: Authentication framework==&lt;br /&gt;
&lt;br /&gt;
The idea is to design and implement a generic authentication framework for LimeSurvey 1 as well as some authentication modules. The Authentication framework will make it possible to implement any kind of authentication backend apart from the already existing internal-DB and Web server delegation schemes.&lt;br /&gt;
&lt;br /&gt;
The generic authentication framework must define the following services:&lt;br /&gt;
* User authentication: this API 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 GET/POST parameters or any other contextual parameter such as Referrer, session variable...&lt;br /&gt;
* User provisionning: when activated on the LimeSurvey installation, 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).&lt;br /&gt;
** if the authentication module provides a user-provisionnong facillity, the profile used for the enwly created user (for instance his rights), might depend on the user name and an external database&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;
==LimeSurvey 2: Db Storage Engine==&lt;br /&gt;
&lt;br /&gt;
Develop an extensible plugin survey storage engine for LimeSurvey 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Description&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than survey design, everything that happens in LimeSurvey centres around the ability to save responses to questions to a database, and retrieve the responses again when required. Historically these functions have been incorporated within the various functions of LimeSurvey and this has locked LimeSurvey to a single methodology for data storage and retrieval and made future modifications and improvements difficult if not possible.&lt;br /&gt;
&lt;br /&gt;
For this project we are looking for students to write a &#039;middleware&#039; that exposes abstract high-level functions to LimeSurvey 2 (e.g.: storing these answers related to this question, running statistical analysis etc.) but is built in top of Cake&#039;s &#039;low-level&#039; operations (such as find, save etc). The aim is to abstract away from a specific DB implementation and provide an intuitive and rich API for LS2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Rationale&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the interface with the data storage system is so critical to practically every other function in LimeSurvey we want to develop a stand-alone module that is transportable and extensible for the future. And by keeping the logic of data and survey storage separate from the rest of LimeSurvey&amp;amp;rsquo;s functions we will the ease with which LimeSurvey can be developed in the long term.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Implementation&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is such an important project that we would consider multiple students undertaking the task. In conjunction with a strong understanding of data structures, php coding and api principles the students would also have to display a capacity to work in a team and with the broader community.&lt;br /&gt;
&lt;br /&gt;
The implementation would focus on becoming a plugin/addon module under CakePHP which uses the default CakePHP database systems to the absolute minimum. In a well implemented version of this proposal only simple SQL inserts, queries and updates would be required. All other logic would be managed by the engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Requirements &amp;amp; Considerations&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DB Engine must be able to do the following&lt;br /&gt;
* ease development of additional &#039;&#039;&#039;question types, which will be developed as plugins&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;efficient data retrieval&#039;&#039;&#039;, especially summaries (e.g. display 100 last responses)&lt;br /&gt;
* support &#039;&#039;&#039;generic&#039;&#039;&#039; data storage and retrieval - aside surveys, imagine running online admission tests, polls, sign-up forms, volunteer campaign etc. etc.&lt;br /&gt;
* easily support conditions, looped question, or generally, &#039;&#039;&#039;non-linear data&#039;&#039;&#039;. Think of a survey that asks how many children you have and then asks information about each of them.&lt;br /&gt;
* support questions that have multiple &#039;&#039;&#039;answers and multiple types of answers&#039;&#039;&#039;. Think of a question asking &amp;quot;What is your favourite ice cream?&amp;quot;, offering 3 fixed options and last one allowing user to enter a custom answer.&lt;br /&gt;
* support survey resuming (where applicable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Field Naming and Database Extensibility Methodologies&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An ongoing debate in the LimeSurvey community has been the method in which the database stores survey results. In LimeSurvey 1 a flat database schema was used whereby once the survey designer had finished setting up the survey a database table was created with a field for every individual question/answer combination. The advantages of this database schema were speed of retrieval for reporting and exporting and searching. The disadvantages were that the survey system had to &amp;amp;lsquo;freeze&amp;amp;rsquo; the structure in place once the table was created (therefore the activate/de-activate rules in LimeSurvey 1). The single table method doesn&amp;amp;rsquo;t allow easy storage of metadata for individual question/answer combinations (such as timestamps). Nor does it lend itself to surveys with enormous quantities of question/answer combinations &amp;amp;ndash; sometimes running up against database limitations regarding the number of fields per table.&lt;br /&gt;
&lt;br /&gt;
An alternative is a &amp;amp;lsquo;normalised&amp;amp;rsquo; database topology where a single table is created to store all survey responses &amp;amp;ndash; one database row per question/answer combination. A related table would store metadata that is directly related to the survey sitting/session rather than the answer (e.g.: username, ip address, geographical location, user demographic). The advantage to this methodology is the increased flexibility (extensible) which would allow modification of surveys at any stage even after data has been collected (see requirements). The disadvantages are that searching and compilation of data is complicated and resource intensive.&lt;br /&gt;
&lt;br /&gt;
In a perfect world LimeSurvey would allow users to choose either methodology &amp;amp;ndash; either at an installation level or even on a per-survey level.&lt;br /&gt;
&lt;br /&gt;
Having a database storage engine effectively acting as an API would allow this functionality to be built, but the choice of database topology would be invisible to the related LimeSurvey functions that require data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Database Schema Design, Sound knowledge of Algorithms and Data Structures&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;
jasebo (Jason Cleeland)&lt;br /&gt;
&lt;br /&gt;
macduy (Mac Duy Hai)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template Editor==&lt;br /&gt;
&lt;br /&gt;
Limesurvey 2 needs a nice and powerful template editor so everyone can create a template which matches their requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One needs to know about the details of the [http://dwoo.org/ dwoo template engine] which is used at LS2. There is some cakePHP coding needed to create an interface and write changes to the template files as well as some HTML/CSS to create a nice interface.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t have to create difficult algorithms for this task. It&#039;s useful if you have worked with templates for another web-application or take a detailled look at [http://docs.limesurvey.org/tiki-index.php?page=Themes%3A+Templates+and+Styles&amp;amp;structure;=English+Instructions+for+LimeSurvey how templates work in Limesurvey]. Some design/usability background would be nice but is not a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probable Mentors&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mazi&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Mini-projects==&lt;br /&gt;
&lt;br /&gt;
Mini-projects is a collection of small-to-medium sized projects, which you mix-and-match according to your tastes. Heck, you can even roll your own idea and once reviewed and approved, you can code away. Some recommended/important mini-projects and their brief descriptions:&lt;br /&gt;
*&#039;&#039;&#039;Smarter installer:&#039;&#039;&#039; LS2.0 comes with its own installer, though it may not be the friendliest to use. Your task is to make it juicier to use:&lt;br /&gt;
** Resume installation - if the user aborts the installation mid-way, make it easy for him to resume it&lt;br /&gt;
** Better error handling - meaningful error reports, suggestions how to fix them: e.g. &amp;quot;Database does not exist&amp;quot; is better than &amp;quot;Database error&amp;quot;&lt;br /&gt;
** Customization - invite the user to customize his installation of LimeSurvey - from security settings such as salt, to interface such as the header title.&lt;br /&gt;
*&#039;&#039;&#039;User management:&#039;&#039;&#039; When the number of users grow, it becomes increasingly harder to manage them. Implement functionality and provide interface for features that would make this task easier. Inspire yourself by the big players, such as the infamous you-know-which-one social website.&lt;br /&gt;
**&#039;&#039;&#039;Groups within groups:&#039;&#039;&#039; LS2 users can belong to a group, but groups cannot belong to other groups.&lt;br /&gt;
**&#039;&#039;&#039;Contact lists:&#039;&#039;&#039; There is already something called AssignmentGroups. Study this concept carefully and generalize to a Contact List&lt;br /&gt;
**&#039;&#039;&#039;GUI:&#039;&#039;&#039; Design a GUI which allows you easily manage users, groups and contact lists.&lt;br /&gt;
**&#039;&#039;&#039;Searching:&#039;&#039;&#039; Provide an efficient but simple-to-use search interface and functionality&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, JavaScript &amp;amp; jQuery&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;
Mac Duy Hai (macduy)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Template/Theme Editor==&lt;br /&gt;
&lt;br /&gt;
The idea is to develop a theme / template framework similar to one in jquery [http://jqueryui.com/themeroller/ | Jquery Theme Roller] and thus making the UI design of the surveys easier.The current template editor is based on dwoo template engine which actually loads the files exposing the css etc for us to edit, which of course require some skill set to proceed. Using this template editor we can make everything UI based and thus requiring no developer skills to edit the templates.&lt;br /&gt;
&lt;br /&gt;
The overview of the modules can be seen here:&lt;br /&gt;
&lt;br /&gt;
[[File:theme_roller.png]]&lt;br /&gt;
&lt;br /&gt;
It&amp;amp;rsquo;ll be implemented using Jquery to use the more advanced UI experiences.(:biggrin:)&lt;br /&gt;
&lt;br /&gt;
The following mock-up will give us a better view:&lt;br /&gt;
&lt;br /&gt;
Moderate[[File:theme_editor_small.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, CSS, AJAX, JavaScript &amp;amp; jQuery.&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;
==LimeSurvey 2: Lime Survey Social - Facebook Application==&lt;br /&gt;
&lt;br /&gt;
The idea aims at developing a Facebook app which gives a social touch to LS 2.0. The application will be integrated in several Facebook integration points like News Feed, Applications boxes, Wall etc so that the user participation will be more. Adding a social touch can drive us more user participation and increase the popularity. The ability to control the Facebook app can be provided in the LS2.0 Admin Dashboard and also in the FB user application window with varied options.&lt;br /&gt;
&lt;br /&gt;
The facebook has the following modules (we can add more. This is primary draft.)&lt;br /&gt;
*All Survey related core features. (Create, Edit, Delete, Administer etc)&lt;br /&gt;
*Gain reward points.&lt;br /&gt;
*Use reward points to create more surveys.&lt;br /&gt;
*Spread the surveys ...... and more&lt;br /&gt;
&lt;br /&gt;
The idea can be extended to other social networks&lt;br /&gt;
&lt;br /&gt;
[[File:fb_overview.png]]&lt;br /&gt;
&lt;br /&gt;
The mock-ups :&lt;br /&gt;
&lt;br /&gt;
[[File:facebook app.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:canvas.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Facebook API.&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;
==LimeSurvey 2: Integration of Poll Questions==&lt;br /&gt;
&lt;br /&gt;
Polls are one of the most popular and quick response getting tools once can use. Implementing polls in LS 2.0 will be an added advantage. Since every one of us know what polls are about, this idea focuses on the implementation part.&lt;br /&gt;
&lt;br /&gt;
The idea is to integrate the ability to create a POLL Module in Admin dashboard, where he can administer (Create | Edit | Delete | View Responses etc) the Polls.We can even get feedback &amp;amp;ldquo;about the survey&amp;amp;rdquo; at the end on how the user feels by creating a custom poll (we can even redirect the user to this poll).&lt;br /&gt;
*Chat Bots and Polls: An another idea is to create chat bots so that whenever we create a poll, all the friends (who added the bot) of that bot will be pinged by the question followed by options. Getting an answer is very easy (Bot friends just need to type a single letter stating the answer) and its a push model which ensures the delivery to everyone (even offline).We can even extend this to deliver certain type of surveys question by question through the bot.&lt;br /&gt;
&lt;br /&gt;
A simple mock-up for this:&lt;br /&gt;
&lt;br /&gt;
[[File:chat.png]]&lt;br /&gt;
*Alternate Solution: An alternate solution provided by Mazi is clubbing this idea with the Facebook app idea. Instead of porting parts of the admin backend to facebook or other social networks we&#039;ll have options in Admin panel to &amp;quot;publish as: common survey |mobile device survey | facebook poll | homepage poll |  ... etc &amp;quot; Everything will be put together at the usualm admin backend but you can choose which way(s) you want publish your survey.&lt;br /&gt;
&lt;br /&gt;
We can further extend this idea by giving additional options to publish as widgets for websites and blogs etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, XMPP Protocol (Knowledge of developing bots), Knowledge of Polls.&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;
==LimeSurvey 2: Survey Community Project==&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that connects to a central repository of survey resources, such as demographic questions, answer styles and templates. Integrating with a login system, allow LimeSurvey users to easily publish their work to a community resource or use other published works from the same location.&lt;br /&gt;
&lt;br /&gt;
For many finding already written question texts, or standardised demographic questions would really simplify their use of a survey tool. LimeSurvey could leverage on the community spirit of an open source product and encourage users to share their own work. By integrating a &amp;quot;Publish to the LimeSurvey Library&amp;quot; button in the administration system with questions, or templates, or anything else that can be shared, LimeSurvey could develop a library of tools that simplifies Survey Creation even further.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PHP, CakePHP, Web and User Interface Design Skills&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;
Jason Cleeland (jasebo)&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey 2: Condition Engine==&lt;br /&gt;
&lt;br /&gt;
[[File:addNewCondition1.png]]&lt;br /&gt;
&lt;br /&gt;
Build a system for LS2 that will let survey administrators design, store and evaluate conditions. Conditions 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;
* A first version of the evaluation of conditions for the question branching feature. This part will require interaction with other parts of the projects (Survey Engine, and DB engine).&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;
=We want your ideas!=&lt;br /&gt;
&lt;br /&gt;
What floats your boat? Do you have another idea that gets you excited? Discuss your ideas in our [http://www.limesurvey.org/component/option,com_fireboard/Itemid,105/func,view/catid,11/id,24710/lang,en/ forums], [https://lists.sourceforge.net/lists/listinfo/limesurvey-developers mailing lists] or at #limesurvey on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Google&#039;s Summer of Code 2009==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2009 Limesurvey GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
An introduction to LimeSurvey and our application for this years Google Summer of Code&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started How to get started with LimeSurvey&#039;s GSoC 2009]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google&#039;s Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=LimeSurvey_GSoC_2010&amp;diff=2008</id>
		<title>LimeSurvey GSoC 2010</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=LimeSurvey_GSoC_2010&amp;diff=2008"/>
		<updated>2010-03-10T21:16:20Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Google Summer of Code 2010=&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is applying to be involved in the Google Summer of Code for 2010&lt;br /&gt;
&lt;br /&gt;
=General Information=&lt;br /&gt;
&lt;br /&gt;
Google has been continuously supporting Open Source Projects and students coming together since 2005 through its &#039;&#039;Google Summer of Code Programs&#039;&#039;. GSoC 2010 has been announced and is On!&lt;br /&gt;
&lt;br /&gt;
LimeSurvey was accepted as a mentoring organisation for the first time in 2009, and is hopeful and excited about he opportunity to participate again in 2010. We plan to give students an excellent environment and platform to &#039;&#039;&#039;learn&#039;&#039;&#039; and most importantly to have &#039;&#039;&#039;fun&#039;&#039;&#039; (:lol:)!&lt;br /&gt;
&lt;br /&gt;
The LimeSurvey community, at the same time, will benefit by students&#039; participation and fresh eyes and ideas.&lt;br /&gt;
&lt;br /&gt;
Find out more about our program in 2010 at [http://docs.limesurvey.org/tiki-index.php?page=Limesurvey+GSoC+2010&amp;amp;structure;=LimeSurvey+Development LimeSurvey GSoC 2010]&lt;br /&gt;
&lt;br /&gt;
==Google Summer of Code Program Information==&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a great program both for Open Source organizations like LimeSurvey as well as students because it gives a platform where several tasks on Open Source Projects are done by students and students in return get a stipend from Google.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a lot more information available in Google&#039;s Summer of Code [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs FAQ] and [http://code.google.com/p/google-summer-of-code/ Knowledge Base]. You can also join #gsoc on irc.freenode.net to get feedback or ask questions about Google Summer of Code in real time.&lt;br /&gt;
&lt;br /&gt;
The timelineline can be found [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline here].&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Specific Information==&lt;br /&gt;
&lt;br /&gt;
Welcome to the LimeSurvey Community (:biggrin:). LimeSurvey is an open source survey engine that allows people to create and deploy surveys (from marketing to academic to engineering applications). LimeSurvey is written in PHP and used by many high profile organizations including [https://wiki.ubuntu.com/ServerTeam &#039;&#039;&#039;Ubuntu Server Team&#039;&#039;&#039;], [http://foundation.gnome.org/ &#039;&#039;&#039;GNOME Foundation&#039;&#039;&#039;] and [http://www.vorarlberg.at/ &#039;&#039;&#039;Office of the Austrian Vorarlberg State Government&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Limesurvey is loved and used by many Universities, Students, Medical Institutes, non-profit organisations, marketing companies and more around the world. In the 2004 &#039;&#039;&#039;U.S. presidential election&#039;&#039;&#039;, the [http://www.verifiedvoting.org/article.php?id=5207 &#039;&#039;&#039;Verified Voting Foundation&#039;&#039;&#039;] used PHPSurveyor (as LimeSurvey was then known) to gather data about voting irregularities. Sourceforge provide LimeSurvey as a free application for open source projects. LimeSurvey keeps turning up in new places.&lt;br /&gt;
&lt;br /&gt;
It&#039;s loved because it is free, flexible and constantly improving. It&#039;s constantly improving because it has a dedicated and committed team of developers who love the challenge and satisfaction of using and building such a tool.&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is widely used. It has been directly downloaded from Sourceforge over &#039;&#039;&#039;130,000 times&#039;&#039;&#039; in the last 12 months alone, and is also distributed as a package in the &#039;&#039;&#039;Ubuntu Linux Distribution&#039;&#039;&#039;, and included as a pre-installed application in many standard Web Hosting packages (such as &#039;&#039;&#039;Fantastico&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is recognised as a leader in its field. On November 29, 2007 LimeSurvey won the &#039;&#039;&#039;1st prize award&#039;&#039;&#039; at the [http://www.trophees-du-libre.org/index.php?lang=en &#039;&#039;&#039;Les Troph&amp;amp;eacute;es du Libre&#039;&#039;&#039;] contest in the category Corporate Management. In 2008 LimeSurvey was nominated in the category Best Project for the Enterprise in the SourceForge.net &#039;&#039;&#039;Community Choice Awards 2008&#039;&#039;&#039;. LimeSurvey was succesful in being selected as a mentoring organisation for the Google Summer of Code in 2009.&lt;br /&gt;
&lt;br /&gt;
LimeSurvey is the biggest, most active and most exciting open source online survey project, and we&#039;re building on our success by creating a whole new version of the tool.&lt;br /&gt;
&lt;br /&gt;
LimeSurvey Version 2 is a whole new - built from the ground-up - version that will revolutionise online survey design and use.&lt;br /&gt;
&lt;br /&gt;
More importantly, it&#039;s a perfect opportunity for a GSoC student like yourself to get involved early in a project that has a strong history and an even stronger future. Our community is welcoming and fun. One of our students from 2009 has now become the project lead for LimeSurvey 2. It&#039;s a classic case of the student becoming a master!&lt;br /&gt;
&lt;br /&gt;
==GSoC Student Aspirants==&lt;br /&gt;
&lt;br /&gt;
Please visit our [http://docs.limesurvey.org/tiki-index.php?page=LimeSurvey+2+Project+Ideas+for+GSOC+2010 ideas page] and see if any idea interests you. If you have an idea of your own, then develop it. If any idea excites you, and you want to implement that feature during the summer of 2010, see how you can [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started get started] on it. Come and join us on the IRC channel on freenode (#limesurvey) and talk about what you want to do.&lt;br /&gt;
&lt;br /&gt;
==LimeSurvey Mentors==&lt;br /&gt;
&lt;br /&gt;
The following mentors are willing to Mentor students during Google Summer of Code 2010 program.&lt;br /&gt;
&lt;br /&gt;
Others who are willing to mentor can write their name and details below along with the Idea they are willing to mentor. &#039;&#039;&#039;Potential Mentors, please do not forget to put your ideas on the [http://docs.limesurvey.org/tiki-index.php?page=LimeSurvey+2+Project+Ideas+for+GSOC+2010 ideas page] and contact [mailto:jason@cleeland.org| program administrator]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;center&amp;gt;&#039;&#039;&#039;Mentor Name&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Nick&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Idea&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;Jason Cleeland&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;jasebo&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Currently Thinking About It&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;Carsten Schmitz&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;c_schmitz&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;File upload question type in LimeSurvey 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;Marcel Minke&amp;lt;/center&amp;gt; &amp;lt;center&amp;gt;[http://docs.limesurvey.org/tiki-index.php?page=UserPage Mazi||Mazi]&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Template editor?&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;Mac Duy Hai&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;[[UserPage macduy||macduy]]&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Database Storage Engine, Mini-projects&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;Thibault Le Meur&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;lemeur&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Condition Engine&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&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;
*[http://docs.limesurvey.org/tiki-index.php?page=GSoC_Getting_Started GSoC Getting Started]&lt;br /&gt;
&lt;br /&gt;
How to Get Started With LimeSurvey:&lt;br /&gt;
&lt;br /&gt;
- 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;
===Project Ideas Page===&lt;br /&gt;
*[http://docs.limesurvey.org/tiki-index.php?page=LimeSurvey+2+Project+Ideas+for+GSOC+2010 GSoC Ideas Page]&lt;br /&gt;
&lt;br /&gt;
The LimeSurvey Community Ideas Page:&lt;br /&gt;
&lt;br /&gt;
- ideas that the community have come up with and would love to help you create&lt;br /&gt;
&lt;br /&gt;
===Frequently Asked Questions===&lt;br /&gt;
* [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs Google Summer of Code Faqs]&lt;br /&gt;
* [http://docs.limesurvey.org/tiki-index.php?page=GSoC_Faqs LimeSurvey&#039;s GSoC Faqs]&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Survey_security_settings&amp;diff=3310</id>
		<title>Survey security settings</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Survey_security_settings&amp;diff=3310"/>
		<updated>2009-11-02T14:00:51Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
From this screen you can add other users/groups who may have access to your survey. After adding a group/user you can assign the following special rights:&lt;br /&gt;
&lt;br /&gt;
=Edit survey properties=&lt;br /&gt;
*Edit Current Survey&lt;br /&gt;
*Set Assessment rules&lt;br /&gt;
*Initialize and Manage Tokens&lt;br /&gt;
&lt;br /&gt;
=Define questions=&lt;br /&gt;
*Add/Edit/Remove Groups&lt;br /&gt;
*Add/Edit/Remove Questions&lt;br /&gt;
*Add/Edit/Remove Answers&lt;br /&gt;
*Add/Remove Conditions&lt;br /&gt;
*Copy Question&lt;br /&gt;
*Preview Question&lt;br /&gt;
&lt;br /&gt;
=Browse responses=&lt;br /&gt;
*Browse Responses / Responses Management ( No Delete )&lt;br /&gt;
*View saved but not submitted responses&lt;br /&gt;
*View Tokens&lt;br /&gt;
*Data Entry&lt;br /&gt;
&lt;br /&gt;
=Export=&lt;br /&gt;
*Export Survey Structure&lt;br /&gt;
*Export Groups&lt;br /&gt;
*Export Questions&lt;br /&gt;
*Export Tokens&lt;br /&gt;
*Export Survey Results&lt;br /&gt;
&lt;br /&gt;
=Delete survey=&lt;br /&gt;
*Delete Survey&lt;br /&gt;
*Delete Responses&lt;br /&gt;
&lt;br /&gt;
=Activate Survey=&lt;br /&gt;
*Activate Survey&lt;br /&gt;
*Initialize and Manage Tokens&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
	<entry>
		<id>https://www.limesurvey.org/manual/index.php?title=Standard_for_Git_commit_messages&amp;diff=3262</id>
		<title>Standard for Git commit messages</title>
		<link rel="alternate" type="text/html" href="https://www.limesurvey.org/manual/index.php?title=Standard_for_Git_commit_messages&amp;diff=3262"/>
		<updated>2009-05-25T08:57:45Z</updated>

		<summary type="html">&lt;p&gt;Lemeur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=General overview=&lt;br /&gt;
&lt;br /&gt;
This page describes the standard format of commit messages. Indeed, standard commit messages will ease the automatic generation of releases change logs.&lt;br /&gt;
&lt;br /&gt;
=Rules=&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
* Each commit message is made up of one or more commit blocks&lt;br /&gt;
* A commit block:&lt;br /&gt;
** The first line is the &#039;Commit Summary&#039; and describes the committed patch in a user friendly way&lt;br /&gt;
** the following lines begin with the Keyword &#039;&#039;&#039;Dev&#039;&#039;&#039; and are intended to the developpers team&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Commit type&amp;gt; &amp;lt;commit description&amp;gt; &amp;lt;NEWLINE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[ Dev &amp;lt;development details&amp;gt; &amp;lt;NEWLINE&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
[ Dev &amp;lt;development details&amp;gt; &amp;lt;NEWLINE&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Commit type&amp;gt; &amp;lt;commit description&amp;gt; &amp;lt;NEWLINE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[ Dev &amp;lt;development details&amp;gt; &amp;lt;NEWLINE&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
[ Dev &amp;lt;development details&amp;gt; &amp;lt;NEWLINE&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The commit type==&lt;br /&gt;
&lt;br /&gt;
The first word in the commit message gives the commit type:&lt;br /&gt;
* If the commit is about a fix, the commit message must begin with the keyword &#039;&#039;&#039;&#039;Fix&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;Fixed issue&#039;&#039;&#039;&#039;&lt;br /&gt;
* If the commit is about a change in LS feature, the commit message must begin with the keyword &#039;&#039;&#039;&#039;Update feature&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;Updated feature&#039;&#039;&#039;&#039;&lt;br /&gt;
* If the commit is about a change in LS language, the commit message must begin with the keyword &#039;&#039;&#039;&#039;Update language&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;Updated language&#039;&#039;&#039;&#039;&lt;br /&gt;
* If the commit is about a new feature, the commit message must begin with the keyword &#039;&#039;&#039;&#039;New feature&#039;&#039;&#039;&#039;&lt;br /&gt;
* If the commit is about a new language, the commit message must begin with the keyword &#039;&#039;&#039;&#039;New language&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The commit description==&lt;br /&gt;
&lt;br /&gt;
Following the commit type is the commit description.&lt;br /&gt;
&lt;br /&gt;
This must be a single line (no newline character), and is intended to be used in the generated changelog.&lt;br /&gt;
&lt;br /&gt;
Ideally it is a text readable by end-users: for instance if you&#039;re resolving a bug ticket which has a very technical description, please use a &amp;quot;end-user friendly description&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==The development details==&lt;br /&gt;
&lt;br /&gt;
Develoment details are added in extra optionnal lines, each one beginning with the keyword &#039;&#039;&#039;&#039;Dev&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Patches which require multiple commits==&lt;br /&gt;
&lt;br /&gt;
When multiple commits are linked to the same topic (same new feature, same fix, ...), the &#039;Commit Summary&#039; line of subsequent commits must be the same as the one provided for the first commit.&lt;br /&gt;
&lt;br /&gt;
Of course the development details can differ.&lt;br /&gt;
&lt;br /&gt;
== Examples:==&lt;br /&gt;
&lt;br /&gt;
Example of a simple Language File Update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Updated language: German.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of a single bug which is fixed in several commits:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fixed issue 02565: Can&#039;t access survey more than once on the same browser window&lt;br /&gt;
&lt;br /&gt;
Dev this fixes this bug for survey with tokens.&lt;br /&gt;
&lt;br /&gt;
Dev When showing a new token (different from the one in session), the previous session is destroyed.&lt;br /&gt;
&lt;br /&gt;
Fixed issue 02565: Can&#039;t access survey more than once on the same browser window&lt;br /&gt;
&lt;br /&gt;
Dev this fixes this bug for survey without tokens and without answer preview.&lt;br /&gt;
&lt;br /&gt;
Dev Session is destroyed at submit time.&lt;br /&gt;
&lt;br /&gt;
Fixed issue 02565: Can&#039;t access survey more than once on the same browser window&lt;br /&gt;
&lt;br /&gt;
Dev this fixes this bug for survey without tokens and with answer preview.&lt;br /&gt;
&lt;br /&gt;
Dev Session is destroyed when closing the answer preview window or closing the Submit confirmation page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of a single commit containing several fixes each with a Dev comment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fixed issue 01234: fixed some untranslated strings&lt;br /&gt;
&lt;br /&gt;
Dev missing call to clang-gT in admin.php&lt;br /&gt;
&lt;br /&gt;
Fixed issue 02345: fixed a small layout issue in condition editor&lt;br /&gt;
&lt;br /&gt;
Dev fixed div HTML elements&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Automatic version info=&lt;br /&gt;
&lt;br /&gt;
To have Information about Fileversion, author and commitdate automatically generated on commit. You must do three Things.&lt;br /&gt;
* Put the GPL Info and the Id tag into your new or unversionized file. It always looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
* LimeSurvey&lt;br /&gt;
* Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz&lt;br /&gt;
* All rights reserved.&lt;br /&gt;
* License: GNU/GPL License v2 or later, see LICENSE.php&lt;br /&gt;
* LimeSurvey is free software. This version may have been modified pursuant&lt;br /&gt;
* to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
* is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
* other free or open source software licenses.&lt;br /&gt;
* See COPYRIGHT.php for copyright notices and details.&lt;br /&gt;
*&lt;br /&gt;
* $Id$&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important Tag is the $Id$, which will be replaced with the version info.&lt;br /&gt;
* Assuming you use TortoiseSVN, go to the folder with you newly created or unversioned file and right-click on the file.&lt;br /&gt;
** Under the Context-Menu &amp;quot;TortoiseSVN&amp;quot; you will find the Option &amp;quot;Properties&amp;quot;. Go to the Properties.&lt;br /&gt;
** Now you see an empty list with Options New and Import(others are not clickable).&lt;br /&gt;
** Choose &amp;quot;new&amp;quot;.&lt;br /&gt;
** Choose &amp;quot;svn:keyword&amp;quot; from the Property-Name-Dropdown-Menu and&lt;br /&gt;
** type &amp;quot;Id&amp;quot; as value.&lt;br /&gt;
** Click OK.&lt;br /&gt;
* Now commit the file... and voila! The new file is versionized.&lt;/div&gt;</summary>
		<author><name>Lemeur</name></author>
	</entry>
</feed>