|Version 30 (modified by dukeleto, 5 years ago)|
1. What is Google Code-in?
Following on from the success of the Google Summer of Code™ program, Google is holding a contest for pre-university students (e.g., high school and secondary school students 13-18) called Google Code-In with the aim of encouraging young people to participate in open source. We will work with open source organizations, each of whom will provide a list of tasks to be completed by student contestants. Tasks can be anything a project needs help with, from bug fixes to writing documentation to user experience research.
2. What are the goals of this contest?
Google Code-in (GCI) is intended to help students who may have wanted to get involved in open source but didn't know where to start. By working through the tasks suggested by organizations, contestants will be given the opportunity to engage with the open source community and get involved. The participating open source projects gain the benefit of additional contributions to their project, often in important areas that may get overlooked for whatever reason.
It is Google's not so secret hope that the student contestants of today will be long-term contributors to these and other open source projects in the future.
Tasks will typically fall into the following categories:
- Code: Tasks related to writing or refactoring code
- Documentation: Tasks related to creating/editing documents
- Outreach: Tasks related to community management and outreach/marketing
- Quality Assurance: Tasks related to testing and ensuring code is of high quality
- Research: Tasks related to studying a problem and recommending solutions
- Training: Tasks related to helping others learn more
- Translation: Tasks related to localization
- User Interface: Tasks related to user experience research or user interface design and interaction
How to Write a Task
Please order the tasks in increasing difficulty, from 'easy', to 'medium', to 'difficult'
- Give it a descriptive title.
- Explain any acronyms or slang that an outsider would not know.
- List potential mentors and give both a recommended and an optional background.
- Also give an estimate for roughly how long this task should take.
Title: Name of the app/area and a short description of what the task entails
Category: [see Task Categories above]
Difficulty: (easy, medium, difficult)
Estimated time: A "day" range of how long you think the task will take to complete.
Task description: Consists of:
- An initial sentence or two that describes what the task entails and why a student would want to spend their time on it (emphasize importance to project, transferable skills...).
- Several sentences/bullets that provide more detail into the task: What approach should students use? What level of detail are you looking for?
- A sentence about the expected deliverables.
Benefits: A short explanation of why this task is useful for the project. This should help motivate the students too.
Requirements: A small list of skill requirements. This helps the students know if they might be able to complete the task, for example e.g. Git, programming languages, etc.
Extra: (optional) A description of some extra action that the student can do if he's enjoying the task.
Links: A list of links that should help the student start on this task.
Primary contact: The person we should list as the "owner" of the task, who will monitor student submissions and give the final sign-off. This should be either you or someone who you've talked to about taking this on.
Task : Create Snazzy Logo for Parrot on RTEMS
Potential Mentors: kid51
Details: Parrot Virtual Machine and the RTEMS project, which is a real-time embedded operating system, have been teaming up, so that Parrot can run on satellites and all kinds of other awesome real-time hardware. We need a logo for this project. It should represent the excitement of being able to use dynamic languages on real-time hardware.
Task : Make parrot.org reflect current development and be more useful
Potential Mentors: ?
Background Required: Familiar with HTML, CSS, RSS
Details: The parrot.org main web site is currently not dynamic enough. It is hard to see what is going on in our community right now from our main entry page. This task will make usability improvements to our site such as: List the last few commits to our codebase, giving links to relevant mailing lists and irc channels (and logs), summarizing recent blog posts from Planet Parrot, etc. PLEASE ADD MORE DETAIL.
Task : Convert tests written in perl5 to pir - This would be multiple tasks
Potential Mentors: mikehh, ?
Background: Perl 5, readup on pir
Details: Some of our test files generate PIR (Parrot Intermediate Representation) files from within perl5 code. This also tends to generate a lot of files (that later have to be removed, when make clean/realclean is run). It would be better if these test files were written directly in PIR. Some progress has been made in this area but there is a lot left to be done.
This would give the student a reasonable introduction to parrot and be useful in getting a lot of tests converted.
A tutorial and examples would be provided.
A possible (ungraded at the moment) list of tests that could be converted each of which could be a task:
t/examples/dumper.t t/examples/streams.t t/examples/yaml_dumper.t t/op/basic.t t/op/calling.t t/op/exceptions.t t/op/exit.t t/op/interp.t t/op/lexivals.t t/op/say.t t/op/spawnw.t t/op/string_cclass.t t/op/string_cs.t t/op/stringu.t t/pmc/bignum.t t/pmc/config.t t/pmc/coroutine.t t/pmc/eval.t t/pmc/exporter.t t/pmc/filehandle.t t/pmc/globals.t t/pmc/io.t t/pmc/io_iterator.t t/pmc/io_status.t t/pmc/io_stdin.t t/pmc/iterator.t t/pmc/multidispatch.t t/pmc/nci.t t/pmc/object-meths.t t/pmc/object-mro.t t/pmc/orderedhash.t t/pmc/parrotio.t t/pmc/parrotobject.t t/pmc/pmc.t t/pmc/stringhandle.t t/pmc/sub.t t/pmc/sys.t t/pmc/task.t t/pmc/threads.t t/pmc/timer.t
Task : Increase test coverage of PMCs - This represents several tasks.
Potential Mentors: cotto, ?
Background: familiarity with PIR and C, Perl 5 in some cases.
Details: Many of our PMCs don't have complete test coverage. Although 100% coverage may not be possible in all cases, we can do better. We will provide a list of PMCs which need increased test coverage and notes about any PMCs which may provide difficulties in reaching 100%. A task will be complete when, at the mentor's discretion, a PMC's coverage is increased as much as is practical, ideally to 100%. This task requires the use of PIR, but increasing test coverage will usually require a small and easily-learned subset of PIR.
Task : Increase test coverage of Math::Primality
Potential Mentors: bubaflub
Background: Perl 5, Prime numbers, Devel::Cover
Details: Math::Primality is a Perl 5 CPAN module that has advanced prime-checking algorithms. It was a GSoC project in 2009. Currently some new algorithms were added, but they don't have proper test coverage. Having better test coverage is necessary because people will rely on the correctness of the algorithms in this module for cryptography and number theory applications. This task will involve the student learning how to build and test Math::Primality, as well as analyzing the test coverage with the Devel::Cover CPAN module. When parts of the code are identified that need more tests, the students will work with the mentor to write tests that verify those parts of the code work correctly.
Task : Increase Test Coverage for NumMatrix2D
Potential Mentors: Whiteknight
Background: Linear Algebra
Details: The Parrot-Linear-Algebra library adds linear algebra support to Parrot. The NumMatrix2D type needs additional tests for arithmetic operations (addition, multiplication). In addition to testing valid operations and the correct results, we need serious testing of error conditions. The user should probably write at least 10-20 tests to exercise things that existing tests do not cover.
Task : Increase Test Coverage for ComplexMatrix2D
Potential Mentors: Whiteknight
Background: Linear Algebra
Details: The Parrot-Linear-Algebra library adds linear algebra support to Parrot. The ComplexMatrix2D type needs additional tests for arithmetic operations (addition, multiplication). In addition to testing valid operations and the correct results, we need serious testing of error conditions. The user should probably write at least 15-25 tests to exercise things that existing tests do not cover.