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

Anything from scripts to simple forms/web pages. We could include other technologies than just "cgi-bin.pl" or "ANSI C", since people with Ruby, Python or Perl etc.. skillsets are more likely to get attracted. It would

be up to SomeBody (tm) to figure out what the project could be and how to break it down to small tasks. This could let us "steal" people from other projects. Example: "dmesg" submission script for collecting statistics of computer which FreeBSD runs on

- Regression tests for FreeBSD API

This I think scales perfectly well. Example "test socket() function and its returns error codes EINVAl and EACCESS". And we have lots of system calls, out of which a lot are complex, but some are doable in 4x3 hours of coding.

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

Google's list (above) shows participants could help with bug chasing and bug reporting. Example: Take bug XYZ and try to reproduce it

- Documentation

Example (research): We could experimentally have 2-4 tasks inserted to figure out how reStructuredText/Markdown could possibly work like for our documentation

Static Analysis for Kernel Locking

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

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++

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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Describe the ZFS deduplication feature in the handbook chapter about ZFS

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Make yourself familiar with ZFS using it's manual page (by typing "man zpool" in a terminal)

Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter

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

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 X116.4.2.1 Common config items6.4.2.2 Configuration without HAL6.4.2.3 Configuration with HAL

Task requires:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Write an article about using FreeBSD with clang/llvm

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/BuildingFreeBSDWithClangThe 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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

A checked out copy of the FreeBSD src tree (HEAD, /usr/share/man/ should suffice) to get the most current man pages

Basic programming/scripting skills (or willingness to learn)

Thorough workstyle

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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Make yourself familiar with ZFS using it's manual page (by typing "man zpool" and "man zfs" in a terminal)

Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter

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/TTYRedesignThe 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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter

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/TMPFSThe 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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

FreeBSD atheros 802.11n work - help with tools

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Improve indexing of the FreeBSD handbook

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

POSIX conformance of command line utilities

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 conformance of header files and C functions

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:

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

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/MIIBUSOther 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

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Video recording software

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

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/BenchmarkAdviceThe 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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

Cleanup Descriptions of Ports/Packages

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.

Improve the DTrace chapter in FreeBSD developers handbook

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:

A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.

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.

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

(1) This requires the setting up of a server to allow either

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.

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.

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)

Description

(1) Description of a task

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.

Standalone/selfcontained PBI/megapkg for desktop

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.

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

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

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

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

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-controlthe 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

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

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.

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"

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"

Title: WebUI for 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?

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:

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.

Title: FreeBSD on raspberry pi hardware

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:

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.

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

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.

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

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.

Title: 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

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.

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.

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.

Title: 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.

Title: Native support for a general purpose notification daemon

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:

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-wifiThe 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).

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

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.