User:Renamed user ablguwe/GSoC 2014 proposal

Inline translation

 * Public URL: (editing)
 * Bugzilla report: (will be added soon)
 * Announcement: Link

Name and contact information

 * Name: Roman Zaynetdinov
 * Email: romanznet@gmail.com
 * IRC or IM networks/handle(s): zaynetro
 * Web Page / Blog / Microblog / Portfolio: github.com/zaynetro
 * Location: Turku, Finland
 * Typical working hours: During the day time in UTC+02:00 time zone

What is the purpose?
Help people in reading complex texts by providing inline translation for unknown words. For me as a non-native English speaker student sometimes is hard to read complicated texts or articles, that’s why I need to search for translation or description every time. Why not to simplify this and change the flow from translate and understand to translate, learn and understand?

How inline translation will appear?
While user is reading an article, he could find some unknown words or words with confusing meaning for him. At this point he clicks on the selected word and the inline translation appears.

What should be included in inline translation?
Thus it is not just a translator, it should include not only one translation, but a couple or more. Also more data can be included such as synonyms, which can be discussed during project completion.

From which source gather the data?
Wiktionary is the best candidate, it is an open source and it has a wide database. It also suits for growing your project by adding different languages. Also other candidates can be found to make translation more precise.

Evaluation
There are two ways in my mind right now.
 * 1) First is to make a web-site built on Node.js with open API for users. Parsoid could be used for parsing data from Wiktionary API which is suitable for Node. A small JavaScript widget is also required for front-end representation.
 * 2) Second is to make a standalone library which can be used alone on other resources as an add-on or in browser extensions. Unfortunately, last option is more confusing for me at this point.

Example
After clicking on the word simple window appears with information about this word. Instead of "Info about this word" more data should be shown at least a couple of meanings like on this page.

Growth opportunities
As an example I am leaving in Finland right now and I don’t know Finnish as I should to understand locals, therefore this project can be expanded by adding more languages support for helping people like me reading, learning and understanding texts in foreign languages.

Suggested solution
“You could basically write a node service that pulls in the Parsoid HTML for a given wiktionary term and extracts the info you need from the DOM and returns it in a JSON response to a client-side library. Alternatively (or as a first step), you could download the Parsoid HTML of the wiktionary article on the client and extract the info there. This could even be implemented as a gadget. We recently set liberal CORS headers to make this easy.” by Gabriel Wicke.


 * Possible mentors:

Deliverables
(editing)
 * Week 1:
 * understanding the structure and required modules if they'll be needed
 * writing a descriptive list of tasks
 * Weeks 3-4: writing the server side and getting information about Parsoid
 * Weeks 3-4: understanding Parsoid and implementing support
 * Weeks 4: finding and resolving bugs, and writing documentation

Participation
In the beginning of the project I will create a tasks list, which I will be editing during the completion of the project, it will help me to understand the current progress and also writing a report to the mentor (if needed). I am planning to publish the source to my github account for the whole project period. After doing this project I am not planning to stop developing it, on the contrary I want to continue working on it.

About you

 * Education completed or in progress: Bachelor degree in Information Technology in progress


 * How did you hear about this program?: From a friend, who participated in the previous Google Summer of Code

Past experience
Completely redesigned my school schedule and successfully presented it in the school exhibition. I decided to learn JavaScript and Node.js from scratch and this project is what I came up with. Also I learned how to work with non-relational databases and how to organize your work combining studying and doing the project at the same time.
 * 1) Link to schedule.
 * 2) Link to source code.

Any other info
Currently I don't have a big projects portfolio, cause I just started, but I am reading a lot and following JavaScript updates and new techniques. The most important slogan for me is "Making the web a better place".