Difference between revisions of "Task ideas for Google Code-in"

From Apertium
Jump to navigation Jump to search
 
(841 intermediate revisions by 49 users not shown)
Line 1: Line 1:
  +
This is the task ideas page for Google Code-in (http://www.google-melange.com/gci/homepage/google/gci2013), here you can find ideas on interesting tasks that will improve your knowledge of Apertium and help you get into the world of open-source development.
 
  +
{{TOCD}}
  +
This is the task ideas page for [https://developers.google.com/open-source/gci/ Google Code-in], here you can find ideas on interesting tasks that will improve your knowledge of Apertium and help you get into the world of open-source development.
   
 
The people column lists people who you should get in contact with to request further information. All tasks are 2 hours maximum estimated amount of time that would be spent on the task by an experienced developer, however:
 
The people column lists people who you should get in contact with to request further information. All tasks are 2 hours maximum estimated amount of time that would be spent on the task by an experienced developer, however:
   
# '''this does not include time taken to install / set up apertium'''.
+
<!--# '''this does not include time taken to [[Minimal installation from SVN|install]] / set up apertium (and relevant tools)'''.-->
 
# this is the time expected to take by an experienced developer, you may find that you spend more time on the task because of the learning curve.
 
# this is the time expected to take by an experienced developer, you may find that you spend more time on the task because of the learning curve.
   
Line 13: Line 15:
 
* {{sc|research}}: Tasks related to community management, outreach/marketting, or studying problems and recommending solutions
 
* {{sc|research}}: Tasks related to community management, outreach/marketting, or studying problems and recommending solutions
 
* {{sc|quality}}: Tasks related to testing and ensuring code is of high quality.
 
* {{sc|quality}}: Tasks related to testing and ensuring code is of high quality.
* {{sc|interface}}: Tasks related to user experience research or user interface design and interaction
+
* {{sc|design}}: Tasks related to user experience research or user interface design and interaction
   
  +
'''Clarification of "multiple task" types'''
==Task list==
 
  +
* multi = number of students who can do a given task (GCI's "max instances")
  +
* dup = number of times a student can do the same task
   
  +
You can find descriptions of some of the mentors [[List_of_Apertium_mentors | here]].
   
  +
== Task ideas ==
{|class="wikitable sortable"
 
  +
! Category !! Title !! Description !! Mentors
 
  +
'''The current task ideas here are for 2019.''' See [[Talk:Task ideas for Google Code-in]] for task ideas from previous years.
  +
  +
<table class="sortable wikitable" style="display: none">
  +
<tr><th>type</th><th>title</th><th>description</th><th>tags</th><th>mentors</th><th>bgnr?</th><th>multi?</th><th>duplicates</th></tr>
  +
  +
{{Taskidea
  +
|type=research, quality, documentation
  +
|title=Adopt a Wiki page
  +
|description=Request an Apertium wiki account and adopt a wiki page by updating and fixing any issues with it. Examples of things to update might be documentation that still refers to our SVN repo (we're on GitHub now), documentation of new features, clarification of unclear things, indicating that a page no longer reflects how things are done, "archiving" a page that represents deprecated information, or updating documentation to reflect the current options and defaults of various tools.
  +
|tags=wiki
  +
|mentors=*
  +
|multi=150
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research, quality, documentation
  +
|title=Test instructions on Apertium wiki
  +
|description=Find a page on the Apertium wiki that documents how to do something (hint: check the [http://wiki.apertium.org/wiki/Category:Documentation Documentation] category). Then try to follow the instructions. Check with your mentor when you get stuck. Modify the instructions as necessary. If the instructions are for something that is deprecated or no longer used by the community, either mark them as deprecated (category, banner at top of page, fix links to page) and/or modify them to match current practices.
  +
|tags=wiki
  +
|mentors=*
  +
|multi=150
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research, code
  +
|title=expand coverage of Kyrgyz to English structural transfer
  +
|description=Find a sentence in Kyrgyz that once the lexical items are added to the bilingual dictionary is not fully (or correctly) parsed by the <tt>kir-eng-transfer</tt> Apertium mode. Determine what rule(s) need(s) to be added (or fixed) to cover this structure, and update <tt>apertium-eng-kir.kir-eng.rtx</tt> accordingly. You will first want to clone and compile [https://github.com/apertium/apertium-eng-kir apertium-eng-kir].
  +
|tags=Kyrgyz, English, recursive transfer, pairs
  +
|mentors=JNW, popcorndude
  +
|multi=150
  +
|dup=10
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Add recursive transfer support to a language pair that doesn't support it
  +
|description=Make a branch of an Apertium language pair that doesn't support recursive transfer and call it "recursive transfer". Add vanilla <tt>.rtx</tt> files for both directions, and modify <tt>Makefile.am</tt> and <tt>modes.xml</tt> so that the branch compiles and runs. See [http://wiki.apertium.org/wiki/Apertium-recursive#Incorporating_Into_a_Pair this page] for instructions on how to do this.
  +
|tags=recursive transfer, pairs
  +
|mentors=JNW, popcorndude
  +
|multi=150
  +
|dup=10
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Add 2 recursive transfer rules to a language pair
  +
|description=Add two recursive transfer rules to an Apertium language pair. These rules consist of, at minimum, a syntactic pattern to match, a phrase to combine them into, and an output pattern ([http://wiki.apertium.org/wiki/Apertium-recursive#Further_Documentation more documentation here]). If the language pair does not support recursive transfer, make sure [http://wiki.apertium.org/wiki/Apertium-recursive#Incorporating_Into_a_Pair to set it up] first. Submit your work as a pull request to a new branch ("recursive", "rtx", or similar) of the repository on GitHub.
  +
|tags=recursive transfer, pairs
  +
|mentors=JNW, popcorndude
  +
|multi=150
  +
|dup=20
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, wei2912, padth4i, popcorndude
  +
|title=Use apertium-init to bootstrap a new language pair
  +
|description=Use the [[Apertium-init]] script to bootstrap a new translation pair between two languages which have monolingual modules already in Apertium. To see if a translation pair has already been made, search our repositories on [https://github.com/apertium/ github], and especially ask on IRC. Add 100 common stems to the dictionary. Your submission should be in the form of a repository on github that we can fork to the Apertium organisation.
  +
|tags=languages, bootstrap, dictionaries, translators
  +
|beginner=yes
  +
|multi=25
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, wei2912, padth4i, popcorndude
  +
|title=Use apertium-init to bootstrap a new language module
  +
|description=Use the [[Apertium-init]] script to bootstrap a new language module that doesn't currently exist in Apertium. To see if a language is available, search our repositories on [https://github.com/apertium/ github], and especially ask on IRC. Add enough stems and morphology to the module so that it analyses and generates at least 100 correct forms. Your submission should be in the form of a repository on github that we can fork to the Apertium organisation. [[Task ideas for Google Code-in/Add words from frequency list|Read more about adding stems...]]
  +
|tags=languages, bootstrap, dictionaries
  +
|beginner=yes
  +
|multi=25
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, sevilay, Unhammer, marcriera, padth4i, Oguz, popcorndude
  +
|title=Write 10 lexical selection for an existing translation pair
  +
|description=Add 10 lexical selection rules to an existing translation pair. Submit your work as a github pull request to that pair. [[Task ideas for Google Code-in/Add lexical-select rules|Read more...]]
  +
|tags=languages, bootstrap, lexical selection, translators
  +
|multi=25
  +
|dup=5
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, Unhammer, padth4i, Oguz, popcorndude
  +
|title=Write 10 constraint grammar rules for an existing language module
  +
|description=Add 10 constraint grammar rules to an existing language module for a language that you know. Submit your work as a github pull request to that pair. [[Task ideas for Google Code-in/Add constraint-grammar rules|Read more...]]
  +
|tags=languages, bootstrap, constraint grammar
  +
|multi=25
  +
|dup=5
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=anakuz, fotonzade
  +
|title=Syntactic annotation of text
  +
|description=Pick a text of about 200 words and make a syntactic annotation for it according to the Universal Dependencies treebank. UD Annotatrix can be used for visualisation. Consult with your mentor about the language.
  +
|tags=UD, trees, annotation
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=JNW,ftyers, fotonzade, anakuz, Oguz
  +
|title=Create a UD-Apertium morphology mapping
  +
|description=Choose a language that has a Universal Dependencies treebank and tabulate a potential set of Apertium morph labels based on the (universal) UD morph labels. See Apertium's [[list of symbols]] and [http://universaldependencies.org/ UD]'s POS and feature tags for the labels.
  +
|tags=morphology, ud, dependencies
  +
|beginner=
  +
|multi=5
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=JNW, ftyers, fotonzade, anakuz
  +
|title=Create an Apertium-UD morphology mapping
  +
|description=Choose a language that has an Apertium morphological analyser and adapt it to convert the morphology to UD morphology
  +
|tags=morphology, ud, dependencies
  +
|beginner=
  +
|multi=5
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|title=Install Apertium and verify that it works
  +
|description=See [[Installation]] for instructions and if you encounter any issues along the way, document them and/or improve the wiki instructions!
  +
|tags=bash
  +
|mentors=ftyers, JNW, Unhammer, anakuz, Josh, fotonzade, sevilay, eirien, wei2912, padth4i, jjjppp
  +
|multi=150
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|title=Write a contrastive grammar
  +
|description=Document 6 differences between two (preferably related) languages and where they would need to be addressed in the [[Apertium pipeline]] (morph analysis, transfer, etc). Use a grammar book/resource for inspiration. Each difference should have no fewer than 3 examples. Put your work on the Apertium wiki under [[Language1_and_Language2/Contrastive_grammar]]. See [[Farsi_and_English/Pending_tests]] for an example of a contrastive grammar that a previous GCI student made.
  +
|mentors=mlforcada, JNW, Josh, xavivars, fotonzade, sevilay, khannatanmai, dolphingarlic, padth4i
  +
|tags=wiki, languages
  +
|beginner=yes
  +
|multi=40
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=mlforcada, anakuz, xavivars, fotonzade, sevilay, Unhammer, eirien, dolphingarlic, wei2912, marcriera, padth4i, Oguz, JNW, jjjppp
  +
|tags=xml, dictionaries
  +
|title=Identify and add 100 new entries to the bilingual dictionary for the %AAA%-%BBB% language pair
  +
|description=Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 100 new words to a bidirectional dictionary. With the help of your mentor, identify some text in either %AAA% or %BBB% and run it through Apertium's %AAA%-%BBB% translator to identify 50 unknown forms. Add the stems of these forms to the analyser in an appropriate way so that these words are analysed correctly. Your submission should be in the form of a pull request to each of the appropriate repositories on GitHub. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Grow_bilingual More instructions for this task here]...
  +
|multi=40
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=mlforcada, anakuz, xavivars, fotonzade, ftyers, sevilay, eirien, dolphingarlic, wei2912, marcriera, padth4i, Oguz, JNW
  +
|tags=xml, dictionaries
  +
|title=Identify and add 250 new entries to the bilingual dictionary for the %AAA%-%BBB% language pair
  +
|description=Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 250 new words to a bidirectional dictionary. With the help of your mentor, identify some text in either %AAA% or %BBB% and run it through Apertium's %AAA%-%BBB% translator to identify 50 unknown forms. Add the stems of these forms to the analyser in an appropriate way so that these words are analysed correctly. Your submission should be in the form of a pull request to each of the appropriate repositories on GitHub. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Grow_bilingual More instructions for this task here]...
  +
|dup=20
  +
|beginner=no
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=fotonzade, JNW, ftyers, anakuz, xavivars, mlforcada, shardulc, sevilay, Unhammer, dolphingarlic, wei2912, marcriera
  +
|tags=xml, dictionaries
  +
|title=Post-edit 500 sentences of any public domain text from %AAA% to %BBB%
  +
|description=Many of our systems benefit from statistical methods used with (ideally public domain) bilingual data. For this task, you need to translate a public domain text from %AAA% to %BBB% using any available machine translation system and clean up the translations yourself manually. Commit the post-edited texts (in plain text format) to an existing (via pull request) or if needed new github repository for the language pair in dev/ or texts/ folder. The texts are subject to mentor approval.
  +
|multi=10
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=mlforcada, anakuz, xavivars, fotonzade, sevilay, dolphingarlic, wei2912, marcriera, padth4i
  +
|tags=disambiguation
  +
|title=Disambiguate 500 tokens of text in %AAA%
  +
|description=Run some text through a morphological analyser and disambiguate the output. Discuss with the mentor beforehand to approve the choice of language and text. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Manually_disambiguate_text Read more]...
  +
|multi=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=eirien, anakuz, marcriera, padth4i
  +
|tags=dictionaries
  +
|title=Categorise 100 words from frequency list in %AAA%
  +
|description=Categorise words by frequency into one of the major part-of-speech categories. You will receive a frequency list. Work from top to bottom. At the beginning of each line you should put a letter which categorises the word form by its part-of-speech. For example n for noun, v for verb, etc. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Categorise_words_from_frequency_list Read more]... <!-- Wouldn't it be better for them to to add directly to the analyser? Easier for us, and more educational for them! -JNW -->
  +
|multi=yes
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=eirien, anakuz, sevilay, marcriera
  +
|tags=dictionaries
  +
|title=Categorise 500 words from frequency list in %AAA%
  +
|description=Categorise words by frequency into one of the major part-of-speech categories. You will receive a frequency list. Work from top to bottom. At the beginning of each line you should put a letter which categorises the word form by its part-of-speech. For example n for noun, v for verb, etc. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Categorise_words_from_frequency_list Read more]... <!-- Wouldn't it be better for them to to add directly to the analyser? Easier for us, and more educational for them! -JNW -->
  +
|multi=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=khannatanmai, sevilay, padth4i
  +
|tags=evaluation
  +
|title=Evaluate an existing apertium pair %AAA% to %BBB% on a text
  +
|description= Pick an existing apertium pair and get a parallel text for that language pair. Translate %AAA% to %BBB% and evaluate the translation using an automatic evaluation metric like BLEU or/and evaluate it manually. [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Evaluation_of_translation_of_an_existing_pair Read more]...
  +
}}
  +
  +
{{Taskidea
  +
|type=code, research
  +
|title=Add apertium-anaphora support to a new language pair
  +
|description=Make a branch of an Apertium language pair that doesn't use apertium-anaphora yet, and call it "anaphora". Manually add the correct antecedent to side ref of the anaphors in the output of biltrans, and modify t1x to change the anaphor based on its antecedent. Verify that it runs and gives the correct anaphor. See the [http://wiki.apertium.org/wiki/Anaphora_Resolution_Module documentation] of the apertium-anaphora module for help.
  +
|tags=apertium-anaphora, transfer
  +
|mentors=khannatanmai
  +
}}
  +
  +
{{Taskidea
  +
|type=code, research
  +
|title=Add one markable to the arx file for a language pair
  +
|description=The arx file is where we tell the anaphora resolution algorithm which patterns to detect and score, when we want to find the antecedent of an anaphor. Add one rule in this file which can help the algorithm find out the antecedent of an anaphor - specify the pattern to detect and the positive or negative score you want to give to the noun in this pattern. See the [http://wiki.apertium.org/wiki/Anaphora_Resolution_Module documentation] of the apertium-anaphora module for help.
  +
|tags=apertium-anaphora, anaphora resolution
  +
|mentors=khannatanmai, popcorndude
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Write a TextMate grammar for CG-3 syntax highlighting
  +
|description=We want CG-3 files to be syntax highlighted in Github. They use TextMate-compatible grammars. See [https://github.com/TinoDidriksen/cg3/issues/48 issue 48] in the CG-3 repo.
  +
|tags=cg, editors, tools
  +
|mentors=Unhammer
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Make Apertium IRC bot's messaging system case-insensitive
  +
|description=[[Begiak]] is Apertium's IRC bot. It has a messaging system, where you can say e.g. "begiak, tell randomuser thanks for the tip!" or "begiak: ask randomuser where they filed that issue", and the bot will deliver the message next time it sees randomuser say something. There's been [https://github.com/apertium/phenny/issues/488 a request] for begiak to recognise case-insensitive commands. Your job is to create a fix for this and submit a pull request to the repository with the fix.
  +
|tags=python, irc
  +
|beginner=yes
  +
|mentors=JNW, popcorndude
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Make Apertium's IRC bot's updating of Apertium's wiki format numbers better
  +
|description=[[Begiak]] is Apertium's IRC bot. It has a module that allows users on IRC to trigger a script that updates the Apertium wiki with statistics about Apertium modules. There have been [https://github.com/apertium/phenny/issues/485 complaints about the formatting of the numbers it writes]. Your job is to create a fix for this and submit a pull request to the repository with the fix.
  +
|tags=python, irc, wiki
  +
|beginner=yes
  +
|mentors=JNW, popcorndude
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|title=Create a new init script for Apertium's IRC bot
  +
|description=[[Begiak]] is Apertium IRC bot. It runs on a low-power server that runs Debian. Sometimes that server is reset, and we have to manually restart begiak. The init script that used to control begiak no longer seems to work. Your task is to create a new init script that supports the normal sort of actions that init scripts do, and also the following options for begiak: the specific path to run it from, the user to run it as, miscellaneous arguments, and a log file to log its output. This init script should live in the repository in a reasonable place. There is a [https://github.com/apertium/phenny/issues/484 github issue describing this task].
  +
|tags=python, debian, init, irc
  +
|mentors=JNW
  +
}}
  +
  +
{{Taskidea
  +
|type=documentation
  +
|mentors=JNW, flammie, popcorndude
  +
|title=Add comments to a dictionary defining the symbols used in it
  +
|description=Add comments to a monolingual or bilingual dictionary file (.lexc/.dix, .dix) in the symbol definitions area that clarify what each symbol stands for. Also direct the comment reader to the Apertium wiki page on symbol definitions for more information.
  +
|tags=dictionaries
  +
|dup=10
  +
}}
  +
  +
{{Taskidea
  +
|type=documentation
  +
|mentors=JNW, popcorndude
  +
|title=find symbols that aren't on the list of symbols page
  +
|description=Go through the symbol definitions in Apertium dictionaries on GitHub (.lexc and .dix format), and document any symbols you don't find on the [[List of symbols]] page. This task is fulfilled by adding at least one class of related symbols (e.g., xyz_*) or one major symbol (e.g., abc), along with notes about what it means.
  +
|tags=wiki,dictionaries
  +
}}
  +
  +
{{Taskidea
  +
|type=documentation
  +
|title=document usage of the apertium-separable module
  +
|mentors=JNW, khannatanmai, popcorndude
  +
|description=Document which language pairs have included the [[apertium-separable]] module in its package, which have beta-tested the lsx module, and which are good candidates for including support for lsx. Add to [[Lsx_module/supported_languages|this wiki page]]
  +
|tags=lsx, dictionaries, wiki
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|title=Beta-test the apertium-separable module
  +
|mentors=JNW, ftyers, wei2912, khannatanmai, dolphingarlic, popcorndude
  +
|description= [[Lsx_module#Creating_the_lsx-dictionary|create an lsx dictionary]] in both directions for any relevant and existing language pair that doesn't yet support it (as a "separable" branch in its GitHub repository), adding 10-30 entries to it in one or both directions. Thoroughly test to make sure the output is as expected. Report bugs/non-supported features and add them to [[Lsx_module#Future_work| future work]]. Document your tested language pair by listing it under [[Lsx_module#Beta_testing]] and in [[Lsx_module/supported_languages|this wiki page]]
  +
|tags=lsx, dictionaries
  +
|multi=yes
  +
|dup=20
  +
}}
  +
  +
{{Taskidea
  +
|type=code, quality
  +
|title=script to test coverage of analyser over corresponding wikipedia corpus
  +
|mentors=JNW, wei2912
  +
|description=Write a script (in python or ruby) that tests coverage of an Apertium analyser over the latest Wikipedia corpus in that language. One mode of this script should check out a specified language module to a given directory, compile it (or updates it if already existant), and then get the most recently Wikipedia nightly archive for that language and run coverage over it (as much in RAM if possible). In another mode, it should compile the language pair in a docker instance that it then disposes of after successfully running coverage. Scripts exist in Apertium already for finding where a Wikipedia is, extracting a Wikipedia archive into a text file, and running coverage. Ask a mentor for help finding these scripts.
  +
|tags=python, ruby, wikipedia
  +
}}
  +
  +
{{Taskidea
  +
|type=code, design
  +
|title=Make source browser headings sticky at bottom of window
  +
|description=Make headings that are out of view (either below when at the top, or above when scrolled down) sticky on [https://apertium.github.io/apertium-on-github/source-browser.html Apertium source browser], so that it's clear what other headings exist. There is a [https://github.com/apertium/apertium-on-github/issues/22 github issue for this].
  +
|tags=css, javascript, html, web
  +
|mentors=sushain, JNW, xavivars
  +
|multi=
  +
|beginner=no
  +
}}
  +
  +
{{Taskidea
  +
|type=code, design
  +
|mentors=JNW, jjjppp, sushain, dolphingarlic
  +
|tags=d3, javascript
  +
|title=Integrate globe viewer into language family visualiser interface
  +
|description=The [https://github.com/apertium/family-visualizations family visualiser interface] has four info boxes when a language is clicked on, and one of those boxes is empty. The [https://github.com/jonorthwash/Apertium-Global-PairViewer globe viewer] provides a globe visualisation of languages that we can translate a given language to and from. This task is to integrate the globe viewer for a specific language into the fourth box in the family visualiser. There is an [https://github.com/jonorthwash/Apertium-Global-PairViewer/issues/32 associated GitHub issue].
  +
|multi=no
  +
|beginner=no
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, jjjppp, dolphingarlic
  +
|tags=d3, javascript
  +
|title=Change hard-coded values to dynamic in the globe viewer's code
  +
|description=The [https://github.com/jonorthwash/Apertium-Global-PairViewer globe viewer] provides a globe visualisation of languages that we can translate a given language to and from. This task is to clean up its source code by changing hard-coded values (e.g. scales and object sizes) to dynamic values so that the code will be easier to maintain in the future. There is an [https://github.com/jonorthwash/Apertium-Global-PairViewer/issues/24 associated GitHub issue].
  +
|multi=no
  +
|beginner=no
  +
}}
  +
  +
{{Taskidea
  +
|type=code
  +
|mentors=JNW, jjjppp, dolphingarlic
  +
|tags=d3, javascript
  +
|title=Fix fading for flyers in globe viewer
  +
|description=The [https://github.com/jonorthwash/Apertium-Global-PairViewer globe viewer] provides a globe visualisation of languages that we can translate a given language to and from. Currently, the flyers, which are the 3D colored connections, fade as either end of the connection goes out of the current scope of the globe. However, this causes flyers that connect two far away languages to be invisible (see issue for example). This task is to change the current fading function to account for far away connections and allow them to stay visible. There is an [https://github.com/jonorthwash/Apertium-Global-PairViewer/issues/22 associated GitHub issue].
  +
|multi=no
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=design
  +
|mentors=JNW, ftyers
  +
|tags=UD, design, svg
  +
|title=Design a logo for UD Annotatrix
  +
|description=UD Annotatrix needs a better logo, or set of logos. Have a look at the [https://github.com/jonorthwash/ud-annotatrix/tree/master/server/public current logos] and [https://jonorthwash.github.io/ud-annotatrix/ see them in use]. Design a potential replacement logo that meets the following requirements: somehow incorporates what UD Annotatrix is / is for, is not "cluttered" (like the current cat logo), and can be used at different sizes.
  +
|multi=yes
  +
|beginner=no
  +
}}
  +
  +
  +
{{Taskidea
  +
|type=quality, documentation, design
  +
|mentors=*
  +
|tags=video, tutorial
  +
|title=Video tutorial: installing Apertium, adding to dictionary, and submitting a PR
  +
|description=Post a video online that (1) demonstrates how to install Apertium on an operating system of your choice, (2) demonstrates how to clone and compile an Apertium translation pair of your choice, (3) shows how to add a new word to the dictionary (categorised correctly), and (4) shows how to submit the updated dictionary as a pull request to Apertium's git repository. Add a link to the video on the [http://wiki.apertium.org/wiki/Installation#Installation_Videos installation videos page] of the Apertium wiki.<br/>The title of the video should make it easy to find, and so should probably be similar to the title of this task. We recommend a screencast with voice-over posted to YouTube, but the format and venue are up to you as long as it is publicly accessible for long term. Here are [https://www.youtube.com/playlist?list=PLHldb9r6QkVFsuxlAoVS-OL32aurUOZLC some example videos] that are relevant but that could probably be improved upon.<br/>The video **does not have to be in English**; we can evaluate it in any of the following languages: %ZZZ%. Please let us know when you claim the task what language you plan to create the video in, so that we know which mentor(s) should primarily work to evaluate your task.
  +
|multi=200
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=mlforcada, anakuz, xavivars, fotonzade, sevilay, Unhammer, eirien, dolphingarlic, wei2912, marcriera, padth4i, Oguz, JNW, jjjppp
  +
|tags=xml, dictionaries
  +
|title=Identify and add 100 new entries to a bilingual dictionary
  +
|description=Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 100 new words to a bidirectional dictionary. Choose one of the language pairs listed below, and with the help of your mentor, identify some text in one of the two languages, and run the text through Apertium's translator for that language pair to identify 100 unknown forms. As needed, add the stems of these forms to the individual languages' analysers in an appropriate way so that these words are analysed correctly. Your submission should be in the form of a pull request to each of the appropriate repositories on GitHub.<br/>The language pairs we can mentor for this task are the following: %ALLPAIRS%.<br/> [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Grow_bilingual More instructions for this task here]...
  +
|multi=40
  +
|dup=10
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=mlforcada, anakuz, xavivars, fotonzade, ftyers, sevilay, eirien, dolphingarlic, wei2912, marcriera, padth4i, Oguz, JNW
  +
|tags=xml, dictionaries
  +
|title=Identify and add 250 new entries to a bilingual dictionary
  +
|description=Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 250 new words to a bidirectional dictionary. Choose one of the language pairs listed below, and with the help of your mentor, identify some text in one of the two languages, and run the text through Apertium's translator for that language pair to identify 250 unknown forms. As needed, add the stems of these forms to the individual languages' analysers in an appropriate way so that these words are analysed correctly. Your submission should be in the form of a pull request to each of the appropriate repositories on GitHub.<br/>The language pairs we can mentor for this task are the following: %ALLPAIRS%.<br/> [http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Grow_bilingual More instructions for this task here]...
  +
|multi=40
  +
|dup=10
  +
|beginner=no
  +
}}
  +
  +
{{Taskidea
  +
|type=quality
  +
|mentors=fotonzade, JNW, ftyers, anakuz, xavivars, mlforcada, shardulc, sevilay, Unhammer, dolphingarlic, wei2912, marcriera
  +
|tags=xml, dictionaries
  +
|title=Post-edit 500 sentences of a public domain text
  +
|description=Many of our systems benefit from statistical methods used with (ideally public domain) bilingual data. For this task, you need to translate a public domain text using an available machine translation system (Apertium preferred) and clean up the translation yourself manually. Commit the source text and post-edited translation (in plain text format) to an existing (via pull request) or if needed new github repository for the language pair in dev/ or texts/ folder. The texts are subject to mentor approval.<br/>The language pairs we can hypothetically mentor for this task (pending their existence) are the following: %ALLPAIRS%.
  +
|multi=40
  +
|dup=10
  +
|beginner=yes
  +
}}
  +
  +
{{Taskidea
  +
|type=research
  +
|mentors=khannatanmai, sevilay, padth4i
  +
|tags=evaluation
  +
|title=Evaluate an existing Apertium translation pair on a text
  +
|description= Pick an existing Apertium language pair and get a parallel text for that language pair. Translate the text using the Apertium translation pair and evaluate the translation using an automatic evaluation metric like BLEU and/or evaluate it manually.<br/>The language pairs we can mentor for this task (pending their existence) are the following: %ALLPAIRS%.<br/>[http://wiki.apertium.org/wiki/Task_ideas_for_Google_Code-in/Evaluation_of_translation_of_an_existing_pair Read more]...
  +
|multi=40
  +
|dup=10
  +
}}
  +
  +
<!-- {{Taskidea
  +
|type=quality
  +
|mentors=*
  +
|tags=localisation
  +
|title=Complete website localisation in a language not fully localised
  +
|description=
  +
|multi=
  +
}} -->
  +
  +
<!-- NEW TASKS BELOW -->
  +
  +
  +
  +
</table>
  +
  +
==Mentors==
  +
  +
These are languages that can be substituted for AAA and/or BBB for tasks each mentor is listed to mentor above.
  +
  +
If you do not see your language here, ask. We may be able to mentor or find you a mentor.
  +
  +
{|class=wikitable
  +
! Mentor !! Languages
 
|-
 
|-
  +
| ftyers || eng, spa, cat, fra, nor, rus, por, swe, tur, gag, aze
| {{sc|code}} || Write 10 constraint grammar rules || Write 10 new constraint grammar rules that resolve tagging problems in unseen text, and observe changes in the output, possibly after retraining the part-of-speech tagger . || [[User:Mlforcada]], [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| JNW || eng, spa, fra, rus, tur, gag, aze, kaz, kir, kaa, tat, bak, kum, nog, kaa, uzb, uig, crh, khk, yid
| {{sc|code}} || Start a constraint grammar rule file || Start a constraint grammar rule file for a language pair not having it with 5 rules that resolve tagging problems in unseen text, and observe changes in the output, possibly after retraining the part-of-speech tagger . || [[User:Mlforcada]], [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| anakuz || grn, spa, por, rus
| {{sc|code}} || Localised available languages function in [[apertium-apy]] || Make a new function for [[apertium-apy]], is takes as input a language code, and as output gives the list of available pairs, and their translations in the language specified by the language code. You will probably need to know JavaScript and Python. || [[User:Firespeaker]] [[User:Unhammer]] [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| fotonzade || eng, tur, aze, uig, tat, crh, kmr, ckb, fas
| {{sc|code}} || Fix the highlighting in [[simple-html]] language selection boxes. || The language selection box in the [[simple-html]] interface should highlight the supported target languages when a user clicks on a source language. At the moment this does not work properly. For this task you will need to know Javascript. || [[User:Firespeaker]] [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| xavivars || cat, spa, eng, fra
| {{sc|code}} || Language detection in [[apertium-apy]] || Make a new function for [[apertium-apy]], that allows the language of some input text to be identified. For this task you will also need to train models for the language identifier. || [[User:Firespeaker]] [[User:Unhammer]] [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| Unhammer || nno, nob, swe, dan, fao, sme, ovd
| {{sc|code}} || SSL in [[apertium-apy]] || Make [[apertium-apy]] optionally use SSL. (If you put simple-html on an ssl domain, new browsers won't let you do plaintext/non-ssl ajax). || [[User:Firespeaker]] [[User:Unhammer]] [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| shardulc || eng, fra, mar, hin, urd, kan
| {{sc|code}} || How much of a given sentence pair is explained by Apertium? || Write (in some scripting language of your choice) a command-line program that takes an Apertium language pair, a source-language sentence S, and a target-language sentence T, and outputs the set of pairs of subsegments (s,t) such that s is a subsegment of S, t a subsegment of T and t is the Apertium translation of s or vice-versa (a subsegment is a sequence of whole words). || [[User:Mlforcada]]
 
 
|-
 
|-
  +
| m-alpha || eng, fra, byv
| {{sc|documentation}} || Check that the [[Apertium guide for Windows users]] still works || We have an Apertium guide for Windows users, to help them install on Windows. Check that it works, and if not, report any bugs you find. || [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| popcorndude || eng, spa, cym, heb
| {{sc|documentation}} || Installation instructions for missing GNU/Linux distributions or versions || Adapt installation instructions for a particular GNU/Linux or Unix-like distribution if the existing instructions in the Apertium wiki do not work or have bugs of some kind. Prepare it in your user space in the Apertium wiki. It may be uploaded to the main wiki when approved. || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|-
 
|-
  +
| sevilay || eng, ara, tur, kaz, aze, tat, gag, uig, uzb, crh, kum
| {{sc|documentation}} || Installing Apertium in lightweight GNU/Linux distributions || Give instructions on how to install Apertium in one of the small or lightweight GNU/Linux distributions such as [https://en.wikipedia.org/wiki/Damn_Small_Linux Damn Small Linux], so that may be used in older machines || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|-
 
|-
  +
| eirien || sah, rus, eng
| {{sc|documentation}} || -|| - || -
 
 
|-
 
|-
  +
| khannatanmai || eng, hin
| {{sc|documentation}} || What's difficult about this language pair? || For a language pair that is not in trunk or staging such that you know well the two languages involved, write a document describing the main problems that Apertium developers would encounter when developing that language pair (for that, you need to know very well how Apertium works). Note that there may be two such documents, one for A→B and the other for B→A Prepare it in your user space in the Apertium wiki.It may be uploaded to the main wiki when approved. || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|-
 
|-
  +
| flammie || fin, krl, olo, hun, nio, kpv, mdf, tlh, fra, swe, eng, est, ekk, vro
| {{sc|documentation}} || Video guide to installation || Prepare a screencast or video about installing Apertium; make sure it uses a format that may be viewed with Free software. When approved by your mentor, upload it to youtube, making sure that you use the HTML5 format which may be viewed by modern browsers without having to use proprietary plugins such as Adobe Flash. || [[User:Mlforcada] (alternative mentors welcome)
 
 
|-
 
|-
  +
| dolphingarlic || afr, deu, eng
| {{sc|documentation}} || Apertium in 5 slides || Write a 5-slide HTML presentation (only needing a modern browser to be viewed and ready to be effectively "karaoked" by some else in 5 minutes or less: you can prove this with a screencast) in the language in which you write more fluently, which describes Apertium, how it works, and what makes it different from other machine translation systems. || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|-
 
|-
  +
| wei2912 || eng, zho
| {{sc|documentation}} || Improved "Become a language-pair developer" document || Read the document [[Become_a_language_pair_developer_for_Apertium]] and think of ways to improve it (don't do this if you have not done any of the language pair tasks). Send comments to your mentor and/or repare it in your user space in the Apertium wiki. There will be a chance to change the document later in the Apertium Wiki. || [[User:Mlforcada]]
 
 
|-
 
|-
  +
| marcriera|| cat, spa, eng, ron
| {{sc|documentation}} || An entry test for Apertium || Write 20 multiple-choice questions about Apertium. Each question will give 3 options of which only one is true, so that we can build an "Apertium exam" for future GSoC/GCI/developers. Optionally, add an explanation for the correct answer. || [[User:Mlforcada]]
 
 
|-
 
|-
  +
| padth4i|| eng, mal, hin
| {{sc|research}} || Hand annotate 250 words of running text. || Use [[apertium annotatrix]] to hand-annotate 250 words of running text from Wikipedia for a language of your choice. || [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| Oguz|| eng, tur, uig, aze, crh
| {{sc|research}} || The most frequent Romance-to-Romance transfer rules || Study the .t1x transfer rule files of Romance language pairs and distill 5-10 common rules that are common to all of them, perhaps by rewriting them into some equivalent form || [[User:Mlforcada]]
 
 
|-
 
|-
  +
| mlforcada || eng, cat, eus, fra, por, glg, spa, gle, bre
| {{sc|research}} || Tag and align Macedonian--Bulgarian corpus || Take a Macedonian--Bulgarian corpus, for example SETimes, tag it using the [[apertium-mk-bg]] pair, and word-align it using GIZA++. || [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| ayushjain || eng, hin
| {{sc|code}} || Write a program to extract Bulgarian inflections || Write a program to extract Bulgarian inflection information for nouns from Wiktionary, see [https://en.wiktionary.org/wiki/Category:Bulgarian_nouns Category:Bulgarian nouns] || [[User:Francis Tyers]]
 
 
|-
 
|-
  +
| jjjppp || eng, lat
| {{sc|quality}} || -|| - || -
 
|-
+
|}
  +
| {{sc|quality}} || Improve the quality of a language pair by adding entries to it|| Improve the quality of a language pair by (a) running a large amount of representative text through it, (b) determining the 30 most frequent unknown words and (c) adding them to the dictionaries so that they are not unknown anymore || [[User:Mlforcada]]
 
  +
== Counts ==
  +
  +
Last updated by [[User:Firespeaker|Firespeaker]] ([[User talk:Firespeaker|talk]]) 07:30, 28 October 2019 (CET).
  +
  +
{| class="sortable wikitable"
 
|-
 
|-
  +
! scope="col" | Category
| {{sc|quality}} || Improve the quality of a language pair by allowing for alternative translations || Improve the quality of a language pair by (a) detecting 5 cases where the (only) translation provided by the bilingual dictionary is not adequate in a given context, (b) adding the lexical selection module to the language, and (c) writing effective lexical selection rules to exploit that context to select a better translation || [[User:Francis Tyers]] [[User:Mlforcada]]
 
  +
! scope="col" | Count
 
|-
 
|-
  +
|{{sc|code}}
| {{sc|interface}} || Abstract the formatting for the [[simple-html]] interface. || The simple-html interface should be easily customisable so that people can make it look how they want. The task is to abstract the formatting and make one or more new stylesheets to change the appearance. This is basically making a way of "skinning" the interface. || [[User:Francis Tyers]]
 
  +
|align="right"|16
 
|-
 
|-
  +
|{{sc|documentation}}
| {{sc|interface}} || Update the [[Apertium guide for Windows users]] with new language pairs || Make sure that the [[Apertium guide for Windows users]] and the Apertium Windows installer is up to date with all the new language pairs. || [[User:Francis Tyers]]
 
  +
|align="right"|4
 
|-
 
|-
  +
|{{sc|research}}
| {{sc|code}} || Write a program to extract Faroese inflections || Write a program to extract Faroese inflection information for nouns from Wiktionary, see [https://en.wiktionary.org/wiki/Category:Faroese_nouns Category:Faroese nouns] || [[User:Francis Tyers]]
 
  +
|align="right"|11
 
|-
 
|-
  +
|{{sc|quality}}
| {{sc|code}} || Light Apertium bootable ISO for small machines || Using [https://en.wikipedia.org/wiki/Damn_Small_Linux Damn Small Linux] or a similar lightweight GNU/Linux, produce the minimum-possible bootable live ISO or live USB image that contains the OS, minimum editing facilities, Apertium, and a language pair of your choice. Make sure no package that is not strictly necessary for Apertium to run is included.|| [[User:Mlforcada]] (alternative mentors welcome)
 
  +
|align="right"|8
|-
 
| {{sc|code}} || Translating PO files || Write a shell script and (if possible, using the filter definition files found in the documentation) a filter that populates a PO file with Apertium translation for a given language when it is not available and the source language is already there || [[User:Mlforcada]] (alternative mentors welcome)
 
|-
 
| {{sc|code}} || Apertium in XLIFF workflows || Write a shell script and (if possible, using the filter definition files found in the documentation) a filter that takes an [https://en.wikipedia.org/wiki/XLIFF XLIFF] file such as the ones representing a computer-aided translation job and populates with translations of all segments that are not translated, marking them clearly as machine-translated. || [[User:Mlforcada]] (alternative mentors welcome)
 
|-
 
| {{sc|testing}} || Examples of minimum files where an Apertium language pair messes up (X)HTML formatting || Sometimes, an Apertium language pair takes a valid HTML/XHTML source file but delivers an invalid HTML/XHTML target file, regardless of translation quality. This can usually be blamed on incorrect handling of superblanks in structural transfer rules. The task: (1) select a language pair
 
(2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works
 
(3) download a series of HTML/XHTML files for testing purposes. Make sure they are valid using an HTML/XHTML validator
 
(4) translate the valid files with the language pair
 
(5) check if the translated files are also valid HTML/XHTML files; select those that aren't
 
(6) find the first source of non-validity and study it, and strip the source file until you just have a small (valid!) source file with some text around the minimum possible example of problematic tags; save each such file and describe the error. || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|-
 
|-
  +
|{{sc|design}}
| {{sc|code}} || Make sure an an Apertium language pair messes up (X)HTML formatting || (Depends on someone having performed the task 'Examples of files where an Apertium language pair messes up (X)HTML formatting' above).
 
  +
|align="right"|2
(1) run the file through Apertium try to identify where the tags are broken or lost: this is most likely to happen in a structural transfer step; try to identify the rule where the label is broken or lost
 
  +
|- class="sortbottom"
(2) repair the rule: a conservative strategy is to make sure that all superblanks (<b pos="..."/>) are output and are in the same order as in the source file. This may involve introducing new simple blanks (<b/>) and advancing the output of the superblanks coming from the source.
 
  +
!Total
(3) test again
 
  +
|align="right"|33
(4) Submit a patch to your mentor (or commit it if you have already gained developer access) || [[User:Mlforcada]] (alternative mentors welcome)
 
 
|}
 
|}
   

Latest revision as of 06:23, 5 December 2019

This is the task ideas page for Google Code-in, here you can find ideas on interesting tasks that will improve your knowledge of Apertium and help you get into the world of open-source development.

The people column lists people who you should get in contact with to request further information. All tasks are 2 hours maximum estimated amount of time that would be spent on the task by an experienced developer, however:

  1. this is the time expected to take by an experienced developer, you may find that you spend more time on the task because of the learning curve.

Categories:

  • code: Tasks related to writing or refactoring code
  • documentation: Tasks related to creating/editing documents and helping others learn more
  • research: Tasks related to community management, outreach/marketting, or studying problems and recommending solutions
  • quality: Tasks related to testing and ensuring code is of high quality.
  • design: Tasks related to user experience research or user interface design and interaction

Clarification of "multiple task" types

  • multi = number of students who can do a given task (GCI's "max instances")
  • dup = number of times a student can do the same task

You can find descriptions of some of the mentors here.

Task ideas[edit]

The current task ideas here are for 2019. See Talk:Task ideas for Google Code-in for task ideas from previous years.

Mentors[edit]

These are languages that can be substituted for AAA and/or BBB for tasks each mentor is listed to mentor above.

If you do not see your language here, ask. We may be able to mentor or find you a mentor.

Mentor Languages
ftyers eng, spa, cat, fra, nor, rus, por, swe, tur, gag, aze
JNW eng, spa, fra, rus, tur, gag, aze, kaz, kir, kaa, tat, bak, kum, nog, kaa, uzb, uig, crh, khk, yid
anakuz grn, spa, por, rus
fotonzade eng, tur, aze, uig, tat, crh, kmr, ckb, fas
xavivars cat, spa, eng, fra
Unhammer nno, nob, swe, dan, fao, sme, ovd
shardulc eng, fra, mar, hin, urd, kan
m-alpha eng, fra, byv
popcorndude eng, spa, cym, heb
sevilay eng, ara, tur, kaz, aze, tat, gag, uig, uzb, crh, kum
eirien sah, rus, eng
khannatanmai eng, hin
flammie fin, krl, olo, hun, nio, kpv, mdf, tlh, fra, swe, eng, est, ekk, vro
dolphingarlic afr, deu, eng
wei2912 eng, zho
marcriera cat, spa, eng, ron
padth4i eng, mal, hin
Oguz eng, tur, uig, aze, crh
mlforcada eng, cat, eus, fra, por, glg, spa, gle, bre
ayushjain eng, hin
jjjppp eng, lat

Counts[edit]

Last updated by Firespeaker (talk) 07:30, 28 October 2019 (CET).

Category Count
code 16
documentation 4
research 11
quality 8
design 2
Total 33