Version at: 17/01/2016, 14:05 vs. version at: 17/01/2016, 14:06
11# GSoC 2016 Project ideas
22
33This page lists project ideas for students who would like to take part in [Google Summer of Code 2016](https://developers.google.com/open-source/gsoc/) and be mentored by [Tatoeba](http://tatoeba.org).
44
55## Warning
66
77This page is still a work in progress.
88
99## About Tatoeba
1010
1111[Tatoeba](http://tatoeba.org) is a platform that aims to build a large **database of sentences** translated into as many languages as possible. The initial idea was to have a tool in which you could search certain words, and it would return example sentences containing these words with their translations in the desired languages. The name Tatoeba resulted from this concept, because **tatoeba** means **for example** in Japanese.
1212
1313You can browse the [blog](http://blog.tatoeba.org/) or the [wiki](http://en.wiki.tatoeba.org/) for more information about the project.
1414
1515
1616## Contact
1717
1818* Google group: [tatoebaproject](https://groups.google.com/forum/#!forum/tatoebaproject)
1919* IRC: [#tatoeba on freenode](irc://irc.freenode.net/tatoeba), [Webchat](http://webchat.freenode.net?channels=tatoeba)
2020* XMPP: [Tatoeba conference room on chat.tatoeba.org](xmpp:tatoeba@chat.tatoeba.org?join)
2121
2222To get a feeling for the discussions taking place within the Tatoeba contributor community, visit the [Tatoeba Wall page](http://tatoeba.org/wall/index).
2323
2424## How to submit ideas
2525
2626If you would like to submit an idea and do not have access to the wiki, please [contact us](#contact) and send us the information below.
2727If you have access to the wiki, simply edit this page and add the information in the [Ideas](#ideas) section.
2828
2929<pre>
3030### Project title
3131
3232#### Description
3333Brief description of the project. If you have already specified a lot of things about the project, do not write all the details here. Create a separate wiki page for it and only write a summary here, with a link to that wiki page.
3434
3535#### Deliverables
3636What is the student expected to deliver at the end of the summer.
3737
3838#### Prerequisite knowledge
3939Technical knowledge required to be able to complete the project. If you do not know what are the prerequisite knowledge for the project you are proposing, you can leave this blank, someone else will complete it.
4040
4141#### Possible mentors
4242People from the team that may be able to mentor that idea. You can leave this section blank if you’re a student. Please only add a mentor’s name if you are that person or if the person explicitly agrees.
4343</pre>
4444
4545
4646
4747## A note for students
4848
49If you are a student and are interested to work on one of the projects listed below, note that at this stage Google has not yet chosen which organizations will participate to GSoC 2015. The list of accepted mentoring organizations will be published on [**February 29**](https://developers.google.com/open-source/gsoc/timeline). Until that date, Tatoeba is not officially part of GSoC 2015.
49If you are a student and are interested to work on one of the projects listed below, note that at this stage Google has not yet chosen which organizations will participate to GSoC 2016. The list of accepted mentoring organizations will be published on [**February 29**](https://developers.google.com/open-source/gsoc/timeline). Until that date, Tatoeba is not officially part of GSoC 2016.
5050
5151Of course this should not stop you from getting started on a project ahead of time. If you do so, we recommend you the following.
5252
53531. Make sure that you have read the [GSoC FAQ](https://developers.google.com/open-source/gsoc/faq) and that you understand how the program works. Please check the [calendar](https://developers.google.com/open-source/gsoc/timeline) for the various deadlines.
54542. If the project you are interested in involves implementing code in the current version of Tatoeba, [install Tatoeba on your machine](https://github.com/Tatoeba/tatoeba2#installing-tatoeba), explore the code, experiment with it.
55554. Start preparing your [proposal](http://en.flossmanuals.net/GSoCStudentGuide/ch008_writing-a-proposal/). You won't be implementing anything (at least not anything related to a GSoC project) until you are officially a GSoC student for Tatoeba. We have certain [requirements regarding GSoC proposals](gsoc_application_requirements).
56563. If you would like to contribute code to get familiar with the project before GSoC, but don't know how to get started, you can read [this guide](guide-for-new-developers).
5757
5858## Ideas
5959
6060### Mobile friendly user interface
6161
6262#### Description
6363Around 30% of the visitors of Tatoeba are browsing the website from a mobile device, but the usuability of the current website on mobile devices is very poor. The idea of this project is to redesign the UI to improve the user experience for visitors who are using a mobile.
6464
6565Discussion in Google group: [GSoC 2015 - Mobile friendly user interface](https://groups.google.com/forum/#!topic/tatoebaproject/ssK6N3T6in4)
6666
6767#### Deliverables
6868Implementation in Tatoeba's source code.
6969
7070#### Prerequisite knowledge
7171PHP, HTML, CSS
7272
7373#### Possible mentors
7474Trang
7575
7676
7777### Extension of the search feature
7878
7979#### Description
8080The search feature is currently available only for sentences and the search criteria are limited to the source/target language and the sentence's text. The goal of this project would be:
8181
8282 1. To implement more search criteria (tags, username, audio, date...) (See [issue #53](https://github.com/Tatoeba/tatoeba2/issues/53))
8383 2. To extend the search feature to comments, wall messages, and possibly other contents (private messages, profile...).
8484
8585Here are some examples of search we would like to be able to do:
8686
8787* Get all sentences in a given language by a given user that have not been translated into a given language. For example: Show me all English sentences by user "CK" not yet translated into Japanese.
8888* Same as above, but limited to sentences with audio. For example: Show me all English sentences by "CK" with audio that have not been translated into Japanese.
8989* Get all sentences in a given language with a certain tag not translated into a given language. For example: Show me all Georgian sentences with the tag "restaurant" not translated into Armenian.
9090* Same as above, but limited to sentences by native speakers not translated into a given language. For example: Show me all Korean sentences by native speakers with the tag "weather" not translated into Japanese.
9191* Get all sentences in a given language under a certain length not yet translated into a given language. For example: Show me all Japanese sentences fewer than 50 characters in length not translated into French.
9292* Same as above, but limited to sentences by a given user.
9393* Get all sentences of a given language that match a given search keyword that have not been translated into a given language. For example: Show all English sentences with the word "mountain" not translated into Japanese.
9494* Same as above, but limited to sentences by a given user.
9595
9696
9797#### Deliverables
9898
9999Implementation in Tatoeba's source code.
100100
101101#### Prerequisite knowledge
102102
103103CakePHP, [Sphinx](http://sphinxsearch.com/)
104104
105105#### Possible mentors
106106
107107gillux
108108
109109### Wish list for words and expression
110110
111111#### Description
112112
113113The wish list for words and expressions allows users to add words and expressions to a list and other users can fulfill the wishes by adding sentences with these words and expressions.
114114
115115The implementation of this feature consists of three new views/pages: "Add to wish list", "Browse wish list", and "Wish: xxx in language by user username".
116116
117117* "Add to wish list" is a page where users can submit new wishes.
118118* "Browse wish list" is a page where users can browse the wishes the other users have submited.
119119* "Wish: xxx in language by user username" is a page for each individual wish where the orginal submiter of the wish can modify the wish, other users can fulfil the wish, and all the users can discuss about the wish.
120120
121121At the upper part of all of these pages there are two tabs/links: "Add to wish list" and "Browse wish list" for easy access from page to page.
122122
123123See more detailed description: [Wish list for words and expression](wish_list)
124124
125125#### Deliverables
126126
127127Implementation in Tatoeba's source code.
128128
129129#### Prerequisite knowledge
130130
131131CakePHP
132132
133133#### Possible mentors
134134
135135gillux, Trang
136136
137137
138138### Achievement system
139139
140140#### Description
141141The goal of this project is to implement a system of achievements that would give users specific tasks to do and reward them with a badge/medal when they complete the tasks.
142142
143143Such a system would be particularly helpful for new contributors. Tatoeba is indeed still not very intuitive. At the moment, when a user registers, they are redirected to a "Getting started" page where information is too dense and that most of them probably don't read.
144144The badge system would guide these new contributors into learning about the features of Tatoeba progressively.
145145
146146This can of course also make contributing more engaging for the more advanced contributors.
147147
148148#### Deliverables
149149
150150Implementation in Tatoeba's source code.
151151
152152#### Prerequisite knowledge
153153CakePHP, MySQL, knowledge about gamification
154154
155155#### Possible mentors
156156
157157Trang
158158
159159
160160### Improvement of communication tools
161161
162162#### Description
163163
164164The Wall is the main place for members to communicate with each other publicly. There are however no categories like in a regular forum. All the topics are mixed together. As a result, one cannot easily find all the posts where people introduce each other, or all the posts where people submit suggestions, or all the posts that are announcements from the admins.
165165
166166The private messages are very old style. There is no notion of a discussion thread, and therefore each message is displayed alone, even if it was a reply of a previous message. This makes it rather unpractical to have a conversation with private messages.
167167
168168The goal of this project is:
169169
1701701. to improve the Wall, or possibly replace it with a forum, or implement a forum in addition to the Wall.
1711712. change the private messages system to display all the messages from a same discussion in a same thread, rather than separated into several private messages.
172172
173173#### Deliverables
174174
175175Implementation in Tatoeba's source code.
176176
177177#### Prerequisite knowledge
178178CakePHP, MySQL
179179
180180#### Possible mentors
181181gillux
182182
183183
184184### Permissions management
185185
186186#### Description
187187
188188The permissions of a user are based mostly on the user's status: depending on whether you are a contributor, advanced contributor, corpus maintainer or admin, you will have access to more or less features. For instance advanced contributors an add tags to a sentence, while regular contributors cannot. Corpus maintainers can delete sentences while other contributors cannot.
189189
190190The goal of this project is to design and implement a more refined permission system, with an interface to manage these permissions.
191191
192192Here are example of things that we cannot do at the moment, and that could be part of the project:
193193
194194* Disallow a user to add new sentences, but still allow them to translate sentences.
195195* Restrict the languages in which a user can contribute.
196196* Disallow a user from posting comments only on the Wall, but not on sentences.
197197
198198#### Deliverables
199199
200200Implementation in Tatoeba's source code.
201201
202202#### Prerequisite knowledge
203203CakePHP, MySQL
204204
205205#### Possible mentors
206206Trang
207207
208208
209209### Audio
210210
211211#### Description
212212
213213Tatoeba provides [audio](http://tatoeba.org/eng/sentences/with_audio) for some sentences. These audio are recorded by volunteers, and the process of contributing audio is a bit complicated. This is due to the fact that audio was not at the core of the project.
214214
215215Audio is still a great addition to the project and Tatoeba has received more and more audio contributions over the years. But the audio content lacks the structure that the sentences in the textual corpus benefit of.
216216
217217* There is no way to know (from the website) who is the author of an audio file, not when it was contributed (cf. [Github issue #547](https://github.com/Tatoeba/tatoeba2/issues/547)).
218218* It is not possible either to attach several audio to a same sentence (to illustrate different accents of a same language for instance).
219219* It is a bit tedious to update and maintain the audio. Contributors have to follow [a certain procedure](contribute-audio), then their audio has to be uploaded to the server, then one of the server admins have to run some script to update the database. Surely we can make this simpler.
220220* It would also be nice if users could record audio directly through the web page (see this [proof of concept](https://webaudiodemos.appspot.com/AudioRecorder/index.html))
221221
222222The goal of this project would be to implement the necessary features for a better management the audio content in Tatoeba.
223223
224224Disccusion in Google group: [GSoC 2015 - Audio](https://groups.google.com/d/topic/tatoebaproject/xs2POttyLOM/discussion)
225225
226226#### Deliverables
227227
228228Implementation in Tatoeba's source code.
229229
230230#### Prerequisite knowledge
231231CakePHP
232232
233233#### Possible mentors
234234Trang
diff view generated by jsdifflib

Version at: 17/01/2016, 14:05

# GSoC 2016 Project ideas

This page lists project ideas for students who would like to take part in [Google Summer of Code 2016](https://developers.google.com/open-source/gsoc/) and be mentored by [Tatoeba](http://tatoeba.org).

## Warning

This page is still a work in progress.

## About Tatoeba

[Tatoeba](http://tatoeba.org) is a platform that aims to build a large **database of sentences** translated into as many languages as possible. The initial idea was to have a tool in which you could search certain words, and it would return example sentences containing these words with their translations in the desired languages. The name Tatoeba resulted from this concept, because **tatoeba** means **for example** in Japanese.

You can browse the [blog](http://blog.tatoeba.org/) or the [wiki](http://en.wiki.tatoeba.org/) for more information about the project.


## Contact

* Google group: [tatoebaproject](https://groups.google.com/forum/#!forum/tatoebaproject)
* IRC: [#tatoeba on freenode](irc://irc.freenode.net/tatoeba), [Webchat](http://webchat.freenode.net?channels=tatoeba)
* XMPP: [Tatoeba conference room on chat.tatoeba.org](xmpp:tatoeba@chat.tatoeba.org?join)

To get a feeling for the discussions taking place within the Tatoeba contributor community, visit the [Tatoeba Wall page](http://tatoeba.org/wall/index).

## How to submit ideas

If you would like to submit an idea and do not have access to the wiki, please [contact us](#contact) and send us the information below.
If you have access to the wiki, simply edit this page and add the information in the [Ideas](#ideas) section.

<pre>
### Project title

#### Description
Brief description of the project. If you have already specified a lot of things about the project, do not write all the details here. Create a separate wiki page for it and only write a summary here, with a link to that wiki page.

#### Deliverables
What is the student expected to deliver at the end of the summer.

#### Prerequisite knowledge
Technical knowledge required to be able to complete the project. If you do not know what are the prerequisite knowledge for the project you are proposing, you can leave this blank, someone else will complete it.

#### Possible mentors
People from the team that may be able to mentor that idea. You can leave this section blank if you’re a student. Please only add a mentor’s name if you are that person or if the person explicitly agrees.
</pre>



## A note for students

If you are a student and are interested to work on one of the projects listed below, note that at this stage Google has not yet chosen which organizations will participate to GSoC 2015. The list of accepted mentoring organizations will be published on [**February 29**](https://developers.google.com/open-source/gsoc/timeline). Until that date, Tatoeba is not officially part of GSoC 2015.

Of course this should not stop you from getting started on a project ahead of time. If you do so, we recommend you the following.

1. Make sure that you have read the [GSoC FAQ](https://developers.google.com/open-source/gsoc/faq) and that you understand how the program works. Please check the [calendar](https://developers.google.com/open-source/gsoc/timeline) for the various deadlines.
2. If the project you are interested in involves implementing code in the current version of Tatoeba, [install Tatoeba on your machine](https://github.com/Tatoeba/tatoeba2#installing-tatoeba), explore the code, experiment with it.
4. Start preparing your [proposal](http://en.flossmanuals.net/GSoCStudentGuide/ch008_writing-a-proposal/). You won't be implementing anything (at least not anything related to a GSoC project) until you are officially a GSoC student for Tatoeba. We have certain [requirements regarding GSoC proposals](gsoc_application_requirements).
3. If you would like to contribute code to get familiar with the project before GSoC, but don't know how to get started, you can read [this guide](guide-for-new-developers).

## Ideas

### Mobile friendly user interface

#### Description
Around 30% of the visitors of Tatoeba are browsing the website from a mobile device, but the usuability of the current website on mobile devices is very poor. The idea of this project is to redesign the UI to improve the user experience for visitors who are using a mobile.

Discussion in Google group: [GSoC 2015 - Mobile friendly user interface](https://groups.google.com/forum/#!topic/tatoebaproject/ssK6N3T6in4)

#### Deliverables
Implementation in Tatoeba's source code.

#### Prerequisite knowledge
PHP, HTML, CSS

#### Possible mentors
Trang


### Extension of the search feature

#### Description
The search feature is currently available only for sentences and the search criteria are limited to the source/target language and the sentence's text. The goal of this project would be:

  1. To implement more search criteria (tags, username, audio, date...) (See [issue #53](https://github.com/Tatoeba/tatoeba2/issues/53))
  2. To extend the search feature to comments, wall messages, and possibly other contents (private messages, profile...).

Here are some examples of search we would like to be able to do:

* Get all sentences in a given language by a given user that have not been translated into a given language. For example: Show me all English sentences by user "CK" not yet translated into Japanese.
* Same as above, but limited to sentences with audio. For example: Show me all English sentences by "CK" with audio that have not been translated into Japanese.
* Get all sentences in a given language with a certain tag not translated into a given language. For example: Show me all Georgian sentences with the tag "restaurant" not translated into Armenian.
* Same as above, but limited to sentences by native speakers not translated into a given language. For example: Show me all Korean sentences by native speakers with the tag "weather" not translated into Japanese.
* Get all sentences in a given language under a certain length not yet translated into a given language. For example: Show me all Japanese sentences fewer than 50 characters in length not translated into French.
* Same as above, but limited to sentences by a given user.
* Get all sentences of a given language that match a given search keyword that have not been translated into a given language. For example: Show all English sentences with the word "mountain" not translated into Japanese.
* Same as above, but limited to sentences by a given user.


#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge

CakePHP, [Sphinx](http://sphinxsearch.com/)

#### Possible mentors

gillux

### Wish list for words and expression

#### Description

The wish list for words and expressions allows users to add words and expressions to a list and other users can fulfill the wishes by adding sentences with these words and expressions.

The implementation of this feature consists of three new views/pages: "Add to wish list", "Browse wish list", and "Wish: xxx in language by user username". 

* "Add to wish list" is a page where users can submit new wishes.
* "Browse wish list" is a page where users can browse the wishes the other users have submited. 
* "Wish: xxx in language by user username" is a page for each individual wish where the orginal submiter of the wish can modify the wish, other users can fulfil the wish, and all the users can discuss about the wish. 

At the upper part of all of these pages there are two tabs/links: "Add to wish list" and "Browse wish list" for easy access from page to page.

See more detailed description: [Wish list for words and expression](wish_list)

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge

CakePHP

#### Possible mentors

gillux, Trang


### Achievement system

#### Description
The goal of this project is to implement a system of achievements that would give users specific tasks to do and reward them with a badge/medal when they complete the tasks.

Such a system would be particularly helpful for new contributors. Tatoeba is indeed still not very intuitive. At the moment, when a user registers, they are redirected to a "Getting started" page where information is too dense and that most of them probably don't read.
The badge system would guide these new contributors into learning about the features of Tatoeba progressively.

This can of course also make contributing more engaging for the more advanced contributors.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL, knowledge about gamification

#### Possible mentors

Trang


### Improvement of communication tools

#### Description

The Wall is the main place for members to communicate with each other publicly. There are however no categories like in a regular forum. All the topics are mixed together. As a result, one cannot easily find all the posts where people introduce each other, or all the posts where people submit suggestions, or all the posts that are announcements from the admins.

The private messages are very old style. There is no notion of a discussion thread, and therefore each message is displayed alone, even if it was a reply of a previous message. This makes it rather unpractical to have a conversation with private messages.

The goal of this project is:

1. to improve the Wall, or possibly replace it with a forum, or implement a forum in addition to the Wall.
2. change the private messages system to display all the messages from a same discussion in a same thread, rather than separated into several private messages.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL

#### Possible mentors
gillux


### Permissions management

#### Description

The permissions of a user are based mostly on the user's status: depending on whether you are a contributor, advanced contributor, corpus maintainer or admin, you will have access to more or less features. For instance advanced contributors an add tags to a sentence, while regular contributors cannot. Corpus maintainers can delete sentences while other contributors cannot.

The goal of this project is to design and implement a more refined permission system, with an interface to manage these permissions.

Here are example of things that we cannot do at the moment, and that could be part of the project:

* Disallow a user to add new sentences, but still allow them to translate sentences.
* Restrict the languages in which a user can contribute.
* Disallow a user from posting comments only on the Wall, but not on sentences.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL

#### Possible mentors
Trang


### Audio

#### Description

Tatoeba provides [audio](http://tatoeba.org/eng/sentences/with_audio) for some sentences. These audio are recorded by volunteers, and the process of contributing audio is a bit complicated. This is due to the fact that audio was not at the core of the project.

Audio is still a great addition to the project and Tatoeba has received more and more audio contributions over the years. But the audio content lacks the structure that the sentences in the textual corpus benefit of.

* There is no way to know (from the website) who is the author of an audio file, not when it was contributed (cf. [Github issue #547](https://github.com/Tatoeba/tatoeba2/issues/547)).
* It is not possible either to attach several audio to a same sentence (to illustrate different accents of a same language for instance).
* It is a bit tedious to update and maintain the audio. Contributors have to follow [a certain procedure](contribute-audio), then their audio has to be uploaded to the server, then one of the server admins have to run some script to update the database. Surely we can make this simpler.
* It would also be nice if users could record audio directly through the web page (see this [proof of concept](https://webaudiodemos.appspot.com/AudioRecorder/index.html))

The goal of this project would be to implement the necessary features for a better management the audio content in Tatoeba.

Disccusion in Google group: [GSoC 2015 - Audio](https://groups.google.com/d/topic/tatoebaproject/xs2POttyLOM/discussion)

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP

#### Possible mentors
Trang

version at: 17/01/2016, 14:06

# GSoC 2016 Project ideas

This page lists project ideas for students who would like to take part in [Google Summer of Code 2016](https://developers.google.com/open-source/gsoc/) and be mentored by [Tatoeba](http://tatoeba.org).

## Warning

This page is still a work in progress.

## About Tatoeba

[Tatoeba](http://tatoeba.org) is a platform that aims to build a large **database of sentences** translated into as many languages as possible. The initial idea was to have a tool in which you could search certain words, and it would return example sentences containing these words with their translations in the desired languages. The name Tatoeba resulted from this concept, because **tatoeba** means **for example** in Japanese.

You can browse the [blog](http://blog.tatoeba.org/) or the [wiki](http://en.wiki.tatoeba.org/) for more information about the project.


## Contact

* Google group: [tatoebaproject](https://groups.google.com/forum/#!forum/tatoebaproject)
* IRC: [#tatoeba on freenode](irc://irc.freenode.net/tatoeba), [Webchat](http://webchat.freenode.net?channels=tatoeba)
* XMPP: [Tatoeba conference room on chat.tatoeba.org](xmpp:tatoeba@chat.tatoeba.org?join)

To get a feeling for the discussions taking place within the Tatoeba contributor community, visit the [Tatoeba Wall page](http://tatoeba.org/wall/index).

## How to submit ideas

If you would like to submit an idea and do not have access to the wiki, please [contact us](#contact) and send us the information below.
If you have access to the wiki, simply edit this page and add the information in the [Ideas](#ideas) section.

<pre>
### Project title

#### Description
Brief description of the project. If you have already specified a lot of things about the project, do not write all the details here. Create a separate wiki page for it and only write a summary here, with a link to that wiki page.

#### Deliverables
What is the student expected to deliver at the end of the summer.

#### Prerequisite knowledge
Technical knowledge required to be able to complete the project. If you do not know what are the prerequisite knowledge for the project you are proposing, you can leave this blank, someone else will complete it.

#### Possible mentors
People from the team that may be able to mentor that idea. You can leave this section blank if you’re a student. Please only add a mentor’s name if you are that person or if the person explicitly agrees.
</pre>



## A note for students

If you are a student and are interested to work on one of the projects listed below, note that at this stage Google has not yet chosen which organizations will participate to GSoC 2016. The list of accepted mentoring organizations will be published on [**February 29**](https://developers.google.com/open-source/gsoc/timeline). Until that date, Tatoeba is not officially part of GSoC 2016.

Of course this should not stop you from getting started on a project ahead of time. If you do so, we recommend you the following.

1. Make sure that you have read the [GSoC FAQ](https://developers.google.com/open-source/gsoc/faq) and that you understand how the program works. Please check the [calendar](https://developers.google.com/open-source/gsoc/timeline) for the various deadlines.
2. If the project you are interested in involves implementing code in the current version of Tatoeba, [install Tatoeba on your machine](https://github.com/Tatoeba/tatoeba2#installing-tatoeba), explore the code, experiment with it.
4. Start preparing your [proposal](http://en.flossmanuals.net/GSoCStudentGuide/ch008_writing-a-proposal/). You won't be implementing anything (at least not anything related to a GSoC project) until you are officially a GSoC student for Tatoeba. We have certain [requirements regarding GSoC proposals](gsoc_application_requirements).
3. If you would like to contribute code to get familiar with the project before GSoC, but don't know how to get started, you can read [this guide](guide-for-new-developers).

## Ideas

### Mobile friendly user interface

#### Description
Around 30% of the visitors of Tatoeba are browsing the website from a mobile device, but the usuability of the current website on mobile devices is very poor. The idea of this project is to redesign the UI to improve the user experience for visitors who are using a mobile.

Discussion in Google group: [GSoC 2015 - Mobile friendly user interface](https://groups.google.com/forum/#!topic/tatoebaproject/ssK6N3T6in4)

#### Deliverables
Implementation in Tatoeba's source code.

#### Prerequisite knowledge
PHP, HTML, CSS

#### Possible mentors
Trang


### Extension of the search feature

#### Description
The search feature is currently available only for sentences and the search criteria are limited to the source/target language and the sentence's text. The goal of this project would be:

  1. To implement more search criteria (tags, username, audio, date...) (See [issue #53](https://github.com/Tatoeba/tatoeba2/issues/53))
  2. To extend the search feature to comments, wall messages, and possibly other contents (private messages, profile...).

Here are some examples of search we would like to be able to do:

* Get all sentences in a given language by a given user that have not been translated into a given language. For example: Show me all English sentences by user "CK" not yet translated into Japanese.
* Same as above, but limited to sentences with audio. For example: Show me all English sentences by "CK" with audio that have not been translated into Japanese.
* Get all sentences in a given language with a certain tag not translated into a given language. For example: Show me all Georgian sentences with the tag "restaurant" not translated into Armenian.
* Same as above, but limited to sentences by native speakers not translated into a given language. For example: Show me all Korean sentences by native speakers with the tag "weather" not translated into Japanese.
* Get all sentences in a given language under a certain length not yet translated into a given language. For example: Show me all Japanese sentences fewer than 50 characters in length not translated into French.
* Same as above, but limited to sentences by a given user.
* Get all sentences of a given language that match a given search keyword that have not been translated into a given language. For example: Show all English sentences with the word "mountain" not translated into Japanese.
* Same as above, but limited to sentences by a given user.


#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge

CakePHP, [Sphinx](http://sphinxsearch.com/)

#### Possible mentors

gillux

### Wish list for words and expression

#### Description

The wish list for words and expressions allows users to add words and expressions to a list and other users can fulfill the wishes by adding sentences with these words and expressions.

The implementation of this feature consists of three new views/pages: "Add to wish list", "Browse wish list", and "Wish: xxx in language by user username". 

* "Add to wish list" is a page where users can submit new wishes.
* "Browse wish list" is a page where users can browse the wishes the other users have submited. 
* "Wish: xxx in language by user username" is a page for each individual wish where the orginal submiter of the wish can modify the wish, other users can fulfil the wish, and all the users can discuss about the wish. 

At the upper part of all of these pages there are two tabs/links: "Add to wish list" and "Browse wish list" for easy access from page to page.

See more detailed description: [Wish list for words and expression](wish_list)

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge

CakePHP

#### Possible mentors

gillux, Trang


### Achievement system

#### Description
The goal of this project is to implement a system of achievements that would give users specific tasks to do and reward them with a badge/medal when they complete the tasks.

Such a system would be particularly helpful for new contributors. Tatoeba is indeed still not very intuitive. At the moment, when a user registers, they are redirected to a "Getting started" page where information is too dense and that most of them probably don't read.
The badge system would guide these new contributors into learning about the features of Tatoeba progressively.

This can of course also make contributing more engaging for the more advanced contributors.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL, knowledge about gamification

#### Possible mentors

Trang


### Improvement of communication tools

#### Description

The Wall is the main place for members to communicate with each other publicly. There are however no categories like in a regular forum. All the topics are mixed together. As a result, one cannot easily find all the posts where people introduce each other, or all the posts where people submit suggestions, or all the posts that are announcements from the admins.

The private messages are very old style. There is no notion of a discussion thread, and therefore each message is displayed alone, even if it was a reply of a previous message. This makes it rather unpractical to have a conversation with private messages.

The goal of this project is:

1. to improve the Wall, or possibly replace it with a forum, or implement a forum in addition to the Wall.
2. change the private messages system to display all the messages from a same discussion in a same thread, rather than separated into several private messages.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL

#### Possible mentors
gillux


### Permissions management

#### Description

The permissions of a user are based mostly on the user's status: depending on whether you are a contributor, advanced contributor, corpus maintainer or admin, you will have access to more or less features. For instance advanced contributors an add tags to a sentence, while regular contributors cannot. Corpus maintainers can delete sentences while other contributors cannot.

The goal of this project is to design and implement a more refined permission system, with an interface to manage these permissions.

Here are example of things that we cannot do at the moment, and that could be part of the project:

* Disallow a user to add new sentences, but still allow them to translate sentences.
* Restrict the languages in which a user can contribute.
* Disallow a user from posting comments only on the Wall, but not on sentences.

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP, MySQL

#### Possible mentors
Trang


### Audio

#### Description

Tatoeba provides [audio](http://tatoeba.org/eng/sentences/with_audio) for some sentences. These audio are recorded by volunteers, and the process of contributing audio is a bit complicated. This is due to the fact that audio was not at the core of the project.

Audio is still a great addition to the project and Tatoeba has received more and more audio contributions over the years. But the audio content lacks the structure that the sentences in the textual corpus benefit of.

* There is no way to know (from the website) who is the author of an audio file, not when it was contributed (cf. [Github issue #547](https://github.com/Tatoeba/tatoeba2/issues/547)).
* It is not possible either to attach several audio to a same sentence (to illustrate different accents of a same language for instance).
* It is a bit tedious to update and maintain the audio. Contributors have to follow [a certain procedure](contribute-audio), then their audio has to be uploaded to the server, then one of the server admins have to run some script to update the database. Surely we can make this simpler.
* It would also be nice if users could record audio directly through the web page (see this [proof of concept](https://webaudiodemos.appspot.com/AudioRecorder/index.html))

The goal of this project would be to implement the necessary features for a better management the audio content in Tatoeba.

Disccusion in Google group: [GSoC 2015 - Audio](https://groups.google.com/d/topic/tatoebaproject/xs2POttyLOM/discussion)

#### Deliverables

Implementation in Tatoeba's source code.

#### Prerequisite knowledge
CakePHP

#### Possible mentors
Trang

Note

The lines in green are the lines that have been added in the new version. The lines in red are those that have been removed.