FreeBSD Google Code-in Tasks

Contact channels

IRC

#freebsd-soc @ EFNET

Mailing list

freebsd-hackers@

You MUST put 'GCIN' as a first word of the 'Subject' line

You may find a sample template for the task proposal below.

What GCIN is for FreeBSD?? READ THIS : http://wiki.freebsd.org/action/edit/GoogleCodeIn

MENTORS MUST READ THIS: http://code.google.com/p/google-code-in/wiki/GCIAdminMentorInformation

You are not allowed to put unmentored tasks on this list!!!

Consider this page to be semi-moderated. Expect to be e-mailed, if something is missing from your proposal. <!-- we can filter these out later if required.

"Code" category is fine for small fixes. Participants can't own a copyright for the contributed stuff. In other words, due to being < 18 (21), participants can not submit stuff, which would require 'Copyright (c) ....' line.

-->

Table of contents

Contents

  1. FreeBSD Google Code-in Tasks
  2. Completed tasks
    1. Describe ZFS' reservation feature in the handbook chapter about ZFS
    2. Describe ZFS' quota feature in the handbook chapter about ZFS
    3. Add a small section about MythTV to the FreeBSD handbook's multimedia chapter
    4. Add a chapter about embedded systems and the flattened device tree to the FreeBSD developers handbook
    5. Create the FreeBSD cheat sheet
    6. Create a handbook section about how to use Wireless Mesh Networking
    7. Write a section on WINE in the freebsd virtualization handbook chapter
    8. Describe how to use Synaptics touchpad in the X11 configuration section of the FreeBSD handbook
    9. Update screenshots and version information of alpine in the mailers subsection of the electronic mail chapter of the FreeBSD handbook
    10. Update the developer tools section of the FreeBSD developers handbook with a list of tools on a wiki page
    11. Document how syscalls are added to the system based on instructions listed on a wiki page
    12. Add a section to the FreeBSD handbook on how to use the kismet software to debug WI-FI problems based on instructions from a wiki page
    13. Add an article on Asus Eee PC based on instructions from a wiki page
    14. Check the FreeBSD handbook's bibliography appendix B for broken links/references
    15. Check the FreeBSD commercial vendors webpage for broken links/references
    16. Add a description about the source TinderBox to the FreeBSD developers handbook based on content from a wiki page
    17. FreeBSD poster for Google 'Summer of Code' and 'Code In' events
    18. New www.FreeBSD.org front page graphics layout
    19. Merge notes on Linuxisms from a wiki page to the FreeBSD porters handbook
    20. Document the new ports license infrastructure in the FreeBSD porters handbook
    21. Mention and encourage the use of http://portscout.cc in the FreeBSD porters handbook
    22. Document missing ports meta variables in the FreeBSD porters handbook
    23. Document the MOVED file in the FreeBSD porters handbook
    24. Create a new section in the FreeBSD handbook's filesystem chapter about supported Linux filesystems
    25. Make FreeBSD 9 promotional video
    26. Add QEmu as a host option to the FreeBSD handbook chapter on virtualization based on content from a wiki page
    27. Update a section of the FreeBSD documentation on CVSup to match current reality
    28. Create some FreeBSD artwork
    29. Implement FreeBSD community portal (FCP1) - login
    30. Implement FreeBSD community portal (FCP2) - SQL tables for FCP1
    31. Implement FreeBSD community portal (FCP3) - displaying profile page
    32. Implement FreeBSD community portal (FCP4) - groups functionality
    33. Implement FreeBSD community portal (FCP5) - private message
    34. Implement FreeBSD community portal (FCP6) - file upload from WWW
    35. Implement FreeBSD community portal (FCP7) - file upload from the command line
    36. Create a chapter for the FreeBSD developers handbook based on the notes in the SubversionPrimer
    37. Write an article about FreeBSD on MacBooks based on a FreeBSD wiki page
    38. Update the FreeBSD handbook chapter about FreeBSD and VirtualBox based on information from a wiki page
    39. Write a section in the electronic mail chapter of the FreeBSD handbook on using sSMTP in a secure manner based on instructions given in a wiki page
    40. Update the FreeBSD handbook with information on DTrace based on content from a wiki page
    41. Update the FreeBSD on laptops article with information about tuning power consumption
    42. Convert the AppserverJailsHOWTO wiki page into a separate article (Tomcat)
    43. Write a GNATS to SQL converter script
    44. Write a section in the FreeBSD developers handbook about debugging the kernel with DCons
    45. Create a FreeBSD ports/packages cheat sheet
    46. Prepare screencast from new FreeBSD 9.0 installer for !YouTube portal
  3. Tasks not completed (copied to 2012 page)
    1. Document /dev
    2. Profile libc++
    3. Describe how to create a ZFS mirror pool in the FreeBSD handbook
    4. Describe the ZFS deduplication feature in the handbook chapter about ZFS
    5. Update the xorg configuration section of the FreeBSD handbook on how to configure X11 without HAL support in addition to the one that currently explains the use of HAL and move common setup items to the front
    6. Write an article about using FreeBSD with clang/llvm
    7. Update the IPsec section of the FreeBSD handbook which is still using gifconfig(4), which is based on FreeBSD 4.X only
    8. Describe ZFS compression in a separate subsection (remove it from the 21.2.2.2 ZFS RAID-Z subsection) and various compression algorithms (lzjb, gzip) in the handbook chapter about ZFS
    9. Describe how to use ZFS snapshots in a separate subsection (remove it from the 21.2.2.2 ZFS RAID-Z subsection) of the handbook's ZFS chapter
    10. Write a chapter about the new TTY layer for the FreeBSD developers handbook
    11. Describe the TMPFS filesystem for /tmp (pros and cons) in the FreeBSD handbook
    12. FreeBSD atheros 802.11n work - help with tools
    13. Create a chapter for the FreeBSD developers handbook showing how to use mercurial for FreeBSD development
    14. Create a chapter for the FreeBSD developers handbook showing how to use GIT for FreeBSD development
    15. Update the FreeBSD handbook's printer chapter by adding a description on the CUPS system to use network printers and USB printers
    16. Improve indexing of the FreeBSD handbook
    17. POSIX conformance of command line utilities
    18. POSIX conformance of header files and C functions
    19. Update the FreeBSD developers handbook on debugging modules with newer instructions from a wiki page
  4. Tasks that were not added
    1. Describe the Media Independent Interface (MIIBus) in the FreeBSD developers handbook based on content from a wiki page
    2. Update the FreeBSD FAQ with information about common USB problems and how to solve them based on instructions in a wiki page
    3. Demonstrate UFS Journaling recovery in a video
    4. Find FreeBSD man pages that do not have an EXAMPLES section
    5. Translate the "Why you should use a BSD style license for your Open Source Project" article into German
    6. Add some hints on benchmarking the system to the FreeBSD developers handbook
    7. TEMPLATE: Name of a task (task must be very small and very granular)

Completed tasks


Describe ZFS' reservation feature in the handbook chapter about ZFS

Category

Documentation

Difficulty

easy

Time limit

4-12

Mentor

pgj@freebsd.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains the reservation feature of ZFS and what the benefits are with an example (i.e. using programlisting tags). It has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system, which supports a feature called reservation. This technique allows the user to set a storage reservation which guarantees that the filesystems saves the set amount of disk space. For example, setting a 1 GB reservation on the /mypool/music zfs file system tells the system that no matter how little space is left, at least 1 GB is preserved to copy 1 GB of data to the music directory. This is helpful in planning future storage space use or for temporarily limiting the complete allocation of disk space. The basics of reservation need to be explained with some examples and the procedure of activating it must be described in the handbook for our user community.

Task requires:


Describe ZFS' quota feature in the handbook chapter about ZFS

Category

Documentation

Difficulty

easy

Time limit

4-12

Mentor

pgj@freebsd.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains the quota feature of ZFS and what the benefits are with an example (i.e. using programlisting tags). It has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system, which supports a feature called quota. Basically, quotas can be used to limit users from using up all the disk space when multiple users share the disk space. The basics of zfs quotas need to be explained with some examples and the procedure of activating it must be described in the handbook for our user community.

Task requires:


Add a small section about MythTV to the FreeBSD handbook's multimedia chapter

Category

Documentation

Difficulty

medium

Time limit

7-15

Mentor

decke@freebsd.org

Requirements

A subsection in the FreeBSD multimedia handbook chapter containing the information from the http://wiki.freebsd.org/MythTV wiki page with correct markup ready to be committed

Description of task

There is a howto in the FreeBSD wiki on how to use MythTV on FreeBSD:

We want to have this in our FreeBSD handbook chapter on multimedia to help our users run this software. If possible, the howto needs to be tested whether it still works as described with the current version of MythTV available in the FreeBSD Ports Collection.

Task requires:


Add a chapter about embedded systems and the flattened device tree to the FreeBSD developers handbook

Category

Documentation

Difficulty

medium

Time limit

14-25

Mentor

gavin@freebsd.org, jceel@freebsd.org

Requirements

The FreeBSD developers handbook has a new chapter explaining the things developers need to take care of when developing FreeBSD for embedded systems and how they can make use of the flattened device tree that many of these systems support nowadays.

Description of task

An important part when developing embedded FreeBSD systems is the knowledge on how to use the flattened device tree (FDT), which is different than the device tree on non-embedded systems. The following FreeBSD wiki page has information on the structure of the FDT and how developers can get device information from it: http://wiki.freebsd.org/FlattenedDeviceTree A new chapter in the FreeBSD developers handbook needs to be created to get this information in one place where developers are likely to look for it and where we can point people to when questions about the FDT are being asked. When adding these instructions to the developers handbook, the source code for the chapter needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Create the FreeBSD cheat sheet

Category

Outreach

Difficulty

medium

Time limit

<= 15

Mentor

wkoszek@freebsd.org eadler@freebsd.org

Requirements

2-page (A4) PDF with the most important files/examples/commands for FreeBSD setup and configuration

Description of a task

Participant will study other cheatsheets available for popular tools: the VIM editor, the Emacs editor, the GIMP graphics program and others.

Layout for the cheat sheet is up to the participant. The idea of the layout will me coordinated with the mentor.

Participant will install FreeBSD system in the VirtualBox virtual machine and will accomplish this from the command line. Next, FreeBSD will get configured to be able to communicate easily with the Internet. VM should have SSHD available, so that it's possible to get an access to the VM from the SSH client, from the main system (host).

The whole process will be convered in the cheatsheet. e.g.: if you modify /etc/ssh/sshd_config, sample configuration lines and its parameters must be documented in the cheatsheet.


Create a handbook section about how to use Wireless Mesh Networking

Category

Documentation

Difficulty

medium

Time limit

10-23

Mentor

adrian@freebsd.org

Requirements

A new, separate chapter containing the information from the WifiMesh wiki page with correct markup ready to be committed

Description of task

There is a howto in the FreeBSD wiki on how to create and use a wireless network with FreeBSD:

We want to have this in a separate article to instruct our users on how to create such a network. If possible, the howto needs to be checked whether it still works as described.

Task requires:


Write a section on WINE in the freebsd virtualization handbook chapter

Category

Documentation

Difficulty

medium

Time limit

12-20

Mentor

uqs@freebsd.org

Requirements

A new, separate subsection in the FreeBSD handbook containing the information from the http://wiki.freebsd.org/Wine wiki page with correct markup ready to be committed

Description of task

There is a howto in the FreeBSD wiki on how to use WINE to run certain software on FreeBSD that are not natively available:

We want to have this in a separate subsection in this FreeBSD handbook chapter: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/virtualization-host.html

Task requires:


Describe how to use Synaptics touchpad in the X11 configuration section of the FreeBSD handbook

Category

Documentation

Difficulty

medium

Time limit

10-20

Mentor

rea@freebsd.org eadler@freebsd.org

Requirements

a new subsection containing instructions on how the Synaptics touchpad is configured is added to the FreeBSD handbook chapter on configuring X11

Description of task

To use the Synaptics touchpad, users need to configure it. These steps are listed in a wiki page, but not yet in the FreeBSD handbook: http://wiki.freebsd.org/SynapticsTouchpad To make this part of the official FreeBSD documentation, it needs to be added to the FreeBSD handbook chapter on X11 and it's configuration: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-config.html The goal is to put the contents of the wiki into the handbook with some descriptive text and the neccessary steps/options the user has to set in order to use the touchpad. The content added to the handbook needs to conform to our official FreeBSD documentation markup and style.

Task requires:


Update screenshots and version information of alpine in the mailers subsection of the electronic mail chapter of the FreeBSD handbook

Category

Documentation

Difficulty

easy

Time limit

5-12

Mentor

pgj@freebsd.org

Requirements

Updated screenshots of the lastest alpine version appear in the chapter about electronic mail of the FreeBSD handbook

Description of task

The FreeBSD handbook chapter on electronic mail explains how to use the alpine mailer. However, the screenshots in http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mail-agents.html section need to be updated to show current version of alpine instead of pine 4.58. The security warning also needs to be revisited whether it is still relevant.

Task requires:


Update the developer tools section of the FreeBSD developers handbook with a list of tools on a wiki page

Category

Documentation

Difficulty

medium

Time limit

7-15

Mentor

gavin@freebsd.org

Requirements

The FreeBSD developers handbook is updated with the developer tools listed on the wiki page.

Description of task

The FreeBSD developers handbook has a chapter explaining various tools that come in handy when developing software for FreeBSD: http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/tools.html Another list of useful tools was created on the following wiki page: http://wiki.freebsd.org/DevTools We want to have the developers handbook updated with the tools listed on that wiki page so that developers find all the tools in one place (the handbook, not the wiki). When adding these tools to the developers handbook, the source code for the chapter needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Document how syscalls are added to the system based on instructions listed on a wiki page

Category

Documentation

Difficulty

medium

Time limit

10-15

Mentor

rea@freebsd.org

Requirements

The FreeBSD developers handbook has a new chapter/section explaining how syscalls are added to the system.

Description of task

An important part when developing software for the FreeBSD operating system is the knowledge on how to add syscalls. Developers, who do not know how to do this will require instructions in the developers handbook to help them get started with this. A page in the FreeBSD wiki shows how this can be done: http://wiki.freebsd.org/AddingSyscalls The goal is to use the information of said wiki page to create a new chapter/subsection in the developers handbook. When adding these instructions to the developers handbook, the source code for the chapter needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Add a section to the FreeBSD handbook on how to use the kismet software to debug WI-FI problems based on instructions from a wiki page

Category

Documentation

Difficulty

easy

Time limit

10-12

Mentor

jceel@freebsd.org

Requirements

The FreeBSD handbook chapter on networking contains the new information on how to use kismet to debug WI-FI connections from the wiki page.

Description of task

There are instructions in the FreeBSD wiki to help users debug WI-FI connections using the kismet software available in the ports collection: http://wiki.freebsd.org/Kismet This information would be useful to our userbase to troubleshoot problems they might encounter with different WI-FI adapters/drivers/connections. This information needs to be added to the FreeBSD handbook or an appropriate preexisting article on WI-FI. The information added in that way needs to conform to FreeBSD's documentation formatting and style guidelines described in the FreeBSD documentation primer: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

Task requires:


Add an article on Asus Eee PC based on instructions from a wiki page

Category

Documentation

Difficulty

easy

Time limit

12-18

Mentor

jceel@freebsd.org

Requirements

The FreeBSD documentation set has a new article describing how to properly run FreeBSD on Asus Eee PCs.

Description of task

There are instructions in the FreeBSD wiki to help users of various Asus Eee PC platforms run FreeBSD: http://wiki.freebsd.org/AsusEee The information in there would make a good article for users that want to use FreeBSD as an operating system in these systems. The article added needs to conform to FreeBSD's documentation formatting and style guidelines described in the FreeBSD documentation primer: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

Task requires:


Check the FreeBSD handbook's bibliography appendix B for broken links/references

Category

Research, Documentation

Difficulty

easy

Time limit

4-6

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD handbook's bibliography appendix B has no broken links in it.

Description of task

The FreeBSD handbook's bibliography appendix B contains many links to external sites: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/bibliography.html Some of these sites might not be available anymore, have moved or may contain new information not related to FreeBSD. In order to keep that section up to date, the objective of this task is to go through the whole appendix B and check whether the links are still correct and point to the source mentioned in the text. Broken links should be reported to your mentor. If you find other (updated) links that contain the information, update the broken links accordingly. If the information the link pointed to does not exist anymore, discuss with your mentor whether just the link or the whole information should be removed.

Task requires:


Check the FreeBSD commercial vendors webpage for broken links/references

Category

Research, Documentation

Difficulty

easy

Time limit

6-12

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD commercial vendors web page does not contain any broken links.

Description of task

The FreeBSD project maintains a link on its webpage to external sites where commercial vendors offer services around FreeBSD: http://www.freebsd.org/commercial/commercial.html Some of these sites might not be available anymore, have moved or may contain new information not related to FreeBSD anymore. In order to keep that web page up to date, the objective of this task is to go through all the links and check whether the vendors still exist and still offer the services they advertise as described. Broken links should be reported to your mentor. If you find that their homepage has moved to a new location, update the broken links accordingly. If the information the link pointed to does not exist anymore (i.e. vendor is out of business) or has been replaced by a new site (like a page for linkfarming), discuss with your mentor whether just the link or the whole vendor information should be removed.

Task requires:


Add a description about the source TinderBox to the FreeBSD developers handbook based on content from a wiki page

Category

Documentation

Difficulty

medium

Time limit

14-22

Mentor

gjb@FreeBSD.org, des@freebsd.org

Requirements

The FreeBSD developers handbook will have a new chapter about the source tinderbox, describing its functionality and how to use it.

Description of task

The source tinderbox is a set of scripts that automates the checkout of the latest sources from the FreeBSD repository, the compilation of the sources, creating build logs and monitoring individual tinderbox instances. In order to expose more developers to tinderbox' functionality, it needs to be documented in the FreeBSD developers handbook. A wiki page has details on tinderbox and is available here: http://wiki.freebsd.org/Tinderbox

To complete the task, the information from that wiki page need to be put into the developers handbook along with examples and/or descriptive text that shows what tinderbox is capable of. The new content needs to conform to our documentation code style guidelines as outlined in the Documentation Project Primer for New Committers (see below).

Task requires:


FreeBSD poster for Google 'Summer of Code' and 'Code In' events

Category

Outreach

Difficulty

medium, hard

Time limit

> 15 hours

Mentor

wkoszek@freebsd.org, jceel@freebsd.org

Requirements

Participant will deliver a GIMP template of a poster for The FreeBSD Project advertising Google GSoC/GCIN programmes

Description of a task

The purpose of this task is to advertise Google Open Source programs among young people and college students.

Participant will create a template of a poster for advertising FreeBSD in the context of Google Code-In and Google Summer of Code programmes. The poster must be ready to be sticked to the university's front door. It must be something very easy to read and simple (simple as in 'Artistic minimalism' not as 'Do this task as quickly as possible').

The poster must be something you would like to see on your own school's wall with advertisements.

Technical proposal
You must create a layout (preferably white, since it always plays nicely with other colors) which will be able to accomodate two logos: GCIN/GSoC logo and FreeBSD logo.

Sample logos

Logo must be easily replacable. Think of your template to be used over next 5 years. We must be able to take the template, be able to copy & paste new logos for 2014 and render it nicely. In other words: your template to be valuable must be reusable.

Mentor of this project is not a judge. Use your own imagination. The poster layout must be practical. Look at previous GCIN/GSoC logos. Take a look at their sizes (they vary). Take a look at colors (they vary too). Come up with something attractive.

Participant must be fluent in GIMP or any other FREE graphics program. She/he must be technically skilled and artistically talented.


New www.FreeBSD.org front page graphics layout

Category

Outreach

Difficulty

medium

Time limit

> 15 hours

Mentor

wkoszek@freebsd.org, gjb@freebsd.org

Requirements

Graphical template for new FreeBSD web page

Description of a task

Current page of The FreeBSD Project doesn't meet our expectations. We think new page layout must be created. New page must meet all new design goals and usability metrics. New page must be beautiful.

Page should conform all Web 2.0 style standards. It must be minimalistic, yet very practical. It must contain one drop-down menu with most popular options. Additionally, it must contain columns of the most crucial information for users (like the current one, but better).

Screen space consumption must be exploited. In the perfect case page would take 100% width of the available space or be created with 12-column 960px template.

For inspiration, take a look at:

Our page COULD look similar.

Ideal candidate would study Jacob Nielsen web page on web usability:

You must read all articles in bold font.


Merge notes on Linuxisms from a wiki page to the FreeBSD porters handbook

Category

Documentation

Difficulty

easy

Time limit

10-14

Mentor

rea@freebsd.org

Requirements

The FreeBSD porters handbook will have a new section explaining what people that are working on ports from Linux need to be aware of when adding them to the FreeBSD ports collection.

Description of task

The FreeBSD ports collection consists of a variety of ported software that oftentimes was not originally written for FreeBSD. As such, porters who want to make this software available for FreeBSD users, need to make special arrangements in order to run the software from other Unix-like operating systems such as GNU/Linux. Instructions and helpful advice on how to do that is available on the following wiki page: http://wiki.freebsd.org/AvoidingLinuxisms

The contents of said wiki page needs to be converted into a separate section of the FreeBSD porters handbook so that porters can find this information easily. When adding these instructions (and possibly examples) to the porters handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Document the new ports license infrastructure in the FreeBSD porters handbook

Category

Documentation

Difficulty

easy

Time limit

12-18

Mentor

gjb@FreeBSD.org

Requirements

The FreeBSD porters handbook will have a new section explaining the new license infrastructure and how to use it in new ports that are added to the ports collection.

Description of task

The FreeBSD ports collection consists of a variety of ported software which come with very different licenses. People/companies who are using the ports collection may sometimes opt to not accept/use ports that has a certain license clause in them that they do not find acceptable. The new license infrastructure allows people set explicitly set which licenses they want to accept and which one to deny, which results in the port not being installed. This license infrastructure is fairly new and has not been documented in the porters handbook yet. The following wiki page has more information on this license infrastructure: http://wiki.freebsd.org/PortsLicenseInfrastructure

The task is to convert the relevant parts of that wiki page into a new section of the porters handbook explaining what porters have to do in order to make new ports use this new license infrastructure. When adding these instructions (and possibly examples) to the porters handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Mention and encourage the use of http://portscout.cc in the FreeBSD porters handbook

Category

Documentation

Difficulty

easy

Time limit

6-10

Mentor

gjb@FreeBSD.org

Requirements

The FreeBSD porters handbook will have a new section showing the benefits of portscout.

Description of task

The FreeBSD porters handbook need to have a link to http://portscout.cc so that more people make use of it. A short explanation on portscout in general should be added as well. When adding these instructions to the porters handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Document missing ports meta variables in the FreeBSD porters handbook

Category

Documentation

Difficulty

easy

Time limit

6-10

Mentor

rea@freebsd.org

Requirements

The FreeBSD porters handbook will have all the missing meta variables along with a short description of its options.

Description of task

The FreeBSD porters handbook has a short list of variables that exist in the ports infrastructure in order to encapsulate common dependencies that many ports have. This list is incomplete and can be found here: http://www.freebsd.org/doc/en/books/porters-handbook/makefile-depend.html#USE-VARS

A list of USE_variables (i.e. USE_MYSQL, USE_PGSQL, USE_SQLITE) can be found in the files located in the /usr/ports/Mk directory of a FreeBSD system. These have to be added to the porters handbook along with a description to help people creating ports make use of these variables. When adding these instructions to the porters handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Document the MOVED file in the FreeBSD porters handbook

Category

Documentation

Difficulty

easy

Time limit

6-10

Mentor

gjb@FreeBSD.org

Requirements

The FreeBSD porters handbook will have a description of the MOVED file, explaining it's purpose.

Description of task

The FreeBSD ports collection contains a file called MOVED, which has "a list of (recently) moved or removed ports". This file is not documented in the FreeBSD porters handbook at the moment, but is nevertheless useful when i.e. ports get renamed. A section in the porters handbook should explain the structure and purpose of this file and when to use it. When adding these instructions to the porters handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Create a new section in the FreeBSD handbook's filesystem chapter about supported Linux filesystems

Category

Documentation, Research

Difficulty

medium

Time limit

20-24

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD handbook contains a new chapter on Linux filesystems describing how they can be used in FreeBSD.

Description of task

FreeBSD supports a number of filesystems that are used on Linux, but these are currently not documented in the FreeBSD handbook's filesystem chapter. A new subchapter "Linux filesystems" or similar is to be created and the following supported filesystems should be put there in separate subsections:

The sections on each of these filesystems don't neccessarily have to be big, but should describe at least:

These sections can then be extended by the FreeBSD community once this task is complete (that's why the initial sections don't have to be big). You can find the most information you'll need when describing these filesystems in the man pages linked above. Wikipedia and a search on the web can also provide information, but keep it focused on FreeBSD.

Task requires:


Make FreeBSD 9 promotional video

Category

Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org eadler@FreeBSD.org

Requirements

Participant will create 1 minute video and upload it to YouTube

Description of a task

Participant will make an attractive promotional video for the FreeBSD 9 system. The video may take any form. There's only one requirement: it must be the best OS promotional video out there.


Add QEmu as a host option to the FreeBSD handbook chapter on virtualization based on content from a wiki page

Category

Documentation

Difficulty

easy

Time limit

14-22

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD handbook will have a new section describing the use of QEmu to virtualize other systems on FreeBSD.

http://wiki.freebsd.org/qemu

Description of task

QEmu is a popular CPU emulator that is available in the FreeBSD ports collection under emulators/qemu. It can be used as a virtualization platform to emulate other processors/systems running on FreeBSD as a host. The FreeBSD handbook already has a chapter on virtualization, however, QEmu is not covered there yet. The purpose of this task is to create a section within this chapter describing QEmu and how it can be set up as a host on FreeBSD. The following wiki page can be used as a source of information: http://wiki.freebsd.org/qemu Although care must be taken as some information is likely outdated and needs to be tested on recent versions of FreeBSD. The added information in the handbook page needs to conform to FreeBSD's documentation formatting and style guidelines described in the FreeBSD documentation primer: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

Task requires:


Update a section of the FreeBSD documentation on CVSup to match current reality

Category

Documentation

Difficulty

medium

Time limit

5 days

Mentor

gavin@FreeBSD.org

Requirements

Updates to a page

Description of Task

A page of the FreeBSD documentation, http://www.freebsd.org/doc/handbook/cvsup.html , was written several years ago and hasn't really been updated since. Whilst most of the details are still technically correct, one major change is that the "csup" application only mentioned in passing is now available in all supported versions of FreeBSD, and is now the recommended way of obtaining the source code. This page needs reworking so that "csup" is the preferred application to use throughout, with mention of CVSup moved to a "note" section, rather than the other way around.

The page will also benefit from being read over by somebody less familiar with the subject area, and any parts which are unclear should be reworked or reworded in order to make the page easier for first-time readers to use.

Task Requirements

Students are encouraged to use a FreeBSD system like our VirtualBox image to test the procedure, but can also use the information available online.

Please read http://wiki.FreeBSD.org/GoogleCodeIn/GettingStarted before accepting this task, as it contains further details on what this task consists of, as well as providing useful information on how to obtain the page source and how to proceed with the task.


Create some FreeBSD artwork

Category

Outreach

Difficulty

easy

Time limit

5

Mentor

eadler@freebsd.org gjb@freebsd.org

Requirements

Participant will create some FreeBSD wallpapers or other decorative art

Description of a task

This is a task for the creative person. We would like some nice wallpapers, logos, screen savers, or anything else aesthetically pleasing to feature on the FreeBSD website. Please see http://www.freebsd.org/logo.html for existing FreeBSD graphics and logos.

Task Requirements

This task may be completed using whatever tools you are comfortable with. Resulting work can be submitted in the format most suitable for the task selected.

This is a task for the creative person. We would like some nice wallpapers, logos, screen savers, or anything else aesthetically pleasing to feature on the FreeBSD website.


Implement FreeBSD community portal (FCP1) - login

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

Minimal login form with PHP sources and a screencast showing how it works

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

Your task is to implement the very basic FreeBSD community portal as a WWW site. The WWW portal will present simple Username/Password login form to the user, and will support logging in from: Facebook, LinkedIn, Yahoo, Google, MSN.

After logging in, site will present basic user's information fetched from FB/Y!/Google/MSN (Facebook and LinkedIn is required, the rest is optional).

User must create sample Facebook application, so that the functionality is indeed tested in practice. Picking non-FreeBSD app name is adviced. Good Work-In-Progress app name is: "freebsd_gcin".

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules. In other words: make it as minimalistic and simple as possible.


Implement FreeBSD community portal (FCP2) - SQL tables for FCP1

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

.sh script which will create SQL tables for profile's data

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

The WWW portal will fetch the basic user information from other social/community sites (explained in FCP1 tasks) and will have to store them in SQL database.

Your task is to design SQL tables so that storing basic user information is possible on the portal's side. In other words: we'd like to be able to use create user's profile with name/surname fetched from LinkedIn. By basic user information we understand whatever user information is exported from Facebook/!LinkedIn, for example. You must check by yourself (or by coordinating it with FCP1 participant) which information is that. Example of basic user information include: name, surname, age, country of residence, interests etc..

We require as little confidential data as possible. It is more likely to get users accept potential 'freebsd_gcin' app if they require only basic credentials.

After fetching the information, we perform INSERTions to the SQL database.

1 database and 1 table created in it are fine.

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Implement FreeBSD community portal (FCP3) - displaying profile page

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

PHP form being able to handle UTF-8 formated text and insert it into SQL row database

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

The WWW form will fetch UTF-8 formated data from the HTML form and insert it to the simpliest possible SQL database. Data user could be asked for include: interests, "About me", "Free time", "Hobby", tags (aka tags in blogs, Wikis etc..).

The database's table format doesn't have to be 'final'. The goal of this task is to show, that WWW form can handle e.g.: Polish diacritic characters or Russian Cyrillic alphabet and store it in the database. Onca again: SQL table can be trivial. It can be as simple as 4 fields being able to handle text data.

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules when designing the WWW form. In other words: make it as minimalistic and simple as possible.

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Implement FreeBSD community portal (FCP4) - groups functionality

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

.sh script which will create SQL table for user groups, PHP script for assigning to the group

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

For this task you assume users are collected in simple: ID, NAME, SURNAME SQL table. Your task is to implement 'groups' SQL table, where users can get grouped.

Next, you must write simple PHP script which assumes, that variable $user_id holds user ID. For now make it static and equal to 123:

Script must show available groups in three rows: 'Group name', 'Subscribe', 'Unsubscribe'. Group name is always displayed. 'Subscribe' column has buttons with 'Subscribe' label only when user can subscribe. 'Unsubscribe' columnt has buttons with 'Unsubscribe' label only when user can unsubscribe. If the user isn't yet in a group, he can subscribe. User can unsubscribe only when he's already in that group. We keep such a layout for usability reasons. Example:

Group name

System administrators

Subscribe

Web development

Subscribe

Programming

Unsubscribe

(user already is in that group)

Kernel bugs

Unsubscribe

(same here)

Bug reports

Subscribe

He isn't here yet

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules when designing the WWW form. In other words: make it as minimalistic and simple as possible.

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Implement FreeBSD community portal (FCP5) - private message

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

PHP script with a Private Message form

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

For this task you assume users are collected in a simple: ID, NAME, MSG_ID, MESSAGE_TEXT SQL table. Your task is to implement 'Private message' functionality -- ability for user X to send a private message to user Y.

For simplicity, you can assume user X is a source user and his ID is 123 and is present in variable $user_src_id:

For simplicity, you can assume user Y is a destination user and his ID is 999 and is present in variable $user_dest_id:

Alternatively, you can make destination ID be fetched from the WWW form (this is harder, but preferred). No validation for IDs must be done for simplicity.

Script must be able to (1) present HTML form with message title, text and 'Send' button (2) accept UTF-8 formatted input (3) submit it to the destination user's table.

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules when designing the WWW form. In other words: make it as minimalistic and simple as possible.

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Implement FreeBSD community portal (FCP6) - file upload from WWW

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

PHP script with a file upload functionality

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

In order to accomplish this task you must implement a PHP script with a form asking a user for a file to upload. Once the user clicks 'Upload', file is send to the server and (1) filename of the file is stored in the SQL database (2) SHA1 checksum of the contents of the file is calculated (3) the file is stored to the file name which is equal to the SHA1 value. SQL table can be very simple - FILE_ID, FILENAME, SHA1_CHECKSUM

Example:

You have 'freebsd.txt' text file which has 'FreeBSD' in it. Once the user uploads the 'freebsd.txt' file, SHA1 is calculated and the result is '5ca5c2e9f3fd4fae8db2f481cc2ae65c649c4365'; file is saved to '5ca5c2e9f3fd4fae8db2f481cc2ae65c649c4365.db' file, and values(1, 'freebsd.txt', 5ca5c2e9f3fd4fae8db2f481cc2ae65c649c4365.db) land in the SQL table.

Uploaded files should be kept in 'db' directory. So the full path to the file saved should be 'db/5ca5c2e9f3fd4fae8db2f481cc2ae65c649c4365.db'.

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules when designing the WWW form. In other words: make it as minimalistic and simple as possible.

Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Implement FreeBSD community portal (FCP7) - file upload from the command line

Category

Code, Research, Outreach

Difficulty

hard

Time limit

5 days

Mentor

wkoszek@freebsd.org 2NDMENTORNEEDED

Requirements

.sh or C/.php script which can upload file from a local disk to the WWW page

Description of a task

This is a research task. It may or may not be deployed in production systems. No effort has been made to coordinate this task with the FreeBSD Core Team.

In order to accomplish this task you must implement a .sh/ANSI C and .php programs/scripts which work together.

This is VERY important functionality. Think of sending bug reports and kernel panic messages on a system failure. Users could make their rc.conf fit their 'FreeBSD community portal' settings and make bug reports be sent automatically or semi-automatically, after administrator's confirmation.

Client: The client side must be able to work as a part of the FreeBSD base system. In other words - it is your task to find a way to take whatever we have already in the base system and make it send a file via HTTP. Base system means 'minimal system with no additional applications installed'. Examples of possible solutions: you analyze how fetch(1) program is written and you try to use its routines/libraries to implement file upload functionality.

Server:

The PHP side of things should be smart enough to receive a request for the file upload. Details on how to handle uploading and saving are explained in detail FCP6 task (SHA1-based naming scheme). Please follow the rules explained there.

Please follow Steve's Krug "Don't make me think" principles as well as Jacob Nielsen's useability rules when designing the WWW form. In other words: make it as minimalistic and simple as possible.

It is important to understand that client must work from the bare system installation. Technology choice is up to you, but PHP is preferred (Facebook API is in PHP at least). No framework is required to accomplish the task; however, frameworks aren't prohibited. In case of not using any framework, please follow the MVC design principles.


Create a chapter for the FreeBSD developers handbook based on the notes in the SubversionPrimer

Category

Documentation

Difficulty

medium

Time limit

15-25

Mentor

rea@freebsd.org, des@freebsd.org

Requirements

The FreeBSD developers handbook will have a new chapter giving information on the use of Subversion and FreeBSD specifics like the repository layout and daily work.

Description of task

The FreeBSD project is using the Subversion (SVN) source code management system to store and retrieve all sources for the system. To help developers work with SVN and the FreeBSD repository, a wiki page was created called the Subversion Primer: http://wiki.freebsd.org/SubversionPrimer

This Primer needs to be moved into the developers handbook as a separate chapter (divided into subchapters as neccessary) so that all information for developers is available in one place. When adding these instructions and examples to the developers handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Write an article about FreeBSD on MacBooks based on a FreeBSD wiki page

Category

Documentation

Difficulty

easy

Time limit

6-12

Mentor

crees@freebsd.org, jceel@freebsd.org, gjb@FreeBSD.org

Requirements

A separate article is created which explains the steps needed to run FreeBSD on Apple MacBooks

Description of task

The FreeBSD operating system can be run on Apple MacBooks. There are some special things that are required when doing so, which are described in the following FreeBSD wiki page: http://wiki.freebsd.org/AppleMacbook

The contents of that wiki page must be described in an article for our user community.

Task requires:


Update the FreeBSD handbook chapter about FreeBSD and VirtualBox based on information from a wiki page

Category

Documentation

Difficulty

easy

Time limit

4-10

Mentor

beat@freebsd.org, decke@freebsd.org

Requirements

the contents of the wiki page are available in the FreeBSD handbook chapter about VirtualBox

Description of task

The FreeBSD operating system supports the VirtualBox software to run other operating systems. A wiki page describes the latest steps and things that need to be taken care of when doing so http://wiki.freebsd.org/VirtualBox

This information needs to be put into the handbook subsection about VirtualBox: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/virtualization-host.html

Task requires:


Write a section in the electronic mail chapter of the FreeBSD handbook on using sSMTP in a secure manner based on instructions given in a wiki page

Category

Documentation

Difficulty

medium

Time limit

10-20

Mentor

rea@freebsd.org

Requirements

The FreeBSD handbook will have a new subsection on using sSMTP in a secure manner in the electronic mail chapter.

Description of task

The sSMTP is a send-only mail server that is used widely on systems to send status mail to administrators without running a full mail server. To set up such a system in a secure manner, some configuration has to be made. These steps are detailed in the following wiki page: http://wiki.freebsd.org/SecureSSMTP

In order to expose this to more of our users, we need to have this in our FreeBSD handbook in the electronic mail chapter. The task is to test whether the instructions given are still valid and if they are, to document them in the FreeBSD handbook with the proper style that fits the rest of the handbook. When adding these instructions and examples to the handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Update the FreeBSD handbook with information on DTrace based on content from a wiki page

Category

Research, Documentation, Code

Difficulty

medium

Time limit

12-20

Mentor

pgj@freebsd.org

Requirements

The FreeBSD handbook will have an updated chapter on DTrace with the latest information about DTrace in FreeBSD and how to use it (with examples).

Description of task

The FreeBSD handbook has a chapter on DTrace, which was ported to FreeBSD: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/dtrace.html

However, it does not contain the latest information on DTrace for current releases of FreeBSD. The following wiki pages have detailed information on how to use DTrace:

Your task is to take the information from the wiki page and put the relevant parts (examples, scripts, etc.) into the handbook chapter on DTrace so that more users make use of DTrace's capabilities. The new content of that chapter needs to conform to our documentation code style guidelines as outlined in the Documentation Project Primer for New Committers (see below).

Task requires:


Update the FreeBSD on laptops article with information about tuning power consumption

Category

Documentation

Difficulty

medium

Time limit

5-15

Mentor

bcr@freebsd.org

Requirements

the FreeBSD on laptops article contains the new information from the wiki page on TuningPowerConsumption

Description of task

There is an article about how to use FreeBSD on laptops. It does not have a section on how to tune power consumption to get more battery live when running it on battery power only. There is a wiki page with some steps that describe what one can do to achieve this: http://wiki.freebsd.org/TuningPowerConsumption The goal is to update the article with the information presented in the wiki page so that the a separate chapter describes the steps on what you can do to preserve power.

Task requires:


Convert the AppserverJailsHOWTO wiki page into a separate article (Tomcat)

Category

Documentation

Difficulty

medium

Time limit

7-20

Mentor

gjb@FreeBSD.org

Requirements

A new, separate article containing the information from the AppserverJailsHOWTO wiki page with correct markup ready to be committed for our users

Description of task

There is a howto in the FreeBSD wiki on creating a tomcat server with a focus on security:

We want to have this in a separate article to instruct our users on how to create such a system. The version information of the software might be outdated, so the howto needs to be checked whether it still works as described.

Task requires:


Write a GNATS to SQL converter script

Category

Code, Research

Difficulty

medium, hard

Time limit

5

Mentor

eadler@freebsd.org

Requirements

Participant will upload GNATS-to-SQL converter

Description of a task

The target of this task is to research, whether conversion from GNATS to SQL database is possible.

Participant must mirror at least 2000 tasks from the GNATS database, create SQL tables based on the GNATS database bug format, and write a script, which will bring bug reports from ASCII to SQL database.

No specific technology is required for this task. Script can be written in any modern programming language. Perl is well known to be the best for text processing, but using Perl for this task isn't a requirement.


Write a section in the FreeBSD developers handbook about debugging the kernel with DCons

Category

Documentation

Difficulty

easy

Time limit

10-30

Mentor

gavin@freebsd.org

Requirements

The FreeBSD developers handbook has a new subsection in the debugging chapter about using Dcons to debug the system.

Description of task

The FreeBSD developers handbook outlines multiple ways to debug the system's kernel to find bugs and errors. What's missing is debugging the system using DCons. The steps to do so have been outlined in the following FreeBSD wiki page: http://wiki.freebsd.org/DebugWithDcons This needs to be written as a subsection in the debugging chapter: http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug.html so that developers can find enough information to use DCons for that purpose. The subsection needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Create a FreeBSD ports/packages cheat sheet

Category

Outreach, Research

Difficulty

medium

Time limit

<= 15

Mentor

bcr@freebsd.org eadler@freebsd.org

Requirements

max. 2-page (A4) PDF with the most important descriptions/examples/commands for using the FreeBSD ports collection from a user point of view

Description of a task

The FreeBSD ports collection provides an easy way for installing, configuring and updating third party software like text editors, browsers, multimedia applications, servers, etc. on the FreeBSD operating system. The objective of this task is to create a cheat sheet for our users that contains all the neccessary information to use the ports collection for daily tasks. This cheat sheet is intended to be handed out at FreeBSD booths or to be printed at home. As such, the sheet not only needs to have listings of the required commands the user has to enter, but also a short description (as short as possible) to understand what the command does. The layout for the cheat sheet is up to the participant and can be coordinated with the task mentors. The sheet should cover the following areas (preferably in that order):

- Short description what ports/packages are
- Installing and updating the ports collection (using portsnap)
- Finding ports using (make search ...)
- Installing a port/package
- Configuring a port using make config
- Running security checks on installed ports
- Updating installed ports (using portmaster and portupgrade)
- Reporting ports problems
- Links for further information like freshports.org, the ports PR database, etc.

The following page in the FreeBSD handbook contains most of the required information: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html

Students are encouraged to use a FreeBSD system like our VirtualBox image to test the procedure, but can also use the information available online.


Prepare screencast from new FreeBSD 9.0 installer for !YouTube portal

Category

Outreach

Difficulty

easy

Time limit

8-20

Mentor

wkoszek@freebsd.org, jceel@freebsd.org

Requirements

Screencast from the basic FreeBSD 9.0 installation published on YouTube. If the participant decided not to include audio documentary, he's expected to use YouTube 'balloons' (tooltips) to comment the video. This textual form must be done in English.

Description of a task

FreeBSD 9.0 gained new installer called bsdinstaller. New users aren't familiar with its functionality. The goal of this task is to document FreeBSD 9.0 installer in an easily accessible way: screencast. Screencast will show new users, from the first person perspective, what you click and what you type to have FreeBSD installed. Video will get published on YouTube.

Task requires:

Once Virtual Machine is created, participant will record a sessions of successful installations of the FreeBSD - one for i386 (old computers) and one for amd64 (new computers).

Once finished, participant will compare two installations and make notes on what's common and what's different between amd64 and i386. Participant will verify with the mentor whether the installation was indeed correct and whether other screencast sessions are worth recording for more coverage (e.g.: we may want to show sample configurations).

Final step will be to upload screencast(s) to the YouTube.com portal.

In case of differences between i386 and amd64, more than one videos are permitted. If i386 and amd64 happen to be installed in the same way (100% key presses necessary to get FreeBSD installed match), one uploaded video is expected.

Word to participant:
You must comment the video throught YouTube 'ballons' (tool-tips). Comments must be done in English. You're encouraged to provide step-by-step audio documentary too. (It is less work, and lets other people get more insight into what you do. Simply speaking: it's faster to provide better audio description than a written description.) Audio commentary may be done in your native language. If you don't include audio commentary, you don't loose point and you won't be graded lower. In other words: you must always provide English textual description with an eventual audio presentation of what you do.


Tasks not completed (copied to 2012 page)


Document /dev

Category

Code / Documentation

Difficulty

medium

Time limit

20

Mentor

theraven@freebsd.org

Requirements

Documentation for ptmx device node.

Description of a task

Look at the source of ptmx to find what it does and add a man page documenting it.


Profile libc++

Category

Quality Assurance

Difficulty

hard

Time limit

40

Mentor

theraven@freebsd.org rdivacky@FreeBSD.org

Requirements

Benchmarks comparing libc++ to libstdc++ and a list of performance troublespots for libc++

Description of a task

Compile some existing C++ code using both libc++ and libstdc++ and compare performance. Produce a set of benchmarks showing how the two compare. Identify parts of libc++ and that are slower than their libstdc++ equivalents (fixing them is optional) so that they can be addressed before FreeBSD moves to using libc++ by default.


Describe how to create a ZFS mirror pool in the FreeBSD handbook

Category

Documentation

Difficulty

medium

Time limit

4-16

Mentor

bcr@FreeBSD.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains how to set up a zfs mirror in textual form with some examples (i.e. using programlisting tags). It has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system to create mirrors (RAID-1) of at least two storage media (i.e. disks). This procedure needs to be explained in the handbook for our user community.

Task requires:

Create a subsection within the ZFS chapter describing the steps to create a ZFS mirror pool Send your changes to your mentor for review.


Describe the ZFS deduplication feature in the handbook chapter about ZFS

Category

Documentation

Difficulty

medium

Time limit

6-20

Mentor

bcr@FreeBSD.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains what deduplication is and what the benefits are with some examples (i.e. using programlisting tags). It has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system version 28, which supports a feature called deduplication. This technique allows the reduction of disk space by counting and linking the copies of a file/block on disk. For example, you are saving an email attachment of 1 MB in seven different directories on a ZFS filesystem that has deduplication activated on the underlying pool. That only takes up the 1 MB for the initial file, each further copy is just a link to the original file. In this case, it would only require 1 MB of disk space for this file, while on non-dedup filesystems, it would take up 7 MB (7 * 1 MB) storage space. These basics need to be explained and the procedure of activating deduplication shown in the handbook for our user community.

Task requires:

Update the xorg configuration section of the FreeBSD handbook on how to configure X11 without HAL support in addition to the one that currently explains the use of HAL and move common setup items to the front

Category

Documentation

Difficulty

medium

Time limit

7-14

Mentor

bcr@freebsd.org eadler@freebsd.org

Requirements

The X11 configuration section contains a subsection on how to configure X11 without HAL (with common items to both in a subsection before them)

Description of task

The FreeBSD handbook page about configuring X11 (http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-config.html) describes how to configure the system to use the HAL system. This system is deprecated, but still in use. We want to describe to our users both ways of X.org configuration: with and without HAL. Currently, we only describe the use of HAL, not what needs to be done in order to configure X11 without it. Setup items that are common to both should be extracted and moved to a section before them to avoid redundant textual descriptions. The contents of X11 configuration subsection should look like this then:
6.4.2 Configuring X11
6.4.2.1 Common config items
6.4.2.2 Configuration without HAL
6.4.2.3 Configuration with HAL

Task requires:


Write an article about using FreeBSD with clang/llvm

Category

Documentation

Difficulty

medium

Time limit

10-20

Mentor

rea@freebsd.org

Requirements

a new article containing instructions what clang/llvm is and how to use it in FreeBSD

Description of task

The FreeBSD system is moving to replace the GCC (GNU Compiler Collection) with clang/llvm (C language for the low level virtual machine). The following wiki page has an initial writeup of the subject with some instructions on how to use it to compile the FreeBSD base system: http://wiki.freebsd.org/BuildingFreeBSDWithClang The goal is to create an article which has more detailed instructions based on this wiki page with our official FreeBSD documentation markup and style applied.

Task requires:


Update the IPsec section of the FreeBSD handbook which is still using gifconfig(4), which is based on FreeBSD 4.X only

Category

Documentation, Research

Difficulty

easy

Time limit

10-25

|| Mentor || remko@frecontain a line like this: .Sh EXAMPLES

The objective of this task is to create a list of man pages that do not contain this string. The best way to do this is to create a script that can automatically search for that string in a set of files (man pages in this case) passed to it. Your mentor can help you with commands or advice on which programming language to use. But if you don't want to code, you can also do this task manually (or semi-manually), but this will take more time than writing and running a script to produce the list.

Task requires:


Describe ZFS compression in a separate subsection (remove it from the 21.2.2.2 ZFS RAID-Z subsection) and various compression algorithms (lzjb, gzip) in the handbook chapter about ZFS

Category

Documentation

Difficulty

medium

Time limit

8-22

Mentor

bcr@FreeBSD.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains what zfs compression is and what the benefits are with some examples (i.e. using programlisting tags). The subsection 21.2.2.2 ZFS RAID-Z does not contain anything about compression after this. The section has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system version 28, which supports a feature called compression. This technique allows the reduction of disk space by compressing files that are being copied on such a file system and decompresses them when being used/read linking the copies of a file/block on disk. Depending on the compression algorithm used and the type of file (text file, binary file, etc.), this can yield saving disk space in some cases. Parts of it are already described in subsection 21.2.2.2 ZFS RAID-Z, which need to be removed to distinguish compression and RAID-Z features. The basics of zfs compression need to be explained, the algorithms for specific file types described and the procedure of activating and using compression shown in the handbook for our user community.

Task requires:


Describe how to use ZFS snapshots in a separate subsection (remove it from the 21.2.2.2 ZFS RAID-Z subsection) of the handbook's ZFS chapter

Category

Documentation

Difficulty

easy

Time limit

4-12

Mentor

rea@freebsd.org

Requirements

A new subsection in the ZFS chapter of the FreeBSD handbook explains what zfs snapshots are and what their benefits are with some examples (i.e. using programlisting tags). The subsection 21.2.2.2 ZFS RAID-Z does not contain anything about snapshots after this. The section has to have correctly formatted SGML according to our Documentation Primer.

Description of task

The FreeBSD operating system supports the ZFS file system, which has a feature called snapshot. By snapshotting a filesystem, you create an exact read-only copy right at the time the snapshot is taken. This can be used as a backup mechanism as well as when using the zfs send feature to transfer parts of the filesystem over the network to another zfs filesystem using these snapshots. The basics of zfs snapshots need to be explained with some examples and the procedure of activating/using it must be described in the handbook for our user community.

Task requires:


Write a chapter about the new TTY layer for the FreeBSD developers handbook

Category

Documentation

Difficulty

medium

Time limit

15-25

Mentor

ed@freebsd.org

Requirements

The FreeBSD developers handbook has a new chapter about the details of the new TTY layer, as well as man pages for category 9.

Description of task

The FreeBSD developers handbook currently has no information about FreeBSD's new TTY layer. However, this has been documented in the FreeBSD wiki on the following page: http://wiki.freebsd.org/TTYRedesign The task is to take the relevant information from that wiki page and create a chapter in the developers handbook to describe the new TTY layer. The chapter needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Describe the TMPFS filesystem for /tmp (pros and cons) in the FreeBSD handbook

Category

Documentation

Difficulty

easy, medium, hard

Time limit

4-8

Mentor

pgj@freebsd.org

Requirements

A new section in the filesystems chapter explains the TMPFS filesystem with an example

Description of task

The FreeBSD operating system supports the TMPFS filesystem, which is described on the following FreeBSD wiki page, but not in the FreeBSD handbook: http://wiki.freebsd.org/TMPFS The basics of TMPFS, it's pros and cons must to be explained with an example for /tmp and the procedure of activating/using it must be described in the handbook for our user community.

Task requires:


FreeBSD atheros 802.11n work - help with tools

Difficulty

medium

Time limit

8-20

Mentor

adrian@freebsd.org, freebsd-wireless@freebsd.org

Requirements

Basic knowledge of C; An ath(4) 802.11n NIC (non-USB); I can likely help you acquire one.

Description

The athstats and wlanstats tools provide some debugging and diagnostic functionality. It would be nice to tidy these up, write up some manual pages where required, help debug some issues with the tools and eventually include them as part of the base system.

This requires some basic knowledge of C and a willingness to learn quickly. I can help you acquire a PCI/PCIe atheros NIC but you'll need to have a wireless access point (which everyone does these days, right?) Bonus points if you have an 802.11n access point.


Create a chapter for the FreeBSD developers handbook showing how to use mercurial for FreeBSD development

Category

Documentation

Difficulty

medium

Time limit

12-23

Mentor

uqs@freebsd.org

Requirements

The FreeBSD developers handbook will have a new chapter giving information on the use of Mercurial for FreeBSD daily work as a developer.

Description of task

The Mercurial source code management system can be used to send and retrieve the FreeBSD project's source code to/from the main repository. To help developers work with Mercurial and the FreeBSD repository, the following wiki page was created: http://wiki.freebsd.org/LocalMercurial

The contents of this wiki page needs to be converted into the developers handbook as a separate chapter so that all information for developers who want to use Mercurial is present in one place to find. When adding these instructions and examples to the developers handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Create a chapter for the FreeBSD developers handbook showing how to use GIT for FreeBSD development

Category

Documentation

Difficulty

medium

Time limit

12-23

Mentor

uqs@freebsd.org

Requirements

The FreeBSD developers handbook will have a new chapter giving information on the use of GIT for FreeBSD daily work as a developer.

Description of task

The GIT source code management system has become popular among software developers over the years. It is possible to use it to to send and retrieve the FreeBSD project's source code to/from the main repository. To help developers work with GIT and the FreeBSD repository, the following wiki page was created that details the basic workflow: http://wiki.freebsd.org/GitWorkflow

The contents of this wiki page needs to be converted into the developers handbook as a separate chapter so that all information for developers who want to use GIT is present in one place to find. When adding these instructions and examples to the developers handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Update the FreeBSD handbook's printer chapter by adding a description on the CUPS system to use network printers and USB printers

Category

Documentation, Research

Difficulty

hard

Time limit

10-25

Mentor

rea@freebsd.org

Requirements

The FreeBSD handbook will have an updated chapter on using CUPS to manage printers connected via USB or the network to a FreeBSD system.

Description of task

The CUPS (Common Unix Printing System) is widely used to manage printers connected via the network to a FreeBSD system. In addition to that, USB printers are also popular devices these days and can also be connected to a FreeBSD system. The FreeBSD handbook's chapter on printing does not have any information on CUPS to manage network or USB printers. To help our users set up and run CUPS, networked or USB printers on FreeBSD, research must be done in order to know what are the neccessary steps to achieve this on a FreeBSD system. Then, the results need to be documented in the FreeBSD handbook chapter on printing. When adding these instructions (and possibly examples) to the handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


Improve indexing of the FreeBSD handbook

Category

Research, Documentation, Code

Difficulty

hard

Time limit

15-25

Mentor

rea@freebsd.org

Requirements

The FreeBSD handbook will have each chapter in it's index when rendered to Postscript/PDF output.

Description of task

The FreeBSD handbook can be rendered into Postscript/PDF output. Each chapter should have an index produced from indexterms at the beginning of each chapter definition in the SGML output. Unfortunately, not all of them do and as a result, a ??? is added instead to the index of the Postscript/PDF output. With a proper index, readers are able to locate a specific chapter easier by loooking at the indexterms in the appendix or simply by using the table of contents.

The objective of this task is to improve the indexing using the Postscript/PDF output of the current handbook to find sections/chapters that do not have primary/secondary indexterms causing ??? to be printed instead. A script located at doc/share/misc/indexreport.pl in the checkout from the doc repository can help find them. When there is a chapter/section found that has no indexterms, sensible ones need to be defined and added based on the content of the chapter.

Task requires:


POSIX conformance of command line utilities

Category

Documentation / Quality Assurance

Difficulty

medium

Time limit

10-15

Mentor

ed@freebsd.org

Requirements

A page similar to Jens Schweikhardt's from 2001

Description of a task

POSIX is the standard that describes how UNIX-like operating systems like Linux, *BSD, Solaris and Mac OS X should behave. The POSIX specification is divided in several chapters, namely how certain APIs have to be implemented (header files, functions, etc) and how base system utilities should work (command line switches, etc).

Somewhere between 2001 and 2006 Jens Schweikhardt made this page, that gives a nice overview of which command line switches are implemented by our versions of the utilities:

This page was based on the 2001 revision of POSIX, while there have been two new revisions in the mean time, namely Issue 6 (2004) and Issue 7 (2008). Also, various tools have been implemented in the mean time, meaning this page is now out of date. It would be nice if we had an up-to-date version, preferably even comparing multiple version of FreeBSD (8.x, 9.x, HEAD).

POSIX Issue 7 can be read online here:


POSIX conformance of header files and C functions

Category

Documentation / Quality Assurance

Difficulty

medium

Time limit

20-30

Mentor

ed@freebsd.org

Requirements

A page similar to Jens Schweikhardt's from 2001

Description of a task

POSIX is the standard that describes how UNIX-like operating systems like Linux, *BSD, Solaris and Mac OS X should behave. The POSIX specification is divided in several chapters, namely how certain APIs have to be implemented (header files, functions, etc) and how base system utilities should work (command line switches, etc).

Somewhere between 2001 and 2006 Jens Schweikhardt made this page, that gives a nice overview of which command line switches are implemented by our versions of the utilities:

It would be awesome if we had a page similar to this, but then grouping all functions for each header file, stating whether:

For this assignment, it's sufficient to look at FreeBSD HEAD. The latest version of the POSIX specification is Issue 7, from 2008. POSIX Issue 7 can be read online here:


Update the FreeBSD developers handbook on debugging modules with newer instructions from a wiki page

Category

Documentation

Difficulty

easy

Time limit

10-12

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD developers handbook chapter on debugging modules contains the new information from the wiki page.

Description of task

FreeBSD's developers handbook has a section describing the steps needed to debug kernel modules: http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug-kld.html However, the information contained in that section are somewhat outdated. Newer instructions are available in the following wiki page: http://wiki.freebsd.org/DebuggingModules The purpose of this task is to take the information from the wiki page and update the developers handbook chapter accordingly. The final page needs to conform to FreeBSD's documentation formatting and style guidelines described in the FreeBSD documentation primer: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

Task requirements

Students are encouraged to use a FreeBSD system like our VirtualBox image to test the procedure, but can also use the information available online.

Please read http://wiki.FreeBSD.org/GoogleCodeIn/GettingStarted before accepting this task, as it contains further details on what this task consists of, as well as providing useful information on how to obtain the page source and how to proceed with the task.


Tasks that were not added

These tasks were not added to Melange. Some do not have mentors assigned to them.


Describe the Media Independent Interface (MIIBus) in the FreeBSD developers handbook based on content from a wiki page

Category

Documentation

Difficulty

easy

Time limit

12-17

Mentor

gavin@FreeBSD.org

Requirements

The FreeBSD developers handbook will have a new section describing the use of MIIBus for devices attached to the network.

Description of task

FreeBSD implements IEEE 802.3 Media Independent Interface or MIIBus for its underlying networking capabilities. FreeBSD Developers who want to know more about this interface currently find no information about it in the FreeBSD developers handbook. The purpose of this task is to remedy this by using the following wiki page as a source of information: http://wiki.freebsd.org/MIIBUS Other links to more information about MIIBus are also available at the bottom of this wiki page. The information should be used to create a new section/chapter describing the use of MIIBus and it's implementation in FreeBSD. The added information needs to conform to FreeBSD's documentation formatting and style guidelines described in the FreeBSD documentation primer: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

Task requirements

Students are encouraged to use a FreeBSD system like our VirtualBox image to test the procedure, but can also use the information available online.

Please read http://wiki.FreeBSD.org/GoogleCodeIn/GettingStarted before accepting this task, as it contains further details on what this task consists of, as well as providing useful information on how to obtain the page source and how to proceed with the task.


Update the FreeBSD FAQ with information about common USB problems and how to solve them based on instructions in a wiki page

Category

Documentation

Difficulty

easy

Time limit

5-12

Mentor

rea@freebsd.org

Requirements

The FAQ contains a new entry on how to solve common USB problems like when mass storage devices are not detected. The entry needs to be formatted correctly according to our FreeBSD style and doc source code standards.

Description of task

The FreeBSD operating system has support for many devices connected via the Universal Serial Bus (USB). However, given the vast amount of devices, there are some problems that occur frequently for which there are already solutions available on the following wiki page: http://wiki.freebsd.org/USB . The FreeBSD FAQ is the right place for this, so the mini FAQ on the wiki page needs to be transformed into a FreeBSD FAQ entry. With this, we can point users directly to the FAQ when these kinds of questions come up in the mailing lists.

Task requires:


Demonstrate UFS Journaling recovery in a video

Category

Outreach

Difficulty

easy

Time limit

10-12

Mentor

Requirements

A video was created showing how UFS recovers after a crash.

Description of task

FreeBSD's UFS filesystem was extended to use a Journal for faster recovery after a system crash. For example, if the filesystem was shut down uncleanly due to a power failure, the system will boot up, will find the missing file system entries in the journal and recover the missing pieces and start up normally without running manual checks. The purpose of this task is to demonstrate this behavior of the system in a video.

To do this, install FreeBSD in a VirtualBox (or use the provided images) and make sure UFS+J is used on any filesystem. Then, simulate a power failure by killing the VirtualBox task while the FreeBSD VM is running. Then restart the FreeBSD VM and show how the system is recovering from the crash.

Task requires:


Find FreeBSD man pages that do not have an EXAMPLES section

Category

Documentation, Research, Code

Difficulty

easy

Time limit

10-15

Mentor

Requirements

A list or script is created that shows all man pages that do not have an EXAMPLES section.

Description of task

FreeBSD's man pages are known to have an EXAMPLES section which gives advice on how to use the functionality that the man page describes. However, as new man pages get added, some of them might not have such a section (or some man pages don't actually require one). We need to find these EXAMPLE-less man pages and add EXAMPLES sections if appropriate (this last part is NOT part of this task, you only need to find them). FreeBSD's man pages can be found (in compressed form usually) in the system under /usr/share/man (having a checked out source tree helps). The directories man1 - man9 contain the FreeBSD man pages. The files in there can be opened in an editor. For example, the mouse(4) man page can be found under /usr/share/man/man4/mouse.4 (this one does not have an EXAMPLES section). A man page that already has a man page should contain a line like this: .Sh EXAMPLES

The objective of this task is to create a list of man pages that do not contain this string. The best way to do this is to create a script that can automatically search for that string in a set of files (man pages in this case) passed to it. Your mentor can help you with commands or advice on which programming language to use. But if you don't want to code, you can also do this task manually (or semi-manually), but this will take more time than writing and running a script to produce the list.

Task requires:


Translate the "Why you should use a BSD style license for your Open Source Project" article into German

Category

Translation

Difficulty

easy

Time limit

20-27

Mentor

bcr@FreeBSD.org

Requirements

A translated article is available in sgml source to be committed to the FreeBSD german documentation project.

Description of task

The FreeBSD German documentation project is translating the FreeBSD documentation (books, articles, etc., not man pages) into german in order to make it easier for german speaking people to understand the system. There are some articles that have not been translated yet. The objective of this task is to translate the following article into german: http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/index.html

To do this, you need to make a copy of the article.sgml file containing the english text and translate that copy. Be careful to keep the formatting and indentation of the article. However, this can be done later on, the translation is the primary focus of this task. The following web page of the german documentation project gives some helpful instructions on how to start or how to translate certain words: https://doc.bsdgroup.de

Task requires:


Add some hints on benchmarking the system to the FreeBSD developers handbook

Category

Documentation

Difficulty

medium

Time limit

12-20

Mentor

gavin@freebsd.org

Requirements

The FreeBSD developers handbook has a new chapter giving some hints on what is important when benchmarking the system and how to do it properly.

Description of task

An important part when enhancing the FreeBSD operating systems is to know whether or not the added functionality makes the system perform faster than before. In order to do that, benchmarks are being used to collect useful information to make educated comparisons. However, when done wrong, these benchmarks will either not make any sense, provide the wrong data or results in false conclusions drawn by the developer doing the benchmark. To avoid that, a wiki page listing some of the pitfalls when benchmarking is available here: http://wiki.freebsd.org/BenchmarkAdvice The advice given there needs to be added to the FreeBSD developers handbook so that people doing benchmarks can be pointed there for doing correct benchmarks. When adding these hints to the developers handbook, the source code for the chapter needs to be correctly formatted and must conform to our documentation source code style guidelines.

Task requires:


TEMPLATE: Name of a task (task must be very small and very granular)

Category

Code / Documentation / Outreach / Quality Assurance / Research / Training / Translation / UI

Difficulty

easy, medium, hard

Time limit

number of participant's hours/days for this task

Mentor

email@freebsd.org

Requirements

What do we expect to be there to grade this task as 'completed'

Description of a task

Description of a task goes here. No cryptic acronyms, preferably no FreeBSD slang. Be as detailed as possible. Be as descriptive as possible. Propose how to engage in the task, how to start, what tools to use. Do not expect participants to use FreeBSD as daily OS (encourage them to do that, of course!), thus remember that VirtualBox/VMWare are perfectly valid FreeBSD environments.

Tasks must be small. Participants in the 13-17 age range can apply for 1 task at a time, but can do it up to 15 times i.e.: 15 tasks can be completed by the 13-17 year old teenager over the duration of the Google Code-In. This should give you a feeling of what kind of tasks we must have here.

GoogleCodeIn/2011Tasks (last edited 2012-10-16 15:38:08 by EitanAdler)