FreeBSD Google Code-in 2014 Tasks
Don't put unmentored tasks here
Coding tasks are *very* important - we need lots of them
Introduction
Contact channels:
- IRC: #freebsd-soc @ EFNET
Mailing list: freebsd-hackers@ <freebsd-hackers AT FreeBSD DOT org> (for helping others, please put "GCIN" as a first word of the Subject)
Stuff to read:
What GCIN is for FreeBSD??: GoogleCodeIn
From mentors: http://code.google.com/p/google-code-in/wiki/GCIAdminMentorInformation
TODO:
- ideas
- mentors
- VM images
- build script for C stuff with syntax (style(9)) checking, so that participants submit high-quality source code for reviewing.
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
- 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
Task list
Table of contents
Contents
- FreeBSD Google Code-in 2014 Tasks
-
Task list
- Static Analysis for Kernel Locking
- Static Analysis of Kernel Conventions
- Profile libc++
- Describe how to create a ZFS mirror pool in the FreeBSD handbook
- Describe the ZFS deduplication feature in the handbook chapter about ZFS
- 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
- Write an article about using FreeBSD with clang/llvm
- Update the IPsec section of the FreeBSD handbook which is still using gifconfig(4), which is based on FreeBSD 4.X only
- 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
- 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
- Write a chapter about the new TTY layer for the FreeBSD developers handbook
- Describe the TMPFS filesystem for /tmp (pros and cons) in the FreeBSD handbook
- FreeBSD atheros 802.11n work - help with tools
- Create a chapter for the FreeBSD developers handbook showing how to use mercurial for FreeBSD development
- Create a chapter for the FreeBSD developers handbook showing how to use GIT for FreeBSD development
- Update the FreeBSD handbook's printer chapter by adding a description on the CUPS system to use network printers and USB printers
- Improve indexing of the FreeBSD handbook
- POSIX conformance of command line utilities
- POSIX conformance of header files and C functions
- Update the FreeBSD developers handbook on debugging modules with newer instructions from a wiki page
- Describe the Media Independent Interface (MIIBus) in the FreeBSD developers handbook based on content from a wiki page
- Update the FreeBSD FAQ with information about common USB problems and how to solve them based on instructions in a wiki page
- Demonstrate UFS Journaling recovery in a video
- Add some hints on benchmarking the system to the FreeBSD developers handbook
- Cleanup Descriptions of Ports/Packages
- Improve the DTrace chapter in FreeBSD developers handbook
- Merge Ports Subversion Primer to the existing Subversion Primer in the FreeBSD developers handbook
-
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)
- Title: Better document the obscure options listed in the kernel LINT config file
- Title: Create FreeBSD advocacy materials/portal
- Title: New ASCII art for bootloader
- Title Proofread and edit FreeBSD website
- Title: Document the use of FreeBSD as a Windows Domain Controller
- Title: Document how to setup a FreeBSD system/network using cryptographic logon
- Title: BSD licensed LDAP/PAM module login_ldap/ypldapd (GSOC Candidate)
- Title: UFS Extended (GSOC candidate)
- Title: Document how to install FreeBSD in Qemu (x86)
- Patch style checker
- PDF creation for more docs and handbook
- Standalone/selfcontained PBI/megapkg for desktop
- Convert /etc/rc.d/ to fsc based service management
- Using pkgNG scripts and repos for deployment/management
- Document 24 empty sysctls
- remove traces of readline from BASE build
- pkg_tools to pkgNG cheat sheet
- FreeBSD hardware database
- Populate popularize content of FreeBSD Hardware databases
- nodejs for web based
- nodejs for web based admin e.g. node-control
- Title: IPv6 ISP Emulator
- Title: CVS File Checker
- FreeBSD-ize zfs/zpool manual pages
- Add AAM/APM support to camcontrol
- Title: IP based remote rescue image "Better Rescue"
- Title: WebUI for pkg (pkgNG) system
- Title: Make golang a first class citizen on FreeBSD
- Title: Make portalfs MPSAFE
- Title: FreeBSD on raspberry pi hardware
- Title: TET Integration
- Title: Plan and begin development of Thunderbolt connector support
- Title: Close one dozen kernel PRs
- Title: Add a description to the handbook on how to import/export a ZFS pool
- Title: Fix/patch FreeBSD shm issues in Chrome
- Title: Add recursive mode to BSD ctags
- Title: Make Androoid SDK work on FreeBSD
- Title: Port embedded bionic C library
- Title: Make a musl-libc pkg/port
- Title: Create web based interface to control services called by rc.d (system and in local)
- Title: Web interface to setfib command
- Title: TCP/IP over QRCode
- Title: Native DKIM/DomainKeys utility
- Title: FreeBSD Iphone/Android App
- Title: FreeBSD server heartbeat monitor app
- Title: Curses or menu based program to seach ports
- Title: Make /usr/src/UPDATING more user friendly
- Title: Fix picobsd build script
- Title: boot.config utility
- Title: Update the scripts in /usr/src/release
- Title: FastCGI Markdown plugin for nginx, lighttpd, etc.
- Title: FBFS Scheduler
- Title: FreeBSD on tablets
- Title: Web references for error messages in zfs and elsewhere
- Title: MAke it possible to "like" or vote on each of the above tasks
- Title: Improve default rc.firewall ruleset
- Title: add LDAP backend support to YP/NIS
- Title: Port CIFS server and client from !OpenSolaris
- Title: Add easy to use cut and paste URLs to ports viewsvn interface
- Title: Native support for a general purpose notification daemon
- Title: I/O Limits for FreeBSD Jails
- Title: SVN client in FreeBSD base system. BSD Licensed.
- 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 AT freebsd DOT 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 AT freebsd DOT 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 AT freebsd DOT org> <rdivacky AT FreeBSD DOT 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 AT FreeBSD DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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
An example on how to create a ZFS Mirror can be found here:Installing FreeBSD Root on ZFS
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 AT FreeBSD DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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
Category |
Documentation |
Difficulty |
medium |
Time limit |
7-14 |
Mentor |
<bcr AT freebsd DOT org> <eadler AT freebsd DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
Write an article about using FreeBSD with clang/llvm
Category |
Documentation |
Difficulty |
medium |
Time limit |
10-20 |
Mentor |
<rea AT freebsd DOT 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: 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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 AT freebsd DOT org> |
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
Category |
Documentation |
Difficulty |
medium |
Time limit |
8-22 |
Mentor |
<bcr AT FreeBSD DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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
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 AT freebsd DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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 |
<<MailTo(ed AT freebsd DOT 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: 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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 |
<<MailTo(pgj AT freebsd DOT 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: 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Make yourself familiar with TMPFS using it's manual page (by typing "man tmpfs" in a terminal or by using other sources on the web)
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
FreeBSD atheros 802.11n work - help with tools
Difficulty |
medium |
Time limit |
8-20 |
Mentor |
<adrian AT freebsd DOT org>, <freebsd-wireless AT freebsd DOT 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 |
<<MailTo(uqs AT freebsd DOT 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: 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.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
- Basic knowledge of source code management systems like Mercurial, SVN or any other
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 AT freebsd DOT 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: 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.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
- Basic knowledge of source code management systems like GIT, SVN or any other
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 AT freebsd DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
- Basic knowledge of CUPS would be helpful
Improve indexing of the FreeBSD handbook
Category |
Research, Documentation, Code |
Difficulty |
hard |
Time limit |
15-25 |
Mentor |
<rea AT freebsd DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
POSIX conformance of command line utilities
Category |
Documentation / Quality Assurance |
Difficulty |
medium |
Time limit |
10-15 |
Mentor |
<ed AT freebsd DOT 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 AT freebsd DOT 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:
- The header file itself is available,
- Which of the structures/functions/etc. are present in the header file and which are not,
- If they are available, does the prototype/definition conform to POSIX.
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 AT FreeBSD DOT 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: 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: 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 ../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 AT FreeBSD DOT 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: 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 ../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 AT freebsd DOT 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: 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.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- 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
Category |
Documentation |
Difficulty |
medium |
Time limit |
12-20 |
Mentor |
<gavin AT freebsd DOT 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: 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
Cleanup Descriptions of Ports/Packages
Category |
Quality Assurance |
Difficulty |
medium |
Time limit |
10-40 |
Mentor |
<cs AT freebsd DOT 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:
- Good knowledge of the English language
- Ability to use spell checkers and text tools
Improve the DTrace chapter in FreeBSD developers handbook
Category |
Documentation |
Difficulty |
medium |
Time limit |
20-30 |
Mentor |
<rpaulo AT freebsd DOT 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
Merge Ports Subversion Primer to the existing Subversion Primer in the FreeBSD developers handbook
Category |
Documentation |
Difficulty |
medium |
Time limit |
20-30 |
Mentor |
<beat AT freebsd DOT org>, <bcr AT FreeBSD DOT 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 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:
A FreeBSD system (in a VirtualBox Virtual Machine) installed on your computer.
Knowledge of the documentation guidelines for the FreeBSD project: http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
- Check out a copy of the documentation tree from the documentation repository to get the source code for the chapter
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
- (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.
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
- (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.
(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 |
<<MailTo(eadler AT FreeBSD DOT 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 |
- 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-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 AT lafn DOT 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 AT lafn DOT 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 AT gmail DOT com>> |
(1) Description
Low level detail available on: http://lists.freebsd.org/pipermail/freebsd-stable/2009-November/052997.html
(2) Task requires
- medium C skills,
- minor knowledge of harddrives,
- lot of testing.
Contributor's name: Volodymyr Kostyrko <<MailTo(<c.kworr AT gmail DOT 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:
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
- FreeBSD PCI bus code for compatability
- Plan code development with your mentor - Layout a longer term plan for your future with
- FreeBSD project developing this code via GSoC, FreeBSD Foundation etc.
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*: <<MailTo(bcr AT freebsd DOT 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 porting 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 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, implementing 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/Android 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 AT eg DOT sd DOT rdtc DOT 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: <<MailTo(alberto.esposito AT webscientist DOT 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 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 |
<<MailTo(email AT freebsd DOT 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.