Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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.org|freebsd-hackers@]] (for helping others, please put "GCIN" as a first word of the Subject) Stuff to read: * **What GCIN is for %%FreeBSD%%??**: [[/GoogleCodeIn|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 ===== http://code.google.com/p/google-code-in/wiki/GCIExampleTasks 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 ==== ---- ===== Static Analysis for Kernel Locking ===== | Category | Code | | Difficulty | medium | | Time limit | 20 | | Mentor | <theraven@freebsd.org> | | Requirements | Add static lock order annotations to kernel locking primitives. | ==== Description of a task ==== Clang provides a [[http://clang.llvm.org/docs/LanguageExtensions.html#threadsafety|set of annotations for locking primitives]]. These should be wrapped in macros in cdefs.h so that they are only enabled when compiling with a compiler that supports them and then added to the kernel locking primitives. A follow-up task from this would be to begin translating the lock ordering annotations in comments in the kernel into machine-checkable form. A further follow-up would be to teach the static analyser to understand the output from WITNESS. ---- ===== Static Analysis of Kernel Conventions ===== | Category | Code / Documentation | | Difficulty | hard | | Time limit | 20 | | Mentor | <theraven@freebsd.org> | | Requirements | A Clang static analyser plugin checking correct usage of a kernel API. | ==== Description of a task ==== There are several conventions in the kernel that ought to be automatically checked. One simple example is use of the kernel malloc with the M_WAITOK check (which causes malloc to block until it can succeed without returning NULL) followed by a NULL check. This project would extend the [[http://clang-analyzer.llvm.org|Clang static analyser]] to check this API usage. If someone has already implemented this check, ask me for more conventions that could be automatically checked. ---- ===== Profile libc++ ===== | Category | Quality Assurance | | Difficulty | hard | | Time limit | 40 | | Mentor | <theraven@freebsd.org> <rdivacky@FreeBSD.org> | | Requirements | Benchmarks comparing libc++ to libstdc++ and a list of performance troublespots for libc++ | ==== Description of a task ==== Compile some existing C++ code using both libc++ and libstdc++ and compare performance. Produce a set of benchmarks showing how the two compare. Identify parts of libc++ and that are slower than their libstdc++ equivalents (fixing them is optional) so that they can be addressed before %%FreeBSD%% moves to using libc++ by default. ---- ===== Describe how to create a ZFS mirror pool in the FreeBSD handbook ===== | Category | Documentation | | Difficulty | medium | | Time limit | 4-16 | | Mentor | <bcr@FreeBSD.org> | | Requirements | A new subsection in the ZFS chapter of the %%FreeBSD%% handbook explains how to set up a zfs mirror in textual form with some examples (i.e. using programlisting tags). It has to have correctly formatted XML according to our Documentation Primer. | ==== Description of task ==== The %%FreeBSD%% operating system supports the ZFS file system to create mirrors (RAID-1) of at least two storage media (i.e. disks). This procedure needs to be explained in the handbook for our user community. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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:[[/RootOnZFS|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@FreeBSD.org> | | Requirements | A new subsection in the ZFS chapter of the %%FreeBSD%% handbook explains what deduplication is and what the benefits are with some examples (i.e. using programlisting tags). It has to have correctly formatted XML according to our Documentation Primer. | ==== Description of task ==== The %%FreeBSD%% operating system supports the ZFS file system version 28, which supports a feature called deduplication. This technique allows the reduction of disk space by counting and linking the copies of a file/block on disk. For example, you are saving an email attachment of 1 MB in seven different directories on a ZFS filesystem that has deduplication activated on the underlying pool. That only takes up the 1 MB for the initial file, each further copy is just a link to the original file. In this case, it would only require 1 MB of disk space for this file, while on non-dedup filesystems, it would take up 7 MB (7 * 1 MB) storage space. These basics need to be explained and the procedure of activating deduplication shown in the handbook for our user community. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org> <eadler@freebsd.org> | | Requirements | The X11 configuration section contains a subsection on how to configure X11 without HAL (with common items to both in a subsection before them) | ==== Description of task ==== The %%FreeBSD%% handbook page about configuring X11 ([[http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-config.html]]) describes how to configure the system to use the HAL system. This system is deprecated, but still in use. We want to describe to our users both ways of X.org configuration: with and without HAL. Currently, we only describe the use of HAL, not what needs to be done in order to configure X11 without it. Setup items that are common to both should be extracted and moved to a section before them to avoid redundant textual descriptions. The contents of X11 configuration subsection should look like this then:\\ 6.4.2 Configuring X11\\ 6.4.2.1 Common config items\\ 6.4.2.2 Configuration without HAL\\ 6.4.2.3 Configuration with HAL Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org> | | Requirements | a new article containing instructions what clang/llvm is and how to use it in %%FreeBSD%% | ==== Description of task ==== The %%FreeBSD%% system is moving to replace the GCC (GNU Compiler Collection) with clang/llvm (C language for the low level virtual machine). The following wiki page has an initial writeup of the subject with some instructions on how to use it to compile the %%FreeBSD%% base system: [[/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|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@freebsd.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|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@FreeBSD.org> | | Requirements | A new subsection in the ZFS chapter of the %%FreeBSD%% handbook explains what zfs compression is and what the benefits are with some examples (i.e. using programlisting tags). The subsection 21.2.2.2 ZFS RAID-Z does not contain anything about compression after this. The section has to have correctly formatted XML according to our Documentation Primer. | ==== Description of task ==== The %%FreeBSD%% operating system supports the ZFS file system version 28, which supports a feature called compression. This technique allows the reduction of disk space by compressing files that are being copied on such a file system and decompresses them when being used/read linking the copies of a file/block on disk. Depending on the compression algorithm used and the type of file (text file, binary file, etc.), this can yield saving disk space in some cases. Parts of it are already described in subsection 21.2.2.2 ZFS RAID-Z, which need to be removed to distinguish compression and RAID-Z features. The basics of zfs compression need to be explained, the algorithms for specific file types described and the procedure of activating and using compression shown in the handbook for our user community. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org> | | Requirements | A new subsection in the ZFS chapter of the %%FreeBSD%% handbook explains what zfs snapshots are and what their benefits are with some examples (i.e. using programlisting tags). The subsection 21.2.2.2 ZFS RAID-Z does not contain anything about snapshots after this. The section has to have correctly formatted XML according to our Documentation Primer. | ==== Description of task ==== The %%FreeBSD%% operating system supports the ZFS file system, which has a feature called snapshot. By snapshotting a filesystem, you create an exact read-only copy right at the time the snapshot is taken. This can be used as a backup mechanism as well as when using the zfs send feature to transfer parts of the filesystem over the network to another zfs filesystem using these snapshots. The basics of zfs snapshots need to be explained with some examples and the procedure of activating/using it must be described in the handbook for our user community. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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|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|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@freebsd.org>, <freebsd-wireless@freebsd.org> | | Requirements | Basic knowledge of C; An ath(4) 802.11n NIC (non-USB); I can likely help you acquire one. | ==== Description ==== The athstats and wlanstats tools provide some debugging and diagnostic functionality. It would be nice to tidy these up, write up some manual pages where required, help debug some issues with the tools and eventually include them as part of the base system. This requires some basic knowledge of C and a willingness to learn quickly. I can help you acquire a PCI/PCIe atheros NIC but you'll need to have a wireless access point (which everyone does these days, right?) Bonus points if you have an 802.11n access point. ---- ===== Create a chapter for the FreeBSD developers handbook showing how to use mercurial for FreeBSD development ===== | Category | Documentation | | Difficulty | medium | | Time limit | 12-23 | | Mentor | ''%%<<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|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|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@freebsd.org> | | Requirements | The %%FreeBSD%% developers handbook will have a new chapter giving information on the use of GIT for %%FreeBSD%% daily work as a developer. | ==== Description of task ==== The GIT source code management system has become popular among software developers over the years. It is possible to use it to to send and retrieve the %%FreeBSD%% project's source code to/from the main repository. To help developers work with GIT and the %%FreeBSD%% repository, the following wiki page was created that details the basic workflow: [[/GitWorkflow|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|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@freebsd.org> | | Requirements | The %%FreeBSD%% handbook will have an updated chapter on using CUPS to manage printers connected via USB or the network to a %%FreeBSD%% system. | ==== Description of task ==== The CUPS (Common Unix Printing System) is widely used to manage printers connected via the network to a %%FreeBSD%% system. In addition to that, USB printers are also popular devices these days and can also be connected to a %%FreeBSD%% system. The %%FreeBSD%% handbook's chapter on printing does not have any information on CUPS to manage network or USB printers. To help our users set up and run CUPS, networked or USB printers on %%FreeBSD%%, research must be done in order to know what are the neccessary steps to achieve this on a %%FreeBSD%% system. Then, the results need to be documented in the %%FreeBSD%% handbook chapter on printing. When adding these instructions (and possibly examples) to the handbook, the source code needs to be correctly formatted and must conform to our documentation source code style guidelines. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org> | | Requirements | The %%FreeBSD%% handbook will have each chapter in it's index when rendered to Postscript/PDF output. | ==== Description of task ==== The %%FreeBSD%% handbook can be rendered into Postscript/PDF output. Each chapter should have an index produced from indexterms at the beginning of each chapter definition in the XML output. Unfortunately, not all of them do and as a result, a ??? is added instead to the index of the Postscript/PDF output. With a proper index, readers are able to locate a specific chapter easier by loooking at the indexterms in the appendix or simply by using the table of contents. The objective of this task is to improve the indexing using the Postscript/PDF output of the current handbook to find sections/chapters that do not have primary/secondary indexterms causing ??? to be printed instead. A script located at doc/share/misc/indexreport.pl in the checkout from the doc repository can help find them. When there is a chapter/section found that has no indexterms, sensible ones need to be defined and added based on the content of the chapter. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org> | | Requirements | A page similar to Jens Schweikhardt's from 2001 | ==== Description of a task ==== POSIX is the standard that describes how UNIX-like operating systems like Linux, *BSD, Solaris and Mac OS X should behave. The POSIX specification is divided in several chapters, namely how certain APIs have to be implemented (header files, functions, etc) and how base system utilities should work (command line switches, etc). Somewhere between 2001 and 2006 Jens Schweikhardt made this page, that gives a nice overview of which command line switches are implemented by our versions of the utilities: * http://people.freebsd.org/~schweikh/posix-utilities.html 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: * http://pubs.opengroup.org/onlinepubs/9699919799/ ---- ===== POSIX conformance of header files and C functions ===== | Category | Documentation / Quality Assurance | | Difficulty | medium | | Time limit | 20-30 | | Mentor | <ed@freebsd.org> | | Requirements | A page similar to Jens Schweikhardt's from 2001 | ==== Description of a task ==== POSIX is the standard that describes how UNIX-like operating systems like Linux, *BSD, Solaris and Mac OS X should behave. The POSIX specification is divided in several chapters, namely how certain APIs have to be implemented (header files, functions, etc) and how base system utilities should work (command line switches, etc). Somewhere between 2001 and 2006 Jens Schweikhardt made this page, that gives a nice overview of which command line switches are implemented by our versions of the utilities: * http://people.freebsd.org/~schweikh/posix-utilities.html 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: * http://pubs.opengroup.org/onlinepubs/9699919799/ ---- ===== Update the FreeBSD developers handbook on debugging modules with newer instructions from a wiki page ===== | Category | Documentation | | Difficulty | easy | | Time limit | 10-12 | | Mentor | <gavin@FreeBSD.org> | | Requirements | The %%FreeBSD%% developers handbook chapter on debugging modules contains the new information from the wiki page. | ==== Description of task ==== %%FreeBSD%%'s developers handbook has a section describing the steps needed to debug kernel modules: ''%%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|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|VirtualBox]] image to test the procedure, but can also use the information available online. Please read [[GoogleCodeIn/GettingStarted]] before accepting this task, as it contains further details on what this task consists of, as well as providing useful information on how to obtain the page source and how to proceed with the task. ---- ===== Describe the Media Independent Interface (MIIBus) in the FreeBSD developers handbook based on content from a wiki page ===== | Category | Documentation | | Difficulty | easy | | Time limit | 12-17 | | Mentor | <gavin@FreeBSD.org> | | Requirements | The %%FreeBSD%% developers handbook will have a new section describing the use of MIIBus for devices attached to the network. | ==== Description of task ==== %%FreeBSD%% implements IEEE 802.3 Media Independent Interface or MIIBus for its underlying networking capabilities. %%FreeBSD%% Developers who want to know more about this interface currently find no information about it in the %%FreeBSD%% developers handbook. The purpose of this task is to remedy this by using the following wiki page as a source of information: [[/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|VirtualBox]] image to test the procedure, but can also use the information available online. Please read [[GoogleCodeIn/GettingStarted]] before accepting this task, as it contains further details on what this task consists of, as well as providing useful information on how to obtain the page source and how to proceed with the task. ---- ===== Update the FreeBSD FAQ with information about common USB problems and how to solve them based on instructions in a wiki page ===== | Category | Documentation | | Difficulty | easy | | Time limit | 5-12 | | Mentor | <rea@freebsd.org> | | Requirements | The FAQ contains a new entry on how to solve common USB problems like when mass storage devices are not detected. The entry needs to be formatted correctly according to our %%FreeBSD%% style and doc source code standards. | ==== Description of task ==== The %%FreeBSD%% operating system has support for many devices connected via the Universal Serial Bus (USB). However, given the vast amount of devices, there are some problems that occur frequently for which there are already solutions available on the following wiki page: [[/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|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|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|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|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@freebsd.org> | | Requirements | The %%FreeBSD%% developers handbook has a new chapter giving some hints on what is important when benchmarking the system and how to do it properly. | ==== Description of task ==== An important part when enhancing the %%FreeBSD%% operating systems is to know whether or not the added functionality makes the system perform faster than before. In order to do that, benchmarks are being used to collect useful information to make educated comparisons. However, when done wrong, these benchmarks will either not make any sense, provide the wrong data or results in false conclusions drawn by the developer doing the benchmark. To avoid that, a wiki page listing some of the pitfalls when benchmarking is available here: [[/BenchmarkAdvice|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|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@freebsd.org> | | Requirements | The descriptions of ports/packages in at least one category are spell and grammar checked and consistently aligned. | ==== Description of a task ==== %%FreeBSD%% allows to easily install software via the so called ports system. For every software that can be installed, there exists a short English description about the respective software and what it does. It is essential that such descriptions are well written and self explanatory to help users who are interested in installing a port/package. While most of these descriptions are well written, some are not. This task helps assure quality of the ports system by rereading, spell and grammar checking ports/package descriptions. Task requires: * 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@freebsd.org> | | Requirements | The %%FreeBSD%% developer's handbook has a chapter giving some information on DTrace, but it's incomplete. | ==== Description of task ==== The %%FreeBSD%% developer's handbook talks about DTrace in a very limited way. We should improve the chapter and explain how userland DTrace works. Also, DTrace has been ported to more architectures and that should also be mentioned. Task requires: * A %%FreeBSD%% system (in a [[/VirtualBox|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@freebsd.org>, <bcr@FreeBSD.org> | | Requirements | Merge the Ports Subversion Primer from the wiki to the Subversion Primer in the the %%FreeBSD%% developers handbook. | ==== Description of task ==== The %%FreeBSD%% ports tree is using the Subversion (SVN) as source code management system. There is a Ports Subversion Primer in the %%FreeBSD%% Wiki [[/PortsSubversionPrimer|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|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. http://www.obfuscurity.com/2009/08/OpenBSD-as-an-LDAP-Client ---- ===== 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@lafn.org> | | Description | of a task | Develop an emulator that can be used to test IPv6 home/small office routers where there are multiple networks behind the edge router. It needs to provide addressing services much like is done for IPv4 so that anyone can plug it in and the computers and networks just work. Most of the parts are around, but need to be pulled together into a package that can be used for testing routers. ===== Title: CVS File Checker ===== | Category | Code | | Difficulty | easy | | Time | limit No idea | | Mentor | FREEBSDMENTOR | | A | tool that will identify files that should be included in CVS but are not | | Idea contributor <bc979@lafn.org> | | Description | of a task | When you are using CVS for a large project with many files in sub-directories it is likely that some of the files will be forgotten to add them into CVS. Develop a tool that evaluates the files in a hierarchical structure with those checked into CVS looking for those that should have been checked in, but have not been. It needs to ignore object and run-time files but detect configuration files, text files, and source files etc. ---- ===== FreeBSD-ize zfs/zpool manual pages ===== | Category | Documentation/Training | | Difficulty | Medium | | Time | 48 | | Mentor | FREEBSDMENTOR | | Requirement (task outcome) | Edit ZFS manual pages to remove solaris | | Description | Since ZFS is imported from an outside vendor there will always | | Contributor's name | ANONYMOUS | Edit ZFS manual pages to remove solaris specific references Description*: Since ZFS is imported from an outside vendor there will always be "non native" portions of the documentation. This project focuses on rewriting, removing and clearing up references that may be confusing for %%FreeBSD%% users/admins (eg. components of zpool vdevs) and creating/adding to a %%FreeBSD%% specific Examples section. Contributor's name: ANONYMOUS ---- ===== Add AAM/APM support to camcontrol ===== | Category | Code | | Difficulty | Hard | | Time | 16 | | Mentor | FREEBSDMENTOR | | Requirement (task outcome) | Working camcontrol command to set/unset AAM/APM | | Description | (1) Description | | Low level detail available on | | | http | %%//%%lists.freebsd.org/pipermail/freebsd-stable/2009-November/052997.html | | Contributor's name | Volodymyr Kostyrko %%<%%c.kworr@gmail.com> | (1) Description Low level detail available on: http://lists.freebsd.org/pipermail/freebsd-stable/2009-November/052997.html (2) Task requires * medium C skills, * minor knowledge of harddrives, * lot of testing. Contributor's name: Volodymyr Kostyrko <<[[/MailTo|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: [[/TetIntegration|TetIntegration]] One day this could make you employable with companies that use %%FreeBSD%% in their hardware! e.g. Update code in: %%//%%depot/user/jkoshy/projects/tet/ and try to get TET to do something useful. Contributor's name: ANONYMOUS ---- ===== Title: Plan and begin development of Thunderbolt connector support ===== Category*: Code Difficulty*: Hard Time*: 160 Mentor*: FREEBSDMENTOR Requirement (task outcome)*: Add support for thunderbolt Description*: Begin adding support for thunderbolt to kernel. https://thunderbolttechnology.net/ - Register as developer - Explore requirements of standard and existing %%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|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: [[eugen@eg.sd.rdtc.ru|Eugene Grosbein]] ---- 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|MailTo]](alberto.esposito AT webscientist DOT us ---- %%=%%=)>> Title: [[/WiFox|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: [[http://news.ncsu.edu/releases/wms-gupta-wifi|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|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. ---- {{tag>Historical}} googlecodein/2014tasks.txt Last modified: 2021/04/26 01:20by JethroNederhof