# Google Code-In 2012 (GCI)
Code-In was running till January 14th. This page now contains the list of tasks which were actually done.
You can see the results (open tasks as well as closed ones) [on the Google Melange](http://www.google-melange.com/gci/org/google/gci2012/netbsd) page. There were 88 tasks done and 23 were left open.
We provided a [Virtualbox](https://www.virtualbox.org/) image for testing, such students didn't have to spend time on installing the system when they just wanted to complete a task where they needed NetBSD running.
Previous events by Google: [Code-In 2010](http://code.google.com/opensource/gci/2010-11/index.html), [Ghop 2007](http://code.google.com/opensource/ghop/2007-8/)
Previous organizations accepted for Code-In: [Code-In 2010](http://www.google-melange.com/gci/accepted_orgs/google/gci2010) [Code-In 2011](http://www.google-melange.com/gci/accepted_orgs/google/gci2011)
There is [information from Google](http://code.google.com/p/google-code-in/wiki/GCIMentorInformation2012) about what is suitable as a task for Code-In.
## Goals as stated by Google
1. **Code**: Tasks related to writing or refactoring code
1. **Documentation/Training**: Tasks related to creating/editing documents and helping others learn more
1. **Outreach/Research**: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
1. **Quality Assurance**: Tasks related to testing and ensuring code is of high quality
1. **User Interface**: Tasks related to user experience research or user interface design and interaction
## Lessons learned
The effort needed for Code-In struck us unexpected. There were several things to be learned about Code-In and about the kind of work that can be done in the scope of Code-In.
### Coding tasks are interesting
The students are mostly interested in coding tasks. They do *not* want to write documentation, and they don't want to research things.
With coding tasks, students would even spend more time on a task than they would do with something else, and maybe even stick to that task when GCi has finished.
### Add maintenance tasks
Another kind of task which was often claimed were the ones about maintenance jobs, in this case conversion of articles from XML to Markdown. They're easy to do, but require a lot of effort - suitable for GCi.
### Have a clear outline of the task
Tasks with an unclear description often led to results which were not as expected. Students of this age are more used to have a task which has a clear result, and not something open.
Though there were some good results, it's still difficult to understand the tasks and sometimes the tasks were only solved with the second or third approach.
### No creative tasks, but design tasks
Don't do creative tasks, i.e. creating images. On the other side, the design or layout tasks went very well - so if you want to know how a student would imagine the interface for a program or website or book format you need, then make that a task - but be clear about the results and *what* you expect.
You should have thought yourself about how you would do this in advance, such that you can explicitly state what requirements the task has. You'll get nice results with new ideas.
### Watch out for plagiarism
Especially in the research or documentation tasks, you have to be careful about plagiarism. Several students just copied texts from other sources and tried to submit them.
### Don't add extra requirements
When the student has to download or configure extra requirements first, the task gets much harder. You should not add tasks which rely on src, pkgsrc or pkgsrc-wip or whatever large or difficult extra things to do before being able to work on the task.
### Make tasks small projects
The coding parts are more appealing when they are small autonomous projects. The tasks involving creating your own binary had a larger acceptance than the once which were about fixing bugs of existing programs.
You can and should tasks for small programs even if you only want them for *research*, i.e. you want to look at the possibility of a larger project involving this. Even if the task is about another project, but which would or could add benefits for NetBSD, it is possible.
### Make stand-alone projects
This is not the same as *making small projects*. The described small projects should be in such a way that you can run them on any operating system and they don't require a speical setup to be written, i.e. many preinstalled packages.
The students are most likely not running NetBSD, and forcing them to install NetBSD, install some pkgsrc packages and spend time configuring the system discourages doing a task.
Even the Virtualbox images were no great help for some of these tasks.
### Combine tasks to a larger project
Maybe contrary to *making small projects*, tasks should have a connection. Students are more engaged if they did something, and when approving the work you already point them to other tasks which are similar to the one they just did, or work together with this one.
### Be clear about your expected formats
You should be very clear about the formats you expect for input! If there is an image, tell t hem to upload the "sources" (gimp xcf file or so); if there is a text, it should be plain-text; if it is a program, the final submission should be an archive with the code and not a link to github.
### Stay in touch with the students
The best way of communication with the students is via IRC. Everything else is too slow, and when a task is meant to be 48 hours, but half of the time is spent waiting for communication, the task is likely to fail or waste student's time.
### Look into the tasks yourself before submitting them
Though it might be charming - when you want students to fix a PR, you should look at the bug yourself and have a slight idea how to fix it before submitting it. There was a task which was not possible to fix (for the student) and was duplicate. And the students might have questions and then having to research things yourself before you can help is not good.
Even with all the other tasks, you should have an idea what you want, and what effort it requires. There were some tasks which resulted in much work though they seemed easy in the beginning, while other tasks stated as difficult could be performed within a few minutes.
### Don't underestimate the required effort!
You should *not* underestimate the effort needed by Code-In.
On the one hand, when you're young, you're not as patient as later. Waiting several hours to get a task confirmed is a lot of time in a student's mind.
On the other hand, there was a great run in the first week of Code-In. You have to read several tens of mails every hour, especially in the beginning.
When a student needs help, you have to care for him and help him with that, even with configuring the system.
### Be demanding
If you have an engaged student, you can be demanding. Don\'t hesitate to send back his work and be explicit about what you don\'t like. But be careful you don\'t frighten him. There were also students which just unclaimed a task because they didn\'t understand the review.
## Fulfilled tasks
The work done by GCi has not yet been integrated to NetBSD. Especially the documentation tasks have to be put into the wiki, but also need modifications in the NetBSD website infrastructure.
These are the tasks which were completed:
* [Howto: Running a webserver with Apache](http://www.google-melange.com/gci/task/view/google/gci2012/7946208)
* [Intro: Disk and partition management with NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7946209)
* [Convert articles from the website to wiki articles](http://www.google-melange.com/gci/task/view/google/gci2012/7947209)
* [Using the framebuffer in NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7947210)
* [Convert the encrypted iscsi article to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7947237)
* [Research POSIX compliance](http://www.google-melange.com/gci/task/view/google/gci2012/7948205)
* [Create NetBSD slide templates (OpenOffice)](http://www.google-melange.com/gci/task/view/google/gci2012/7949208)
* [Try out RFB/VNC software on NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7952236)
* [Fix bug bin/41049: usermod -g =uid testuser does not create group as indicated by man page](http://www.google-melange.com/gci/task/view/google/gci2012/7953208)
* [Survey documentation structure of other projects](http://www.google-melange.com/gci/task/view/google/gci2012/7953209)
* [Create NetBSD slide templates (Latex)](http://www.google-melange.com/gci/task/view/google/gci2012/7954213)
* [Describe the format of usermgmt.conf](http://www.google-melange.com/gci/task/view/google/gci2012/7958203)
* [Create a small markdown wiki CGI](http://www.google-melange.com/gci/task/view/google/gci2012/7959246)
* [Try out VoIP software](http://www.google-melange.com/gci/task/view/google/gci2012/7964205)
* [Rewrite system configuration in the guide](http://www.google-melange.com/gci/task/view/google/gci2012/7965203)
* [Create smaller NetBSD artworks](http://www.google-melange.com/gci/task/view/google/gci2012/7966207)
* [Howto: Using LVM to manage your disks](http://www.google-melange.com/gci/task/view/google/gci2012/7967207)
* [Create NetBSD wallpapers](http://www.google-melange.com/gci/task/view/google/gci2012/7969208)
* [Create a NetBSD poster](http://www.google-melange.com/gci/task/view/google/gci2012/7970216)
* [Convert the security processes to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7970245)
* [Write apropos branch to search through Markdown documentation](http://www.google-melange.com/gci/task/view/google/gci2012/7971209)
* [Convert the tracking current guide to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7971234)
* [Describe what a NetBSD installation does](http://www.google-melange.com/gci/task/view/google/gci2012/7973207)
* [Create lists of software needed for a desktop system](http://www.google-melange.com/gci/task/view/google/gci2012/7973211)
* [Create an icon set for NetBSD - research](http://www.google-melange.com/gci/task/view/google/gci2012/7974205)
* [Create a NetBSD poster](http://www.google-melange.com/gci/task/view/google/gci2012/7974206)
* [Describe how to run NetBSD headless](http://www.google-melange.com/gci/task/view/google/gci2012/7975213)
* [Create ATF tests](http://www.google-melange.com/gci/task/view/google/gci2012/7975214)
* [Research and write a Markdown style guide](http://www.google-melange.com/gci/task/view/google/gci2012/7975215)
* [Compare NetBSD with other operating systems of its kind](http://www.google-melange.com/gci/task/view/google/gci2012/7975217)
* [Setup single sign-on (SSO) service using LDAP](http://www.google-melange.com/gci/task/view/google/gci2012/7976225)
* [Create an overview of the NetBSD kernel source layout](http://www.google-melange.com/gci/task/view/google/gci2012/7978214)
* [Convert the PUFFS guide to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7979220)
* [Create an overview of the NetBSD src layout](http://www.google-melange.com/gci/task/view/google/gci2012/7980211)
* [Try out XMPP software](http://www.google-melange.com/gci/task/view/google/gci2012/7980212)
* [Write a Markdown - Latex converter](http://www.google-melange.com/gci/task/view/google/gci2012/7981207)
* [Research terminfo(5) keycodes](http://www.google-melange.com/gci/task/view/google/gci2012/7982213)
* [Create an overview of the NetBSD releases](http://www.google-melange.com/gci/task/view/google/gci2012/7983208)
* [Fix bug install/17792: Install process order - network verses disk](http://www.google-melange.com/gci/task/view/google/gci2012/7983210)
* [Investigate necessary documentation markup](http://www.google-melange.com/gci/task/view/google/gci2012/7983211)
* [Convert the Xen Howto to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7983229)
* [Write a mail wrapper](http://www.google-melange.com/gci/task/view/google/gci2012/7984212)
* [Version the documentation](http://www.google-melange.com/gci/task/view/google/gci2012/7984214)
* [Create an overview of NetBSD documentation](http://www.google-melange.com/gci/task/view/google/gci2012/7985209)
* [Research POSIX compliance](http://www.google-melange.com/gci/task/view/google/gci2012/7985210)
* [Howto: Getting in touch with NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7985211)
* [Make OpenDJ run on NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7985237)
* [Describe how to create a NetBSD live flash drive](http://www.google-melange.com/gci/task/view/google/gci2012/7986208)
* [Convert the NetBSD Guide from DocBook to Markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7986209)
* [Survey documentation structure of other projects](http://www.google-melange.com/gci/task/view/google/gci2012/7988204)
* [Howto: How to get a graphical environment on NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7992202)
* [Howto: Update the system from binaries](http://www.google-melange.com/gci/task/view/google/gci2012/7992203)
* [Try out VoIP software](http://www.google-melange.com/gci/task/view/google/gci2012/7992205)
* [Create NetBSD wallpapers](http://www.google-melange.com/gci/task/view/google/gci2012/7992224)
* [Create an overview of the NetBSD server layout](http://www.google-melange.com/gci/task/view/google/gci2012/7993202)
* ["Convert the CD-ROM creation guide to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7993220)
* [Howto: Dual-boot NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7994202)
* [Create smaller NetBSD artworks](http://www.google-melange.com/gci/task/view/google/gci2012/7994203)
* [Create NetBSD wallpapers](http://www.google-melange.com/gci/task/view/google/gci2012/7995203)
* [Document different time structures](http://www.google-melange.com/gci/task/view/google/gci2012/7995204)
* [Describe how to backup NetBSD](http://www.google-melange.com/gci/task/view/google/gci2012/7996202)
* [Convert installation notes to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/7997202)
* [Create a concept for a documentation browser](http://www.google-melange.com/gci/task/view/google/gci2012/7998202)
* [Create a NetBSD book layout](http://www.google-melange.com/gci/task/view/google/gci2012/8000202)
* [Fix bug bin/47065: /bin/sh returns success for Bad file descriptor](http://www.google-melange.com/gci/task/view/google/gci2012/8001202)
* [Create list of available VoIP client software](http://www.google-melange.com/gci/task/view/google/gci2012/8001222)
* [Repair vnconfig(8)'s return codes](http://www.google-melange.com/gci/task/view/google/gci2012/8002202)
* [Measure startup time](http://www.google-melange.com/gci/task/view/google/gci2012/8002203)
* [Fix bug bin/46579: ifconfig prints unnecessary message when deleting interface](http://www.google-melange.com/gci/task/view/google/gci2012/8003202)
* [Add an web interface to apropos](http://www.google-melange.com/gci/task/view/google/gci2012/8004202)
* [Make NetBSD a music or video player](http://www.google-melange.com/gci/task/view/google/gci2012/8004203)
* [Create ATF tests](http://www.google-melange.com/gci/task/view/google/gci2012/8005202)
* [Convert the Networking FAQ to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/8006218)
* [Multi-user graphical terminal server accessible by RFB/VNC](http://www.google-melange.com/gci/task/view/google/gci2012/8006231)
* [Compare init systems with each other](http://www.google-melange.com/gci/task/view/google/gci2012/8007202)
* [Write a markdown - curses converter](http://www.google-melange.com/gci/task/view/google/gci2012/8015211)
* [Create NetBSD wallpapers](http://www.google-melange.com/gci/task/view/google/gci2012/8019213)
* [Convert internals guide to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/8019214)
* [Convert the NetBSD X documentation to markdown](http://www.google-melange.com/gci/task/view/google/gci2012/8019221)
* [Create security/pam-pgsql package](http://www.google-melange.com/gci/task/view/google/gci2012/8036202)
* [Create ATF tests](http://www.google-melange.com/gci/task/view/google/gci2012/8048204)
* [Create databases/nss-pgsql package](http://www.google-melange.com/gci/task/view/google/gci2012/8067202)
* [Create and implement an ikiwiki design template](http://www.google-melange.com/gci/task/view/google/gci2012/8074208)
* [Create and implement a design and templates for a small wiki](http://www.google-melange.com/gci/task/view/google/gci2012/8081205)
* [Create and implement a design for a web application](http://www.google-melange.com/gci/task/view/google/gci2012/8123207)
* [Write a markdown - Docbook converter](http://www.google-melange.com/gci/task/view/google/gci2012/8149202)
* [Fix bug bin/47367: patch(1) mishandles Oops.rej](http://www.google-melange.com/gci/task/view/google/gci2012/8149210)
* [Survey documentation structure of other projects](http://www.google-melange.com/gci/task/view/google/gci2012/8202203)
* [Convert the CD-ROM creation guide to markdown, merge it with other articles](http://www.google-melange.com/gci/task/view/google/gci2012/7993220)
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb