FreeBSD Google Code-in 2012 Tasks

Don't put unmentored tasks here

Coding tasks are *very* important - we need lots of them

Introduction

Contact channels:

Stuff from 2011:

Stuff to read:

TODO:

Brainstorm section

Put whatever you think we could benefit from youngest contributors. We can talk over ideas and throw away stuff which doesn't make sense.

Sample ideas

For the software tasks, my suggestion would be to try to fit somehow in the following categories:

- Web / productivity stuff we could benefit from

- Regression tests for FreeBSD API

For other stuff, I'd say we're more than welcome to bring stuff which will motivate people (something that will hit the tree), or something that can make them score points, but can still be useful for us (e.g.: research ideas, which are unlikely to get commited right away):

- Bug chasing / bug reporting

- Documentation

Task list

Table of contents

Contents

  1. FreeBSD Google Code-in 2012 Tasks
    1. Introduction
    2. Brainstorm section
    3. Sample ideas
  2. Task list
    1. Static Analysis for Kernel Locking
    2. Static Analysis of Kernel Conventions
    3. Profile libc++
    4. Describe how to create a ZFS mirror pool in the FreeBSD handbook
    5. Describe the ZFS deduplication feature in the handbook chapter about ZFS
    6. 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
    7. Write an article about using FreeBSD with clang/llvm
    8. Update the IPsec section of the FreeBSD handbook which is still using gifconfig(4), which is based on FreeBSD 4.X only
    9. 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
    10. 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
    11. Write a chapter about the new TTY layer for the FreeBSD developers handbook
    12. Describe the TMPFS filesystem for /tmp (pros and cons) in the FreeBSD handbook
    13. FreeBSD atheros 802.11n work - help with tools
    14. Create a chapter for the FreeBSD developers handbook showing how to use mercurial for FreeBSD development
    15. Create a chapter for the FreeBSD developers handbook showing how to use GIT for FreeBSD development
    16. Update the FreeBSD handbook's printer chapter by adding a description on the CUPS system to use network printers and USB printers
    17. Improve indexing of the FreeBSD handbook
    18. POSIX conformance of command line utilities
    19. POSIX conformance of header files and C functions
    20. Update the FreeBSD developers handbook on debugging modules with newer instructions from a wiki page
    21. Describe the Media Independent Interface (MIIBus) in the FreeBSD developers handbook based on content from a wiki page
    22. Update the FreeBSD FAQ with information about common USB problems and how to solve them based on instructions in a wiki page
    23. Demonstrate UFS Journaling recovery in a video
    24. Add some hints on benchmarking the system to the FreeBSD developers handbook
    25. Cleanup Descriptions of Ports/Packages
    26. Improve the DTrace chapter in FreeBSD developers handbook
    27. Merge Ports Subversion Primer to the existing Subversion Primer in the FreeBSD developers handbook
  3. FreeBSD Community tasks (NEED REVIEW, NEED FreeBSD mentors!!!)
    1. no Wiki formatting yet, putting as I get them over e-mail
    2. Title: Remote upgrade procedures manpage or section in handbook (based on Ralf Engelschall's examples)
    3. Title: Better document the obscure options listed in the kernel LINT config file
    4. Title: Create FreeBSD advocacy materials/portal
    5. Title: New ASCII art for bootloader
    6. Title Proofread and edit FreeBSD website
    7. Title: Document the use of FreeBSD as a Windows Domain Controller
    8. Title: Document how to setup a FreeBSD system/network using cryptographic logon
    9. Title: BSD licensed LDAP/PAM module login_ldap/ypldapd (GSOC Candidate)
    10. Title: UFS Extended (GSOC candidate)
    11. Title: Document how to install FreeBSD in Qemu (x86)
    12. Patch style checker
    13. PDF creation for more docs and handbook
    14. Standalone/selfcontained PBI/megapkg for desktop
    15. Convert /etc/rc.d/ to fsc based service management
    16. Using pkgNG scripts and repos for deployment/management
    17. Document 24 empty sysctls
    18. remove traces of readline from BASE build
    19. pkg_tools to pkgNG cheat sheet
    20. FreeBSD hardware database
    21. Populate popularize content of FreeBSD Hardware databases
    22. nodejs for web based
    23. nodejs for web based admin e.g. node-control
    24. Title: IPv6 ISP Emulator
    25. Title: CVS File Checker
    26. FreeBSD-ize zfs/zpool manual pages
    27. Add AAM/APM support to camcontrol
    28. Update/Import new IPFilter
    29. Title: IP based remote rescue image "Better Rescue"
    30. Title: WebUI for pkg (pkgNG) system
    31. Title: Make golang a first class citizen on FreeBSD
    32. Title: Make portalfs MPSAFE
    33. Title: FreeBSD on raspberry pi hardware
    34. Title: TET Integration
    35. Title: Plan and begin development of Thunderbolt connector support
    36. Title: Close one dozen kernel PRs
    37. Title: Add a description to the handbook on how to import/export a ZFS pool
    38. Title: Fix/patch FreeBSD shm issues in Chrome
    39. Title: Add recursive mode to BSD ctags
    40. Title: Make Androoid SDK work on FreeBSD
    41. Title: Port embedded bionic C library
    42. Title: Make a musl-libc pkg/port
    43. Title: Create web based interface to control services called by rc.d (system and in local)
    44. Title: Web interface to setfib command
    45. Title: TCP/IP over QRCode
    46. Title: Native DKIM/DomainKeys utility
    47. Title: FreeBSD Iphone/Android App
    48. Title: FreeBSD server heartbeat monitor app
    49. Title: Curses or menu based program to seach ports
    50. Title: Make /usr/src/UPDATING more user friendly
    51. Title: Fix picobsd build script
    52. Title: boot.config utility
    53. Title: Update the scripts in /usr/src/release
    54. Title: FastCGI Markdown plugin for nginx, lighttpd, etc.
    55. Title: FBFS Scheduler
    56. Title: FreeBSD on tablets
    57. Title: Web references for error messages in zfs and elsewhere
    58. Title: MAke it possible to "like" or vote on each of the above tasks
    59. Title: Improve default rc.firewall ruleset
    60. Title: add LDAP backend support to YP/NIS
    61. Title: Port CIFS server and client from opensolaris
    62. Title: Add easy to use cut and paste URLs to ports viewsvn interface
    63. Title: Native support for a general purpose notification daemon
    64. Title: I/O Limits for FreeBSD Jails
    65. Title: WiFox Protocol for FreeBSD 802.11 Stack
    66. Title: SVN client in FreeBSD base system. BSD Licensed.
    67. TEMPLATE: Name of a task (task must be very small and very granular)


Static Analysis for Kernel Locking

Category

Code

Difficulty

medium

Time limit

20

Mentor

theraven@freebsd.org

Requirements

Add static lock order annotations to kernel locking primitives.

Description of a task

Clang provides a set of annotations for locking primitives. These should be wrapped in macros in cdefs.h so that they are only enabled when compiling with a compiler that supports them and then added to the kernel locking primitives.

A follow-up task from this would be to begin translating the lock ordering annotations in comments in the kernel into machine-checkable form. A further follow-up would be to teach the static analyser to understand the output from WITNESS.


Static Analysis of Kernel Conventions

Category

Code / Documentation

Difficulty

hard

Time limit

20

Mentor

theraven@freebsd.org

Requirements

A Clang static analyser plugin checking correct usage of a kernel API.

Description of a task

There are several conventions in the kernel that ought to be automatically checked. One simple example is use of the kernel malloc with the M_WAITOK check (which causes malloc to block until it can succeed without returning NULL) followed by a NULL check. This project would extend the Clang static analyser to check this API usage. If someone has already implemented this check, ask me for more conventions that could be automatically checked.


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 XML 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 XML 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 XML 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 XML 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 XML 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.


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

NEEDMENTOR

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:


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:


Cleanup Descriptions of Ports/Packages

Category

Quality Assurance

Difficulty

medium

Time limit

10-40

Mentor

cs@freebsd.org

Requirements

The descriptions of ports/packages in at least one category are spell and grammar checked and consistently aligned.

Description of a task

FreeBSD allows to easily install software via the so called ports system. For every software that can be installed, there exists a short English description about the respective software and what it does. It is essential that such descriptions are well written and self explanatory to help users who are interested in installing a port/package. While most of these descriptions are well written, some are not. This task helps assure quality of the ports system by rereading, spell and grammar checking ports/package descriptions.

Task requires:


Improve the DTrace chapter in FreeBSD developers handbook

Category

Documentation

Difficulty

medium

Time limit

20-30

Mentor

rpaulo@freebsd.org

Requirements

The FreeBSD developer's handbook has a chapter giving some information on DTrace, but it's incomplete.

Description of task

The FreeBSD developer's handbook talks about DTrace in a very limited way. We should improve the chapter and explain how userland DTrace works. Also, DTrace has been ported to more architectures and that should also be mentioned.

Task requires:


Merge Ports Subversion Primer to the existing Subversion Primer in the FreeBSD developers handbook

Category

Documentation

Difficulty

medium

Time limit

20-30

Mentor

beat@freebsd.org, bcr@FreeBSD.org

Requirements

Merge the Ports Subversion Primer from the wiki to the Subversion Primer in the the FreeBSD developers handbook.

Description of task

The FreeBSD ports tree is using the Subversion (SVN) as source code management system. There is a Ports Subversion Primer in the FreeBSD Wiki http://wiki.freebsd.org/PortsSubversionPrimer describing all the SVN operation needed for Port Committers. In the FreeBSD developers handbook a Subversion Primer http://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/subversion-primer.html exists where some of the information are already available. The Primer from the wiki needs to be merged into the existing Subversion Primer so that all information for developers is available in one place.

Task requires:

FreeBSD Community tasks (NEED REVIEW, NEED FreeBSD mentors!!!)

no Wiki formatting yet, putting as I get them over e-mail


Title: Remote upgrade procedures manpage or section in handbook (based on Ralf Engelschall's examples)

Category

Code, Documentation/Training

Difficulty

Medium

Time

16

Mentor

FREEBSDMENTOR

Requirements

Skills with using shell, how to compile FreeBSD and ports from source

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) Documentation on how to do a remote upgrade from source (both minor to minor and major to major version upgrades). (2) Task requires: ability to effectively use the shell; update system source tree using one of many methods; compiling system from source; understanding the use of mergemaster and mergemaster -p on a live running system; able to build a configuration file for the new kernel removing outdated options and including the basic options from the GENERIC kernel; able to effectively clean the newly upgraded system and ensure that it is functioning properly; items to watch out for with installed ports and doing a source upgrade.

This may include creating shell scripts or other utilities to help aid in the remote upgrade procedure. Something that will allow a competent user to do a remote upgrade from source without having to type a million commands on the shell and possibly mess something up while doing so.

Ralf Engelshall's examples at: http://people.freebsd.org/~rse/upgrade/

Are a good starting point in this task. However, he does use some custom scripts to complete this and even states that his upgrade procedure may not be suitable for everyone.


Title: Better document the obscure options listed in the kernel LINT config file

Category

Documentation/Training

Difficulty

Hard

Time

50

Mentor

FREEBSDMENTOR

Requirements

Ability to read a text file, find undocumented config options and find out what they do

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) The FreeBSD Kernel offers a lot of flexibility to tailor a kernel for your own use by using config files. One such config file that is used for testing is the LINT file. Unlike the GENERIC and other kernel config files, LINT is made using the make LINT command in the config directory. Many of the config options in LINT have little to none (many have none) documentation on what they do or are for. Often times, a specific problem with the kernel or adjustment may be fixed by using these options in LINT. (2) With the current RELEASE and STABLE versions, make the LINT config file and determine what options are not documented. Then classify these options according to their function and go about reading through the source code, mailing lists, bugging relevant developer, etc about what they do/how they are used. This information will then be placed into a file that can be easily accessed and understood documenting these obscure options.


Title: Create FreeBSD advocacy materials/portal

Category

Outreach/Research

Difficulty

Medium

Time

20

Mentor

FREEBSDMENTOR

Requirements

Website/portal creation and collecting existing advocacy materials in a single place

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) FreeBSD is a great OS, but it usually lags behind other open source *nix operating systems when it comes to advocacy. With some of these other OSes, you can't go five minutes online without seeing a mention or mascot of one.

This task would be to corral all the existing advocacy materials into a single site/source that would make it easier for others to filter through the FUD and learn more about FreeBSD.

This can include better examples of how and where it is used (not just some Fortune 500 company uses it, etc.) to include things like it is used in schools in x area, small businesses like x use it to, etc.

An excellent resource to help collect this type of information is the Help A Reporter Out (HARO) website. Under the auspices of the FreeBSD Foundation, requests for specific info on the use of FreeBSD in both corporate, small business, educational, etc settings can be solicited to a wide audience.


Title: New ASCII art for bootloader

Category

Code

Difficulty

Medium

Time

20

Mentor

FREEBSDMENTOR

Requirements

Create new ASCII art for the FreeBSD bootloader

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) This task would be to create new ASCII art for the FreeBSD bootloader. It could also be to add functionality to load in an externally defined file with ASCII art to use in the FreeBSD bootloader.

(2) This task requires the ability to read and program in the language that the FreeBSD bootloader is written in (.4th). It would require the successful ability to patch existing and create new code to do the task described above.


Title Proofread and edit FreeBSD website

Category

Quality Assurance

Difficulty

Hard

Time

40

Mentor

FREEBSDMENTOR

Requirements

Ability to parseload the pages on the FreeBSD website and correct typos, grammatical errors, etc.

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) Some of the newer pages on the FreeBSD website have the occasional typographical or grammatical error. This is normally the result of the person making the update being "too close" to the item they are working on and not seeing the errors that are present. (2) This task would require the parsing of the pages on the FreeBSD website and fixing any typographical or grammatical errors that are found;


Title: Document the use of FreeBSD as a Windows Domain Controller

Category

Documentation/Training

Difficulty

Medium

Time

24

Mentor

FREEBSDMENTOR

Requirements

Create documentation on how to configure FreeBSD to be a Windows Domain Controller using SAMBA

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) Create documentation with examples on how to use setup SAMBA on FreeBSD to be a windows domain controller. (2) This task would require to setup of Samba on FreeBSD and configuring it to act as a Windows Domain Controller. This would include making it a single/sole controller in a domain, joining it to an existing domain to act as a controller, and making it seamless for active directory clients to connect to the system without the usual problems encountered in mix operating system environments (authentication problems, etc). This would lend itself to making FreeBSD a file and/or print server (or other type of server) in a windows dominated environment, making it more likely for administrators to use it in this capacity in their windows networks.


Title: Document how to setup a FreeBSD system/network using cryptographic logon

Category

Documentation/Training

Difficulty

Hard

Time

40

Mentor

FREEBSDMENTOR

Requirements

System that allows username/password and cryptographic tokens to login

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

username/password or cryptographic tokens (hardware based like CAC or soft tokens) for logins. Setup would be similar to that experienced in a Windows environment in use by entities such as the US Department of Defense in that users are required to login with a CAC, but some admin accounts can login with username/passwords for administration.

(2) This task would require the setting up of the backend support services for cryptographic login, configuration of the system to allow cryptographic login as a means to let users access the system in a secure manner.


Title: BSD licensed LDAP/PAM module login_ldap/ypldapd (GSOC Candidate)

Category

Code

Difficulty

Hard

Time

96

Mentor

FREEBSDMENTOR

Requirements

PAM LDAP login.conf nss

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

(1) Description of a task (2) Task requires

This project would seek to port parts of OpenBSD's login_ldap and/or ypldap infrastructure and/or develop native BSD licensed modules for nss_ldap pam_ldap (or provide this via a yp/NIS layer as OpenBSD's ypldap does) so that LDAP/AD support can be included in BASE.

The goal is to be able to install and configure a FreeBSD system to draw user and GECOS information from an LDAP server on the first reboot after install.

Currently a combination of a simplified NIS (for GECOS) and kerberos (for authentication) makes it possible to install centrally administered servers/workstations.

http://coewww.rutgers.edu/www1/linuxclass2010/lessons/Kerberos_auth/sec_2.php

But NIS servers are less and less available at some sites while ActiveDirectory has massively popularized LDAP. The availability of OpenLDAP (for unix and OS/X) means a Unix/BSD only method of centralized administration is possible but a BSD licensed set of nss and pam modules are needed to fully integrate this into BSD. OpenBSD's ypldapd login_ldap (and native ldapd server) mayb provide a useful starting point for this work.


Title: UFS Extended (GSOC candidate)

Category

Code

Difficulty

Medium, Hard

Time

100

Mentor

FREEBSDMENTOR

Requirements

C skills and UFS Filesystem strong knowledge

Idea contributor

Stacy Olivas, olivas (ta) new.digiflux.org

Description

FreeBSD support wonderful features in ZFS Filesystem in a stable and secure way to use production, however this features is available just for high systems wit 4gb or more RAM memory. For low hardware systems, the only option is hammerfs, which is complicated to be ported very soon in this moment. Extend UFS+j will be a very good option, with features:

history and snapshot. Data deduplication. If possible, remove fsck. Some option to make a cache in other disk, like ssd. Defragmentation on the fly.

(2) Task requires

A FreeBSD System. Strong knowledge of UFS Filesystem and FreeBSD kernel design.


Title: Document how to install FreeBSD in Qemu (x86)

Category

Documentation, Outreach

Difficulty

Medium

Time (hours)

24

Mentor

wkoszek

Requirements

Article on how to install FreeBSD/x86 in the Qemu PC emulator

Description

Participant will install Qemu on his system.

Next FreeBSD installation will be performed, with all the steps necessary explaineed.

Result of a task: - Article with exact and precise descriptions on how to install FreeBSD/x86 in Qemu - Small (<100MB) image with FreeBSD installed in Qemu


Patch style checker

Category

code

Difficulty

easu

Time limit

20

Mentor

eadler@FreeBSD.org

Requirements

a tool similar to patchcheck for Linux

Description of a task

Write a program, in any language, that you can run on a .diff file that informs of you style issues in the diff. Basically: igor for src

- tool is run with same -pX option as 'patch(1)'.

- tool will copy file to which the patch applies somewhere to /tmp/...

AND THEN

- tool will parse the patch file "@@" lines to find which line numbers were affected

- tool will report style errors which occur on affected lines

OR

- tool will parse the unpatched file and remember number of style problems in $before_patch_prob_num

- tool will apply individual patch chunk on the file

- tool will check the style of the whole file and remember number of problems in $after_patch_prob_num

- if ($after_patch_prob_num-$before_patch_prob_num) > 0, then inform the user.


PDF creation for more docs and handbook

Category

Documentation/Training, Quality Assurance

Difficulty

Easy

Time

16

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Slick high quality PDFs and HandBook

Description

Hook PDF creation targets into build process.

Contributor's name

ANONYMOUS


Standalone/selfcontained PBI/megapkg for desktop

Category

Code, Quality Assurance

Difficulty

Medium

Time

72

Mentor

FREEBSDMENTOR

Requirement (task outcome)

PBI

Description: There are so many moving parts in a typical X desktop set

Contributor's name

ANONYMOUS

There are so many moving parts in a typical X desktop set: required libs are

This task aims at creating and/or documenting how to create a "fallback" "Xrescue" environment in a PBI so that all libraries are self contained. A simple MIT/BSD licensed X environment that would be broken when APIs and libs change when you screw up your "normal" desktop upgrade procedure.

- X - fluxbox - xxxterm - xterm

Call it BSDX.


Convert /etc/rc.d/ to fsc based service management

Category

Code

Difficulty

Hard

Time

144

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Produce an fsc based FreeBSD system

Description

trhodes' FreeBSD Service Console

http

//people.freebsd.org/~trhodes/fsc/ is excellent and needs wider

Contributor's name

ANONYMOUS

trhodes' FreeBSD Service Console

http://people.freebsd.org/~trhodes/fsc/ is excellent and needs wider testing, documentation and installation. This project will help a student learn about new and traditional methods of service management on Unix and will help take fsc development to a broader audience of new and expert users of FreeBSD.

Contributor's name: ANONYMOUS


Using pkgNG scripts and repos for deployment/management

Category

Code

Difficulty

Medium

Time

48

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Produce cool collection of pkgNG scripts and

Description

Use scripting/nodejs or whatever you need to leverage pkgNG

and produce as many of the following tools

Contributor's name

ANONYMOUS

Requirement (task outcome)*: Produce cool collection of pkgNG scripts and tools

Description*: Use scripting/nodejs or whatever you need to leverage pkgNG and produce as many of the following tools:

- one command/one click "pkg-img" creation that links a group of packages into an easy to maintain/update "image" for system creation.

- "pkgadm" a tool that integrates pkg-image creation into beadm

- create pre-post install pkg tools/script/commands that configure major services (/etc/hosts /etc/fstab /etc/resolv.conf


Document 24 empty sysctls

Category

Outreach/Research

Difficulty

Medium

Time

48

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Read code and add/improve sysctl -d

Description

A useful approach to take for familiarizing a student with the

Contributor's name

ANONYMOUS

Description*: A useful approach to take for familiarizing a student with the codebase and improving systctl -d descriptions.

The student could also enogage in outreach and collect descriptions from a wiki page or twitter hashtag that references sysctl vars and tweakables on FreeBSD's svnweb and provides 140 character definitions

Contributor's name: ANONYMOUS


remove traces of readline from BASE build

Category

Code

Difficulty

Medium

Time

12

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Make kadmin ntpd and anything else that uses

Description

readline isn't needed for very much besides gdb.

Contributor's name

ANONYMOUS

readline isn't needed for very much besides gdb.

Make it even less needed!

kadmin and ntpc actually build and work with libedit and upstream sources even default to using it!

Contributor's name: ANONYMOUS


pkg_tools to pkgNG cheat sheet

Category

Documentation/Training

Difficulty

Easy

Time

16

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Produce pkg_tools to pkgNG cheat sheet for wiki

Description

The cheat sheet should describe to equivalent pkgNG command

Contributor's name

ANONYMOUS

Description*: The cheat sheet should describe to equivalent pkgNG command for each of the options of pkg_tools (pkg_info -Lx, pkg_info -W ... etc.)

Contributor's name: ANONYMOUS


FreeBSD hardware database

Category

Outreach/Research, Quality Assurance

Difficulty

Medium

Time

48

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Populate popularize content FreeBSD Hardware

Description

A FreeBSD hardware database exists but is not of the same

Contributor's name

ANONYMOUS

A FreeBSD hardware database exists but is not of the same quality not does it have the same number of entries as the Fedora and other Linux hardware compatibility websites. Tools/scripts for automating data import input and collecting hardware info are not as well known or developed.

For this project the student would survey existing tools for collecting and present data and then find ways of syndicating it to the main FreeBSD website and as a feed for freshports redports and similar sites.

Contributor's name: ANONYMOUS


Populate popularize content of FreeBSD Hardware databases

Category

Outreach/Research, Quality Assurance

Difficulty

Medium

Time

48

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Populate popularize content FreeBSD Hardware

Description

A FreeBSD hardware database exists but is not of the same

Contributor's name

ANONYMOUS

quality not does it have the same number of entries as the Fedora and other Linux hardware compatibility websites. Tools/scripts for automating data import input and collecting hardware info are not as well known or developed.

For this project the student would survey existing tools for collecting and present data and then find ways of syndicating it to the main FreeBSD website and as a feed for freshports redports and similar sites.

Contributor's name: ANONYMOUS


nodejs for web based

Category

Code

Difficulty

Medium

Time

72

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Mockup a simple nodejs web based UI for server

Description

Node.js works really well for asynchronous tasks like shelling

Further work would include

Contributor's name

ANONYMOUS

Mockup a simple nodejs web based UI for server admin

Description*: Node.js works really well for asynchronous tasks like shelling out and waiting for system commands.

Build a quick mockup of node.js webmin-ish UI for some simple commandline based tasks on remote servers (adding users, installing packages etc( liberally borrowing from Solaris's jave based tools that do that same thing

will be run before submitting it - then send it with nodejs to a bunch of remote systems like sshsudo, massadmin, pssh, pdssh etc. except with nodejs coolness and web UI (with links to man pages etc) so newbie admins feel happy and relaxed ...).

Further work would include:

- secure the tool with SSL and SSH keys kerberos etc.

- add logging, graphs, etc.

- create simple templates for users to implements

Students think javascript and nodejs are cool. Here we get them to use their coolness and knowledge of JS to advance the coolness of FreeBSD

Contributor's name: ANONYMOUS


nodejs for web based admin e.g. node-control

Category

Code

Difficulty

Medium

Time

72

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Mockup a simple nodejs web based UI for server

Description

Node.js works really well for asynchronous tasks like shelling

Inspried by https

//github.com/tsmith/node-control

Further work would include

Contributor's name

ANONYMOUS

Inspried by https://github.com/tsmith/node-control the student(s) will build a mockup of a node.js webmin-ish UI for some simple commandline based tasks on remote servers (adding users, installing packages etc( liberally borrowing from Solaris's jave based tools that do that same thing Use a web form to collect the command input - showing the command that will be run before submitting it - then send it with nodejs to a bunch of remote systems like sshsudo, massadmin, pssh, pdssh etc. except with nodejs coolness and web UI (with links to man pages etc) so newbie admins feel happy and relaxed ...).

Further work would include:

- secure the tool with SSL and SSH keys kerberos etc.

- add logging, graphs, etc.

- create simple templates for users to implements

Students think javascript and nodejs are cool. Here we get them to use their coolness and knowledge of JS to advance the coolness of FreeBSD

Contributor's name: ANONYMOUS


Title: IPv6 ISP Emulator

Category

Code

Difficulty

medium

Time

limit No idea

Mentor

FREEBSDMENTOR

Requirements

a tool that will emulate an ISP providing home IPv6 service

Idea contributor bc979@lafn.org

Description

of a task

Develop an emulator that can be used to test IPv6 home/small office routers where there are multiple networks behind the edge router. It needs to provide addressing services much like is done for IPv4 so that anyone can plug it in and the computers and networks just work. Most of the parts are around, but need to be pulled together into a package that can be used for testing routers.

Title: CVS File Checker

Category

Code

Difficulty

easy

Time

limit No idea

Mentor

FREEBSDMENTOR

A

tool that will identify files that should be included in CVS but are not

Idea contributor bc979@lafn.org

Description

of a task

When you are using CVS for a large project with many files in sub-directories it is likely that some of the files will be forgotten to add them into CVS. Develop a tool that evaluates the files in a hierarchical structure with those checked into CVS looking for those that should have been checked in, but have not been. It needs to ignore object and run-time files but detect configuration files, text files, and source files etc.


FreeBSD-ize zfs/zpool manual pages

Category

Documentation/Training

Difficulty

Medium

Time

48

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Edit ZFS manual pages to remove solaris

Description

Since ZFS is imported from an outside vendor there will always

Contributor's name

ANONYMOUS

Edit ZFS manual pages to remove solaris specific references

Description*: Since ZFS is imported from an outside vendor there will always be "non native" portions of the documentation. This project focuses on rewriting, removing and clearing up references that may be confusing for FreeBSD users/admins (eg. components of zpool vdevs) and creating/adding to a FreeBSD specific Examples section.

Contributor's name: ANONYMOUS


Add AAM/APM support to camcontrol

Category

Code

Difficulty

Hard

Time

16

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Working camcontrol command to set/unset AAM/APM

Description

(1) Description

Low level detail available on

http

//lists.freebsd.org/pipermail/freebsd-stable/2009-November/052997.html

Contributor's name

Volodymyr Kostyrko <c.kworr@gmail.com>

(1) Description

Low level detail available on: http://lists.freebsd.org/pipermail/freebsd-stable/2009-November/052997.html

(2) Task requires

Contributor's name: Volodymyr Kostyrko <c.kworr@gmail.com>


Update/Import new IPFilter

Category

Code

Difficulty

Hard

Time

480

Mentor

FREEBSDMENTOR

Requirement (task outcome)

Update/Import new IPFilter

Description: Replacing the FreeBSD Ipfilter v4.1.28 version with the current Ipfilter version (5.1.2). This preoject reuses the tools used in the last ipfilter import, familiarizes the student with FreeBSD codebase, svn commit policies, and the vendor branches.

With PF vendor abandoning the versions used in FreeBSD IPFilter is crucial to the maintenance of a range of up to date firewall tools despite its GPL licensing.

Contributor's name: ANONYMOUS


Title: IP based remote rescue image "Better Rescue"

Category*: Code

Difficulty*: Hard

Time*: 240

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Improve the remote rescue capabilities of FreeBSD

Description*: Big storage machines (200+ disks, 64 cores, 96G RAM etc) are often in the building and receive feeding and care regularly. "Virtual" machines living in clouds are the other extreme. But not everything is fixable voa a VMWare console or using a real screwdriver in a refrigerated room: FreeBSD is still used on real hardware in remote locations - particularly small "nearly embedded" systems for network management, firewall, vpn, even (gasp) real on metal web servers for remote clients. FreeBSD should continue to improve the self hosting remote rescue capabilities of this kind of kit.

This project task focuses on creating an easy to install port/pkg that implements Adrian Steinmann's single user sshd rescue. The port would create an image that could be stored flashed on remote equipment to facilitate remote emergency rescue/repair/analysis. Inspired by:

www.webgroup.ch/eurobsdcon2005/SUSSHPaper.pdf

the student will become familiar with disks, boot process, rc subsystem, rescue and remote management of equipment.

ps: Bonus points for new coolness with innovative use of boot environments, jails, and zfs. Better Rescue (tm) would be "Even Better Rescue"

pps: Improving remote rescue will make remote installs easier to perform, fix, rollback so there's a double benefit.

Contributor's name: ANONYMOUS


Title: WebUI for pkg (pkgNG) system

Category*: Code

Difficulty*: Medium

Time*: 480

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Implement a HTTP interface to pkg (pkgNG) system

Description*: pkgNG's use of sqlite makes possible the creation of simple web server based tools that leverage the sqlite database backends of many php frameworks (laravel) as well as lua (yes!), perl python, etc.

A web interface to the pkg system can be a useful tool for reporting, change management, ITIL type policies, as well such a tool can completely avoid shell logins, ssh access, password and user management for a range of admin tasks.

Such a tool could implemented in javascript. php, python and use a small standalone web server. The tool could also be written so that it can be integrated into existing pfSense, FreeNAS web GUIs.

- secure (use SSL, have the ability to restrict IP access in a granular way: to 1918 range; to a particular admin workstation etc. perhaps the service could be jailed, not run as a daemon (activated via an inetd type listener).

- modular for inclusion in existing projects

- robust - never corrupt the existing pkg db

- distributed ... could a cluster of machines expose their pkg DBs over the web this way? Left as an exercise to the student.

This project would enthusiasts of web development, eg django, node.js, developers and familiarize them with FreeBSD, the new package system, and system administration tasks.

Contributor's name: ANONYMOUS


Title: Make golang a first class citizen on FreeBSD

Category*: Code

Difficulty*: Hard

Time*: 480

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Improve golang support on FreeBSD and in ports

Description*: Mainstream Unix/BSD hackers have been ignoring go for too long (except maybe Conformal). As a Google initiative golang benefits from a long time horizon (both back and forward), an incredible collection of talented researchers, and deep pocketed support for development. We want them to be our friends and notice us :).

Are young teens (15-17) learning go instead of C? Or do you need to be old enough to be expert in C to like large parts of go?

https://www.cyphertite.com/blog.php?/archives/7-Go-at-Conformal.html

This project/task would raise FreeBSD's profile among go hackers and vice-versa. In any case attracting a young go-hacker for FreeBSD related development would be a great outcome! The general nature of this task/project means it could take an approach like any of the following :

1. Make one of the cool golang based projects (that likely is popular on Linux) run well FreeBSD (e.g. vector math; skynet (yes! see: https://github.com/bketelsen/skynet) ; go sqlite library; wu; weed-fs; etc). See go's google+ page for more ideas and:

http://go-lang.cat-v.org/go-code

Super teen go hackers could rewrite xombrero (xxxterm) in go As noted above Conformal loves go and even seems to like *BSDs

2. Use golang to create/rewrite a traditional unix tool or two.

3. Create a new cool tool using go that would enhance FreeBSD visibility, administration (e.g. a go zfs library; use a simple go MVC web framework to make a web based administrative or reporting tool of some kind;

Or, probably the most useful:

4. Develop a standard set of go-lang ports for managing useful go-packages as FreeBSD ports/pkgs. This might site mid way between the way perl/pythong leverages pkg/ports for packaging modules/packages (cf: p5-\* py27-\*) and the "on your own" use of the native package manager that prevails with nodejs (npm). The set of porst required would have to be discussed with #go-nuts on IRC.

Contributor's name: ANONYMOUS


Title: Make portalfs MPSAFE

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Make portalfs MPSAFE

Description*: This would be very hard for a typical 15-17 year old but if there is one out there that can do they should have a chance:

Make portalfs MPSAFE.

Follow code examples on the FreeBSD Wiki and make an effort to fix portalfs for SMP.

Ths student would learn about locking, SMP, portalfs, and FreeBSD kernel's approach to file systems (VFS)

Contributor's name: ANONYMOUS


Title: FreeBSD on raspberry pi hardware

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Help improve FreeBSD on raspberry pi hardware

Description*: http://www.raspberrypi.org/

The Raspberry Pi project is developing a tiny and cheap computer for kids that actually *is* really tiny and cheap. They tag it: "An ARM GNU/Linux box for $25". We need to help raspberry PI team get out more and learn about FreeBSD and make FreeBSD available to the potentially *large* audience of the project.

In this project the student(s) will work with FreeBSD's ARM arch team and any FreeBSD Raspberry PI hackers as mentor to improve support for FreeBSD on Raspberry PI hardware.

Contributor's name: ANONYMOUS


Title: TET Integration

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Attempt TET integratino

Description*: Take directions from a suitable TET mentor (jkoshy??) and get your feet wet with Integrated Testing approaches to software development:

http://wiki.freebsd.org/TetIntegration

One day this could make you employable with companies that use FreeBSD in their hardware!

e.g. Update code in:

//depot/user/jkoshy/projects/tet/

and try to get TET to do something useful.

Contributor's name: ANONYMOUS


Title: Plan and begin development of Thunderbolt connector support

Category*: Code

Difficulty*: Hard

Time*: 160

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Add support for thunderbolt

Description*: Begin adding support for thunderbolt to kernel.

https://thunderbolttechnology.net/

- Register as developer - Explore requirements of standard and existing

- Plan code development with your mentor - Layout a longer term plan for your future with

Contributor's name: ANONYMOUS


Title: Close one dozen kernel PRs

Category*: Code, Quality Assurance

Difficulty*: Medium

Time*: 24

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Follow up, close, or fix 12 kern / PRs

Description*: Close as dup, close as fixed/WFM, patch the bug and fix (!!) ... The goal is to close some PRs or help replicate determine the nature of the reported bug a bit better.

The student and his/her mentor should select some medium difficulty PRs that are suited to the student and gradually increase the difficulty

PR could be low hanging or not

kern/139014 kern/141950 kern/151942 ... Just pick your favorites

NB: "one dozen" is completely arbitrary but providing a list of good and appropriate bugs for students to follow might attract interest to the project.

Contributor's name: ANONYMOUS


Title: Add a description to the handbook on how to import/export a ZFS pool

Category*: Documentation/Training

Difficulty*: Medium

Time*: 16

Mentor*: bcr@freebsd.org

Requirement (task outcome)*: Usable ZFS chapter in FreeBSD Handbook about ZFS pool import/export

Description*: (1) Description of a task (2) Task requires

(1)How to import/export a ZFS pool on FreeBSD (2)Testing of ZFS import/export on live system. Documenting configuration and problems encountered.

Contributor's name: Andrei Kolu


Title: Fix/patch FreeBSD shm issues in Chrome

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Use shared memoy to fix chrome's use of tmp for media playback

Description*: Provide a patch or fix for chromium that addresses shm issues impacting media playback.

See:

http://code.google.com/p/chromium/issues/detail?id=113243

http://forums.freebsd.org/showthread.php?t=29555

Contributor's name: ANONYMOUS


Title: Add recursive mode to BSD ctags

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Improve BSD ctags by adding a recursive mode

Description*: BSD ctags should have a recursive mode similar to the GNU version of the ctags tool.

Since ctags is a key part of many development tools and the student will gain high visibility and get many useful comments on their work.

Contributor's name: ANONYMOUS


Title: Make Androoid SDK work on FreeBSD

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Make FreeBSD a viable platform for the Android SDK

Description*: - port ADK software

- document how to set up an ADK development environment on FreeBSD for a Handbook Appendix chapter or article.

- create a port/pkg

Contributor's name: ANONYMOUS


Title: Port embedded bionic C library

Category*: Code

Difficulty*: Hard

Time*: 480

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Help with Bionic portiing efforts

Description*: Experienced C programmer familiar with standard C library functions to help porting BSD licensed embedded C library to broader range of BSD systems. Tasks would be aligned assigned and discussed with $MENTOR

This would be a a very prestigious and highly technical coding effort for ambitious students, leading to longer term affiliation with BSD community and employment and educational opportunities.

Possibly more appropriate for GSoc but both a GSoC and GCIn component to this larger project could be designed.

See discussion here:

http://mail-index.netbsd.org/tech-userlevel/2012/07/25/msg006571.html

Contributor's name: ANONYMOUS


Title: Make a musl-libc pkg/port

Category*: Code

Difficulty*: Medium

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Make FreeBSD a viable platform for the Android SDK

Description*: Create a FreeBSD port or MUSL-LibC for FreeBSD

(see http://www.musl-libc.org)

Creating a port will make musl-libc more easily available for testing and debugging among FreeBSD developers and users. This will help to identify bugs and compatibility issues. In addition to the port some simple tests to build/run a selection of programs will be useful.

A longer term target/deliverable might be to a successfully build and run nanobsd using musl-libc for CURRENT, 10.0-RELEASE or 9.2-RELEASE

Contributor's name: ANONYMOUS



Title: Create web based interface to control services called by rc.d (system and in local)

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Create the framework for a web based interface to control FreeBSD services

Description*: Create a configurable and nominally secure framework to control certain services started from /etc/rc.d and /usr/local/etc/rc.d

Services controlled would be configurable via a config file.

Items would include user authentication against pam.d,use of self signed SSL cert, ability to toggle what is controllable or just show status of service, etc.

Contributor's name: ANONYMOUS


Title: Web interface to setfib command

Category*: Code

Difficulty*: Easy

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Web interface ti display routing info from setfib commamd

Description*: Create a simple web based interface to display info from setfib command.

This would possibly prove useful for those who monitor systems without having to login to the box and run a series of commands.

Would include routing table info, sockstat, etc.

Contributor's name: ANONYMOUS


Title: TCP/IP over QRCode

Category*: Code

Difficulty*: Hard

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Create a novelty TCP/IP stack that transmits/receives via QRCode

Description*: Using RFC 1149- A Standard for the Transmission of IP Datagrams on Avian Carriers, create a similar TCP/IP stack that uses QRCode to transmit/receive data.

While this is wholly a novelty item, imple,emting something at this level that uses QRCode as the transmission medium.

The code generated in this task should be structured as to make the QRCode encode/decoder highly portable to other transmission mediums such as UDP, SMTP, etc.

A data packet structure and header indicating version number, type, etc would exist in the encoded data to facilitate this.

Contributor's name: ANONYMOUS


Title: Native DKIM/DomainKeys utility

Category*: Code

Difficulty*: Easy

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Create a standard script/program that would add/parse/verify DKIM/DomainKeys

Description*: Create a FreeBSD standard utility to crease/parse/verify DKIM/DomainKeys headers in e-mail messages.

This would also verify SPF as well.

The utility could be a shell script or compiled program. It would add/manipulate headers related to DKIM and DomainKeys.

Contributor's name: ANONYMOUS


Title: FreeBSD Iphone/Android App

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Iphone/Adnroid app that pushes relevant info on FreeBSD

Description*: An application that pushed news and updates on FreeBSD to its users. This would include release announcements, security announcements, upcoming events, etc.

It would be yet another way for people to stay abreast of FreeBSD happenings without using the mailing lists.

Contributor's name: ANONYMOUS


Title: FreeBSD server heartbeat monitor app

Category*: Code

Difficulty*: Medium

Time*: 23

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Iphone/Android app that natively monitors FreeBSD system "health"

Description*: Would support multiple systems, let user know if system was up or down, and current system load.

Useful for knowing if a system is under heavy load from afar.

Contributor's name: ANONYMOUS


Title: Curses or menu based program to seach ports

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Create an easier way to search ports and display pkg-descr and requirements

Description*: Would create a menu (curses) based menu to search ports tree, showing programs avail, description and dependencies.

Contributor's name: ANONYMOUS


Title: Make /usr/src/UPDATING more user friendly

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: To create a more user friendly way to parse UPDATING

Description*: The /usr/src/UPDATING file is fairly large and not too user friendly.

This take would entail creating a way to make this monster more manageable to search from within the CLI.

Contributor's name: ANONYMOUS


Title: Fix picobsd build script

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Fix/update the Picobsd build scripts to work again with never version of FreeBSD

Description*: The PicoBSD build scripts seem to be broken. While a bit antiquated, they can still be useful.

This task would involve updating the PicoBSD build scripts to work correctly with newer versions of FreeBSD. They could also be updated to take advantage of the "new" features that are available since the PicoBSD build script was created.

Additionally, the scripts would be updated to allo creating a compact CD based install that would fit onto mini CDs. It could also include an option for creating a PXE bootable system that is all inclusive.

Contributor's name: ANY MOUSE


Title: boot.config utility

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: A utility to create/modify /boot.config

Description*: This would entail creating a utility that creates/edits/delete the boot.config file located on the root of the bootable drive in FreeBSD.

This would make it easier to create/update/maintain this optional yet critical file.

Contributor's name: ANONYMOUS


Title: Update the scripts in /usr/src/release

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Update the old scripts in /usr/src/release, making them more efficient and relevant

Description*: Many of the scripts in /usr/src/release are quite old and could use a "refresh".

This project would involve taking each script in /usr/src/release, reading through it and making sure it is still relevant by deleting or updating pieces of code as necessary.

Contributor's name: ANONYMOUS


Title: FastCGI Markdown plugin for nginx, lighttpd, etc.

Category*: Code

Difficulty*: Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Create a CGI based plugin for serving markdown as HTML directly

Description*: Create a CGI based plugin for serving markdown as HTML directly.

The tool should ability to serve/convert troff formatted man pages and serve Markdown formatted text directly from the localhost's /usr/share/docs or handbook/artciles as HTML.

Manual pages can be extended by adding references to handbook and wiki sections that become official and are shipped with the RELEASE.

Contributor's name: ANONYMOUS


Title: FBFS Scheduler

Category*: Code

Difficulty*: Medium

Time*: 32

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: C skills and kernel-scheduler knowledge

Description*: (1) Description of a task

FreeBSD scheduler offer advanced features for 2 or more CPU cores. The ULE is stable and secure to use in production. For low hardware systems, like geode processors (1 core), FBFS is better than 4BSD (some years old) and ULE because of simple design and responsiveness. The task is port code from FBFS project (already made to FreeBSD 8.2 and 9.0) to FreeBSD 8.3, 9.1 and 10, reevaluating concepts of BFS scheduler and FBFS.

(2) Task requires

A FreeBSD System. Strong knowledge of kernel scheduler and it's design.

Contributor's name: ANONYMOUS


Title: FreeBSD on tablets

Category*: Code

Difficulty*: Hard

Time*: 160

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Port FreeBSD to tablet form factor computing platform

Description*: Pure gesture based console with X/graphics display layer for running chrome and virtual desktops so gesture based vim/emacs can run alongside it in tablet console heaven.

Contributor's name: ANONYMOUS


Title: Web references for error messages in zfs and elsewhere

Category*: Code, Documentation/Training

Difficulty*: Medium

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Web references for error messages in zfs and elsewhere

Description*: Error messages that refer to further documention on a website can be very useful for sysadmins/users. Solaris makes extensive use of these. FreeBSD could begin to adopt this approach as well and a useful start on this could be made by BSDizing the error messages from zfs that refer to sun.com.

The primary outcome of this task would be to either BSDize or update error messages from zfs that refer to now dead links at sun.com

http://www.sun.com/msg/ZFS-8000-8A

To the extent possible the content from these pages and URLs can be fetched updated from archives and caches.

Then a simple clean up of the source tree with:

'sed s#\.sun\.com\/msg\#freebsd\.org/msg#g'

that would point *all* msgs at freebsd.org/errmsg/ZFS... for now would allow the proejct to gradually develop a protocol for adding information (tuning, PRs or simply more detailed information) to the output of various errors.

Perhaps the best approach would be to link to a msg hierarchy on the freebsd.org website that mimcis the source tree:

freebsd.org/msg/<source tree location>

freebsd.org/msg/cddl/sbin/zfs/

under there an "index" in text/markdown could refer to PRs tuning handbook sections. More specific linke could be RESTful urls that refer to a msg number (as sun/oracle does) e.g.:

freebsd.org/msg/cddl/sbin/zfs/ZFS-8000-8A

A student could do some grepping with sed and awk and refer the URLs to a mocked up site then creat errors that would trigger the messages. Prepare Makefiles commands and patches that would clean the zfs tree and then think about expanding this approach to other error messages in FreeBSD itself.

For the ZFS portion of this work, the content of ZFS-****-** messages could be fetched stored/mirrored at illumos/freebsd/joyent and other ZFS implementors. With sun's demise or passing on to a glorious after life we (e.g. Illumos, SmartOS, ZFSonLinux, NeXenta, FreeBSD) are all "the vendors" now and we should clean up and maintain these error messages. This would allow the FreeBSD proejct to strengthen its collaboration with other ZFS maintainers.

Contributor's name: ANONYMOUS


Title: MAke it possible to "like" or vote on each of the above tasks

Category*: Code

Difficulty*: Easy

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: MAke it possible to "like" or vote on tasks/PRs etc

Description*: Get a web guru young student to develop cool REST JSON nosql javascripty voting and page ranking thingie to add to PRs allowing folks with freebsd.org "membership" (e.g. the forum or another database) and/or openid/google+/facbeook authentication to "vote" or "like" the tasks from the above list. Eventually extend this to PRs

Some services (e.g. Googlecoode) have similar features and implementations are well known. For a web savvy student this should be easy.

Contributor's name: ANONYMOUS


Title: Improve default rc.firewall ruleset

Category*: Documentation/Training

Difficulty*: Medium

Time*: 20

Mentor*: melifaro

Requirement (task outcome)*: firewall ruleset without legacy rules

Description*: (1) Description ipfw(8) is base Ipv4/IPv6 firewall used in FreeBSD. Default ruleset provide some pre-defined flavors like router or NAT box. Some of the rules (particularly loopback and nat-based ones) are out of date and does not reflect current ipfw/kernel abilities.

(2) Task requires Basic firewall / nat/pat working principles.

Contributor's name: Eugene Grosbein <eugen@eg.sd.rdtc.ru>


Title: add LDAP backend support to YP/NIS

Category*: Code

Difficulty*: Hard

Time*: 64

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: port ypldapd to FreeBSD from OpenBSD

Description*: Full native NSS map login support for LDAP is not yet available for FreeBSD or BSD in general (though OpenBSD now ships with a simple LDAP server and login_ldap support). OpenBSD's ypldap leverages the great support for yp/nis in BSD and updates it to use an LDAP backend eliminating the need to transfer NIS maps from servers to clients and allowing for central administration.

This taks focuses on adding support for LDAP to FreeBSD's NIS server.

http://www.openbsd.org/cgi-bin/man.cgi?query=ypldap&sektion=8

http://blogs.helion-prime.com/tag/ypldap

Contributor's name: ANONYMOUS


Title: add LDAP backend support to YP/NIS

Category*: Code

Difficulty*: Hard

Time*: 64

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: port ypldapd to FreeBSD from OpenBSD

Description*: Full native NSS map login support for LDAP is not yet available for FreeBSD or BSD in general (though OpenBSD now ships with a simple LDAP server and login_ldap support). OpenBSD's ypldap leverages the great support for yp/nis in BSD and updates it to use an LDAP backend eliminating the need to transfer NIS maps from servers to clients and allowing for central administration.

This taks focuses on adding support for LDAP to FreeBSD's NIS server.

http://www.openbsd.org/cgi-bin/man.cgi?query=ypldap&sektion=8

http://blogs.helion-prime.com/tag/ypldap

Contributor's name: ANONYMOUS


Title: Port CIFS server and client from opensolaris

Category*: Code

Difficulty*: Hard

Time*: 160

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Port CIFS server and client from opensolaris

Description*: Samba is nice. Samba is not nice. It sort of depends on the day. Plus Samba is and complicated to set up compared to OpenSolaris (and it's GPLv3)

the code for CIFS server and client could go int src/cddl (haha!) or just be made into a port. Better integration with ZFS and vendor support from our friends at Illumos, Joyent, OpenIndiana and Oracle.

It's nice to have choices

Contributor's name: ANONYMOUS


Title: Add easy to use cut and paste URLs to ports viewsvn interface

Category*: Code

Difficulty*: Easy

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Ports viewsvn interface should have easy to cut/paste URLs

Description*: Ports viewsvn interface should have easy to cut/paste URLs like github

This is an easy coding config task for a student who could mirror the the svnweb setup for freebsd and modify the UI/configuration so that browsing something like:

http://svnweb.freebsd.org/ports/head/www/p5-HTTP-Router/

always gives a plain text copyable commandline URL for anonymous svn like:

"svn co -rXXXXXXX http://svn.freebsd.org/ports/head/www/p5-HTTP-Router/"

that can be cut and pasted into a commandline. Adding the the correct -rXXXXX to the output (with XXXX = to the revision being browsed) might take a little coding (python = easy)

This would make svnweb more useful and add to services like freshports (which still needs to work on converting its CVSWeb links to svnsweb).

Also add appropriate red color scheme and small beastie PNG's to the pages to make it beeyootiful

As one of the larges SVN repos in the world this project would add prestige to any student resume.

Contributor's name: ANONYMOUS


Title: Native support for a general purpose notification daemon

Category*: Code

Difficulty*: Hard

Time*: 48

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Develop a tool/daemon for handling hardware failure notifications

Description*: Adding drives as "hot spares" to a zpool still requires manual intervention to replace them on failure. This is because FreeBSD lacks daemon that would receive notifications about disk failures And "zpool replace" the failed drive with the spare. See:

kern/134491: [zfs] Hot spares are rather cold... http://www.freebsd.org/cgi/query-pr.cgi?pr=134491

This project could handle the specific zfs case or add features and capabilities to an existing FreeBSD subsystem that would make more generic hardware failure monitoring possible.

Contributor's name: ANONYMOUS


Title: I/O Limits for FreeBSD Jails

Category*: Code, Outreach/Research

Difficulty*: Hard

Time*: 100

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: Each Jails should have a configurable I/O limit

Description*: Linux lightweight virtualization environments (Openvz, LXE) has a way to limit I/O activity per container.

To simplest way to achieve this in FreeBSD would be to use the GEOM layer to implement a fair scheduler algorithm.

We would divide I/O pool in several queues, assigning 1 or more queues to each container, according to priority.

Contributor's name: alberto.esposito@webscientist.us


Title: WiFox Protocol for FreeBSD 802.11 Stack

Category*: Code, Documentation/Training

Difficulty*: Easy, Medium

Time*: 16

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: A FreeBSD System. Strong knowledge of 802.11 stack in FreeBSD.

Description*: Description

(1) Description of a task

FreeBSD wireless support is very stable and secure to use in production sites. In a way to improve performance and stability, a new research point a very large gain with this new protocol. WiFox - Reference: http://news.ncsu.edu/releases/wms-gupta-wifi The task is implement this protocol and document his usage. Important: Develop in sync to FreeBSD 10 and downgrade the code to FreeBSD 9 and FreeBSD 8 (for use in important and very used projetcts like pfSense).

(2) Task requires

A FreeBSD System. Strong knowledge of 802.11 stack in FreeBSD.

Contributor's name: ANONYMOUS

==


Title: SVN client in FreeBSD base system. BSD Licensed.

Category*: Code, Documentation/Training

Difficulty*: Easy, Medium

Time*: 32

Mentor*: FREEBSDMENTOR

Requirement (task outcome)*: A FreeBSD System. Strong knowledge of SVN client concepts

Description*: (1) Description of a task

With the change from cvs to svn, install subversion from ports is not practical (time precious). Create a BSD Licensed SVN client to use builtin system base. Backport to FreeBSD 9 and 8. Create documents about usage (handbook, man). Small memory use and simple. More later thinking about use multiple mirrors to speed up sources downloading and not overcharge servers (like use servers in other country without massive usage in moment).

(2) Task requires

A FreeBSD System. Strong knowledge of SVN client concepts.

Contributor's name: ANONYMOUS


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'

Idea contributor

IF YOUR IDEA, EMAIL wkoszek (at) FreeBSD.org

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/2012Tasks (last edited 2012-11-23 23:11:17 by WojciechKoszek)