Diff for /wikisrc/projects/code-in.mdwn between versions 1.68 and 1.69

version 1.68, 2013/10/28 14:12:14 version 1.69, 2016/10/11 10:25:59
Line 41  also be read there. Line 41  also be read there.
 ## Tasks  ## Tasks
   
 There were some tasks left, and there might be more ideas over the following   There were some tasks left, and there might be more ideas over the following 
 year to participate in Code-In 2013 again.  year to participate in Code-In 2017 again.
   
 ## Used tags  ## Used tags
 If you want to search for a tag, just search this site for "Tag: $TAGNAME".  If you want to search for a tag, just search this site for "Tag: $TAGNAME".
Line 66  Used tags are (categories are not tagged Line 66  Used tags are (categories are not tagged
   
 * **Task: Serve HTML man pages using NetBSD's "bozohttpd" server**  * **Task: Serve HTML man pages using NetBSD's "bozohttpd" server**
   NetBSD installs man pages in different formats, one of them being html pages.  The goal of this task is to write a Lua script for    NetBSD installs man pages in different formats, one of them being html pages.  The goal of this task is to write a Lua script for
   the "bozohttpd" web server, i.e. NetBSD's integrated webserver, that displays a webform where a man page section and the    the [[!template id=man name="bozohttpd" section="8"]] web server, i.e. NetBSD's integrated webserver, that displays a webform where a man page section and the
   name of a man page can be entered (see [[!template id=man name="httpd" section="8"]]).    name of a man page can be entered (see [[!template id=man name="httpd" section="8"]]).
   When the form is submitted, the Lua script will do a lookup if there is a corresponding    When the form is submitted, the Lua script will do a lookup if there is a corresponding
   man page in html form and deliver to the web-browser.  Contact mbalmer@ if you have questions.    man page in html form and deliver to the web-browser.  Contact mbalmer@ if you have questions.
Line 100  Used tags are (categories are not tagged Line 100  Used tags are (categories are not tagged
   * complete package that passes packaging checks and creates binary package (easy).    * complete package that passes packaging checks and creates binary package (easy).
   *Tags*: code, pkgsrc    *Tags*: code, pkgsrc
   
 * Avoiding TeX dependencies for meta-pkgs/netbsd-www  * Avoiding TeX dependencies for [[!template id=pkg category="meta-pkgs" name="netbsd-www"]]
   It has been reported that one of obstacles when maintaining NetBSD documentation is the cost of update of tool packages.    It has been reported that one of obstacles when maintaining NetBSD documentation is the cost of update of tool packages.
   Surface analysis reveals that a lot of time may be spent on building TeX packages which are used to generate printable documentation in PostScript and PDF. The latter may be unneeded (e.g. when only HTML is of concern).    Surface analysis reveals that a lot of time may be spent on building TeX packages which are used to generate printable documentation in PostScript and PDF. The latter may be unneeded (e.g. when only HTML is of concern).
   The task is to drop dependency on TeX packages in the whole toolchain pulled by meta-pkgs/netbsd-www in order to make it optional, if it really matters.    The task is to drop dependency on TeX packages in the whole toolchain pulled by [[!template id=pkg category="meta-pkgs" name="netbsd-www"]] in order to make it optional, if it really matters.
   *Tags*: code, pkgsrc    *Tags*: code, pkgsrc
   
 * Search engine (Lucene)  * Search engine (Lucene)
   Status: Reopened Time to complete: 96 hrs Mentors: Radoslaw Kujawa, Aleksej Saushev Tags:     Status: Reopened Time to complete: 96 hrs Mentors: Radoslaw Kujawa, Aleksej Saushev Tags: 
   These days we have to search for information not only on WWW but on our personal machines either.Your task is to research in setting up text search engine Lucene in any (or all, at your option) of use cases: just personal desktop, web site, mailing list archive.    These days we have to search for information not only on WWW but on our personal machines either. Your task is to research in setting up text search engine Lucene in any (or all, at your option) of use cases: just personal desktop, web site, mailing list archive.
   We have outdated work-in-progress package in pkgsrc-wip. Update it, make sure it works with OpenJDK7. Test it with all acceptable options. Preferrably, make it build from source as well.    We have outdated work-in-progress package in pkgsrc-wip. Update it, make sure it works with OpenJDK7. Test it with all acceptable options. Preferrably, make it build from source as well.
   Provide instructions how to deploy Lucene itself and all needed components, if it isn't done automatically already.    Provide instructions how to deploy Lucene itself and all needed components, if it isn't done automatically already.
   Provide instructions how to setup and test functionality.    Provide instructions how to setup and test functionality.
Line 157  Used tags are (categories are not tagged Line 157  Used tags are (categories are not tagged
   *Tag*: overview    *Tag*: overview
   
 * **Task: Analyze and document (pseudo-)random number generators**: For several purposes like key creation, initial vectors for some protocols, IP sequence numbers, an operating system is required to have a (pseudo) random number generator ((p)rng).    * **Task: Analyze and document (pseudo-)random number generators**: For several purposes like key creation, initial vectors for some protocols, IP sequence numbers, an operating system is required to have a (pseudo) random number generator ((p)rng).  
   Though some are implemented in hardware and the OS gives you the chance to interface them, you most probably just call the function random(3) or open the device /dev/urandom or /dev/random, which is either in hardware or software, depending on what the operating system uses.      Though some are implemented in hardware and the OS gives you the chance to interface them, you most probably just call the function [[!template id=man name="random" section="3"]] or open the device /dev/urandom or /dev/random, which is either in hardware or software, depending on what the operating system uses.  
   While the hardware rngs use some random noise as a source for entropy ("randomness"), software rngs use several sources like disk command execution times, network timing, mouse and keyboard usage, depending on the implementation.      While the hardware rngs use some random noise as a source for entropy ("randomness"), software rngs use several sources like disk command execution times, network timing, mouse and keyboard usage, depending on the implementation.  
   Your task is to look at the prngs of the great Open Source operating systems, analyze how they work, what input they use, how large their pools are and what exactly is done when input or output occurs.      Your task is to look at the prngs of the great Open Source operating systems, analyze how they work, what input they use, how large their pools are and what exactly is done when input or output occurs.  
   This task is once for each operating system which has a different rng (some operating systems share the same ones), but you should analyze the input sources for all OSes using that rng and do the analysis for NetBSD first.      This task is once for each operating system which has a different rng (some operating systems share the same ones), but you should analyze the input sources for all OSes using that rng and do the analysis for NetBSD first.  
Line 166  Used tags are (categories are not tagged Line 166  Used tags are (categories are not tagged
   *Tag*: research      *Tag*: research  
   *Tag*: comparison    *Tag*: comparison
   
 * **Task: Illustrate how to use the framebuffer**: NetBSD features a generic framebuffer framework, called wsfb(4). It is already supported by Xorg by the xf86-video-wsfb driver, but it would be nice to investigate other useful ways to use it from userland. This task should illustrate exactly this, explaining and demonstrating how to write pictures on the framebuffer for instance.    * **Task: Illustrate how to use the framebuffer**: NetBSD features a generic framebuffer framework, called [[!template id=man name="wsfb" section="4"]]. It is already supported by Xorg by the xf86-video-wsfb driver, but it would be nice to investigate other useful ways to use it from userland. This task should illustrate exactly this, explaining and demonstrating how to write pictures on the framebuffer for instance.  
   Note that there is a generic framebuffer implementation for the i386, amd64 and macppc architectures, through the genfb(4) driver; it is known to work on the first two cases with qemu. Some help about how to enable it can be found in boot(8) (see the "vesa" command). Also, some fixes and improvements to the relevant drivers may only be found in NetBSD-current at the moment.      Note that there is a generic framebuffer implementation for the i386, amd64 and macppc architectures, through the genfb(4) driver; it is known to work on the first two cases with qemu. Some help about how to enable it can be found in [[!template id=man name="boot" section="8"]] (see the "vesa" command). Also, some fixes and improvements to the relevant drivers may only be found in NetBSD-current at the moment.  
   *Prerequisites*: C (basic)      *Prerequisites*: C (basic)  
   *Tag*: research      *Tag*: research  
   *Tag*: howto      *Tag*: howto  
Line 190  Used tags are (categories are not tagged Line 190  Used tags are (categories are not tagged
   *Prerequisite*: C (reading)      *Prerequisite*: C (reading)  
   *Tag*: research    *Tag*: research
   
 * **Task: Howto: Configure npf**: The new NetBSD packet filter npf is a nice and well-scaling way to configure a firewall. Despite being there and functional, it does not have much documentation.    * **Task: Howto: Configure npf**: The new NetBSD packet filter npf is a nice and well-scaling way to configure a firewall. Despite being there and functional, there is not a step-by-step introduction to how configure it.
   The manpage of npf.conf(5) gives an introduction, but nothing that could be used as a howto: [npf.conf(5)](http://netbsd.gw.com/cgi-bin/man-cgi?npf.conf+5+NetBSD-current). Also refer to the examples in /usr/share/examples/npf.     The manpage of [[!template id=man name="npf.conf" section="5"]] gives an introduction, but nothing that could be used as a howto: (http://netbsd.gw.com/cgi-bin/man-cgi?npf.conf+5+NetBSD-current). Also refer to the examples in /usr/share/examples/npf. 
   The howto should contain a step-by-step introduction about how npf works, but also an introduction to the technical aspects of npf itself: What kind of rules and tables are there, how they are applied, etc.      The howto should contain a step-by-step introduction about how npf works, but also an introduction to the technical aspects of npf itself: What kind of rules and tables are there, how they are applied, etc.  
   There is already a [howto by rmind](http://www.netbsd.org/~rmind/pub/npf_manual_netbsd_6.pdf), this would have to be converted and checked against errors, and extended.      There is already a [howto by rmind](https://www.netbsd.org/~rmind/npf/), this would have to be checked against errors, updated if needed and extended.  
   *Tag*: howto      *Tag*: howto  
   *Tag*: network    *Tag*: network
   
Line 209  Used tags are (categories are not tagged Line 209  Used tags are (categories are not tagged
   *Tag*: ui      *Tag*: ui  
   *Tag*: research    *Tag*: research
   
 * **Task: Document the installation of the DeforaOS desktop environment**: The DeforaOS desktop is an alternative for a lightweight desktop environment, and is already packaged in NetBSD (via pkgsrc-wip, as the wip/deforaos-desktop meta package). It could use more documentation though, including how to configure it properly.  * **Task: Document the installation of the DeforaOS desktop environment**: The DeforaOS desktop is an alternative for a lightweight desktop environment, and is already packaged in NetBSD ([[!template id=pkg category="meta-pkgs" name="deforaos-desktop"]]) and via pkgsrc-wip. It could use more documentation though, including how to configure it properly.
   Bug reports will also be welcome of course, even more so with fixes.    Bug reports will also be welcome of course, even more so with fixes.
   *Tag*: ui    *Tag*: ui
   *Tag*: research    *Tag*: research
Line 221  Used tags are (categories are not tagged Line 221  Used tags are (categories are not tagged
   *Tag*: research    *Tag*: research
   
   
 * **Task: Describe how NetBSD boots**: Build NetBSD on any system (especially non-NetBSD) and try to create a bootable medium without using makefs(8) or integrated wrappers.    * **Task: Describe how NetBSD boots**: Build NetBSD on any system (especially non-NetBSD) and try to create a bootable medium without using [[!template id=man name="makefs" category="8"]] or integrated wrappers.
   Creating a bootable disk is possible, but difficult and there is no comprehensive information about this. You have to try much until you get the real results.      Creating a bootable disk is possible, but difficult and there is no comprehensive information about this. You have to try much until you get the real results.  
   The affected tools are    The affected tools are
   * fdisk(8)    * [[!template id=man name="fdisk" category="8"]]
   * installboot(8)    * [[!template id=man name="installboot" category="8"]]
   * disklabel(8)    * [[!template id=man name="disklabel" category="8"]]
   * gpt(8)    * [[!template id=man name="gpt" category="8"]]
   
   In the end of this task, a small howto and some corrections for the manpages of the affected tools should be there.      In the end of this task, a small howto and some corrections for the manpages of the affected tools should be there.  
   *Tag*: system      *Tag*: system  
Line 236  Used tags are (categories are not tagged Line 236  Used tags are (categories are not tagged
 ### Documentation  ### Documentation
   
 * **Task: Describe how to boot NetBSD on a gpt disk**: Currently, NetBSD supports booting from a gpt partition, but you cannot know how.    * **Task: Describe how to boot NetBSD on a gpt disk**: Currently, NetBSD supports booting from a gpt partition, but you cannot know how.  
   This task is about creating documentation how to use the tool gpt(8) and maybe installboot(8) how to create GPT labels, how they interact with MBRs as created by fdisk(8), how wedges work on this, and how you would make it bootable.      This task is about creating documentation how to use the tool [[!template id=man name="gpt" section="8"]] and maybe [[!template id=man name="installboot" section="8"]] how to create GPT labels, how they interact with MBRs as created by [[!template id=man name="fdisk" category="8"]], how wedges work on this, and how you would make it bootable.  
   You should also describe which problems you have and what people might edge on when trying to create a gpt-bootable disk.      You should also describe which problems you have and what people might edge on when trying to create a gpt-bootable disk.  
   *Tag*: howto      *Tag*: howto  
   *Tag*: system    *Tag*: system
Line 248  Used tags are (categories are not tagged Line 248  Used tags are (categories are not tagged
   *Tag*: system      *Tag*: system  
   *Tag*: service    *Tag*: service
   
 * **Task: Howto: Encrypt the hard disk with NetBSD**: NetBSD has its very nice cryptographic device driver cgd. Apart from being already described in the [guide](http://netbsd.org/docs/guide/en/chap-cgd.html).    * **Task: Howto: Encrypt the hard disk with NetBSD**: NetBSD has its very nice cryptographic device driver [[!template id=man name="cgd" category="4"]]. Apart from being already described in the [guide](http://netbsd.org/docs/guide/en/chap-cgd.html).  
   An explicit howto how to do this (in short) and how to do this during the installation, is the issue of this task.      An explicit howto how to do this (in short) and how to do this during the installation, is the issue of this task.  
   Though cgd will be in sysinst for the next version of NetBSD, the current ones are still without, so there should be a special emphasis of how to add cgd during system installation.      Though cgd will be in sysinst for the next version of NetBSD, the current ones are still without, so there should be a special emphasis of how to add cgd during system installation.  
   Note that support for full-disk encryption has been introduced in NetBSD-current, in the form of a ramdisk (cgdroot.kmod). It still lacks official documentation at the moment, but was detailed [on the mailing-lists](http://mail-index.netbsd.org/current-users/2013/03/thread2.html#022311).      Note that support for full-disk encryption has been introduced in NetBSD-current, in the form of a ramdisk (cgdroot.kmod). It still lacks official documentation at the moment, but was detailed [on the mailing-lists](http://mail-index.netbsd.org/current-users/2013/03/thread2.html#022311).  
Line 272  Used tags are (categories are not tagged Line 272  Used tags are (categories are not tagged
   *Tag*: network      *Tag*: network  
   *Tag*: service    *Tag*: service
   
 * **Task: Describe how to backup NetBSD**: Though NetBSD is much like other Unixes in this respect, backup is still something you should consider specially for every operating system. Which tools are available in the base distribution for backupping, like dump(8) and restore(8)?    * **Task: Describe how to backup NetBSD**: Though NetBSD is much like other Unixes in this respect, backup is still something you should consider specially for every operating system. Which tools are available in the base distribution for backupping, like [[!template id=man name="dump" section="8"]] and [[!template id=man name="restore" section="8"]]?  
   Which one suits better, pax(1), dump(8) or even just rsync or other special backup solutions? What are their use cases?      Which one suits better, [[!template id=man name="pax" section="1"]], [[!template id=man name="dump" section="8"]] or even just rsync or other special backup solutions? What are their use cases?  
   What is a full, a differential, an incremental backup? What is the estimated space usage of them, depending on the backups?      What is a full, a differential, an incremental backup? What is the estimated space usage of them, depending on the backups?  
   How would you restore your system after a crash, which steps have to be taken to get a working system again?      How would you restore your system after a crash, which steps have to be taken to get a working system again?  
   After reading the resulting article, the reader should be able to decide for a backup scheme and solution and implement it without further research.      After reading the resulting article, the reader should be able to decide for a backup scheme and solution and implement it without further research.  
Line 281  Used tags are (categories are not tagged Line 281  Used tags are (categories are not tagged
   *Tag*: system      *Tag*: system  
   *Tag*: research    *Tag*: research
   
 * **Task: Describe usage of Multicast DNS in NetBSD**: We have the "Multicast and Unicast DNS daemon" (mdnsd(8)) in NetBSD, which can also be activated directly from the installer (which is one of a few chosen services).    * **Task: Describe usage of Multicast DNS in NetBSD**: We have the "Multicast and Unicast DNS daemon" ([[!template id=man name="mdnsd" section="8"]]) in NetBSD, which can also be activated directly from the installer (which is one of a few chosen services).  
   To be really able to use it, you have to know what it is and what you can do with it.      To be really able to use it, you have to know what it is and what you can do with it.  
   So, your task is to research what Multicast DNS (or zeroconf) is, and document which of the features is already usable with NetBSD and which ones can be installed via pkgsrc, which ones are completely missing (but relevant).      So, your task is to research what Multicast DNS (or zeroconf) is, and document which of the features is already usable with NetBSD and which ones can be installed via pkgsrc, which ones are completely missing (but relevant).  
   The mdnsd(8) manpage and the Wikipedia page for zeroconf might be a good start for this.      The [[!template id=man name="mdnsd" section="8"]] manpage and the Wikipedia page for zeroconf might be a good start for this.  
   *Tag*: howto      *Tag*: howto  
   *Tag*: system      *Tag*: system  
   *Tag*: service      *Tag*: service  
Line 333  Used tags are (categories are not tagged Line 333  Used tags are (categories are not tagged
   
 ### User interface, user experience  ### User interface, user experience
   
 * **Task: Redesign interface of disklabel(8)**  * **Task: Redesign interface of [[!template id=man name="disklabel" section="8"]]**
   It should be possible and easy to use disklabel(8) in command-line mode, so that the disklabel(8) could be scriptable.    It should be possible and easy to use [[!template id=man name="disklabel" section="8"]in command-line mode, so that the [[!template id=man name="disklabel" section="8"]] could be scriptable.
   One of examples of better interface is gpt(8).    One of examples of better interface is [[!template id=man name="gpt" section="8"]].
   *Tags*: ui, research    *Tags*: ui, research
   
 * **Task: Redesign interface of fdisk(8) to make it closer to gpt(8)**  * **Task: Redesign interface of [[!template id=man name="fdisk" section="8"]] to make it closer to [[!template id=man name="gpt" section="8"]]**
   It should be possible and easy to use fdisk(8) in command-line mode, so that the fdisk(8) could be scriptable.    It should be possible and easy to use [[!template id=man name="fdisk" section="8"]] in command-line mode, so that the [[!template id=man name="fdisk" section="8"]] could be scriptable.
   One of examples of better interface is gpt(8).    One of examples of better interface is [[!template id=man name="gpt" section="8"]].
   *Tags*: ui, research    *Tags*: ui, research
   
 * **Task: Window manager selection**  * **Task: Window manager selection**

Removed from v.1.68  
changed lines
  Added in v.1.69


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb