File:  [NetBSD Developer Wiki] / wikisrc / projects / code-in.mdwn
Revision 1.24: download - view: text, annotated - select for diffs
Wed Nov 3 16:29:07 2010 UTC (10 years, 10 months ago) by plunky
Branches: MAIN
CVS tags: HEAD
add a bunch of libc sections suitable for ATF tests
also use man template

    1: # Google Code-In (GCI) project ideas
    2: 
    3: <http://code.google.com/opensource/gci/2010-11/index.html>
    4: 
    5: Google ran a similar event a couple of years ago, see <http://code.google.com/opensource/ghop/2007-8/> for details and perhaps snitch some ideas from there?
    6: 
    7: ## Goals as stated by Google
    8: 1. Code: Tasks related to writing or refactoring code
    9: 1. Documentation: Tasks related to creating/editing documents
   10: 1. Outreach: Tasks related to community management and outreach/marketing
   11: 1. Quality Assurance: Tasks related to testing and ensuring code is of high quality
   12: 1. Research: Tasks related to studying a problem and recommending solutions
   13: 1. Training: Tasks related to helping others learn more
   14: 1. Translation: Tasks related to localization
   15: 1. User Interface: Tasks related to user experience research or user interface design and interaction
   16: 
   17: ## Proposed areas
   18: ### Desktop project (QA, UI, Doc)
   19: 
   20: #### Generic desktop
   21: 
   22: Try out various desktop scenarios: KDE, GNOME, XFCE.
   23: 
   24: Install software, configure, document, tune.
   25: 
   26: Make it good-looking, I mean _really_ good-looking.
   27: 
   28: Describe problems you meet, sort them out (file problem reports as necessary).
   29: 
   30: #### Home theater (QA, Doc)
   31: 
   32: Try simulating music player and/or video player.
   33: 
   34: See also in embedded projects.
   35: 
   36: ### Document time and calendar formats and functions and their relations (Doc, QA)
   37: 
   38: We have "time_t", "struct timespec", "struct timeval", "struct tm", and so on.
   39: 
   40: Document all of them as time(5) so that one could have overview of those.
   41: 
   42: We have time zone sensitive and time zone independent representations too,
   43: figuring out conversions between local time and UTC from manual pages is hard.
   44: This is to be addressed too.
   45: 
   46: This requires some programming skills, some knowledge of C in particular.
   47: 
   48: ### Embedded project (Doc, Research)
   49: 
   50: Describe and document some embedded usage,
   51: e.g. making NetBSD run on machine without:
   52: 
   53: * keyboard and video ports
   54: * above and serial port
   55: 
   56: #### Possible embedded usage
   57: 
   58: * Thin client: rdesktop or vnc to hardcoded server
   59: * Home or SOHO router (wireless access point)
   60: * Home or SOHO file storage
   61: * Home or SOHO print server
   62: 
   63: It is preferred if NetBSD installation uses the least possible resources.
   64: (E.g. try making it boot over network, or consider that it is to be made so in future.)
   65: 
   66: #### More notes on embedded systems
   67: 
   68: ##### Router
   69: 
   70: Take any SOHO router as example.
   71: 
   72: Adapt pfSense? Similar software?
   73: 
   74: ##### Home theater
   75: 
   76: Create music and/or video player. Perhaps desktop.
   77: 
   78: ### Thin client / Kiosk
   79: 
   80: Build thin client.
   81: 
   82: * install and configure graphical system (X server)
   83: * make your NetBSD autologin and launch some application (imagine a kind of kiosk or game console)
   84: * make your NetBSD ask login in graphical mode
   85: * make your NetBSD autologin and launch graphical application
   86: * configure and install VNC server
   87: * make your NetBSD connect to VNC server
   88: * configure and install RDP server
   89: * make your NetBSD connect to RDP server
   90: * boot your client over network
   91: * make your client boot from CD or USB Flash, or CF card
   92: 
   93: It is preferred if NetBSD installation uses the least possible resources.
   94: 
   95: ### File server
   96: Build personal file server.
   97: 
   98: Ideally, it should present HTTP(S), FTP(S), and SMB access to data.
   99: Consider other access methods (SFTP, NFS, AFS/CODA, AppleTalk).
  100: 
  101: Ideally, it should implement web interface.
  102: 
  103: Bonus points if you make it work like Apple Time Capsule (already running NetBSD) or better,
  104: e.g. implement periodic file system snapshots, 
  105: 
  106: Separate tasks:
  107: 
  108: * provide access to your files via HTTP
  109: * provide access to your files via FTP
  110: * provide access to your files via SMB
  111: * provide access to your files via NFS
  112: * provide access to your files via SFTP
  113: * create periodic file system snapshots on your NetBSD
  114: * learn how to perform automatic periodic tasks
  115: * make your NetBSD perform periodic file system snapshots
  116: * try doing anything/everything above on headless system
  117: * try automatising anything/everything above
  118: 
  119: ### Bluetooth access point (Doc, QA, Code)
  120: 
  121: * connect NetBSD to your phone (dial out)
  122: * connect your phone or other computer to NetBSD via bluetooth
  123: * provide different services via bluetooth connection ("push", network)
  124: 
  125: ### Backup and Recovery (Research, Doc, QA, Code)
  126: 
  127: #### Incremental backup scenario
  128: 
  129: Document it. Try different plans.
  130: 
  131: #### Recovery from bare iron (QA, Doc, Code)
  132: 
  133: Consider installation recovery scenario from bare system to configured server.
  134: 
  135: Try automatizing it.
  136: 
  137: #### Unattended installation (Research, Code)
  138: 
  139: Like above only using installation tools.
  140: 
  141: 
  142: ### Live USB Flash image (Doc, Outreach, Code)
  143: 
  144: Perform and document how one does it.
  145: 
  146: Script it if possible.
  147: 
  148: Script cross-buildin if possible.
  149: 
  150: Consider thin client.
  151: 
  152: ### Installation tools (QA, Research, Doc, Code)
  153: 
  154: Try creating bootable media using fdisk, disklabel, installboot.
  155: Decribe experience, propose improvements, implement them.
  156: 
  157: Build NetBSD on any other OS at your choice: FreeBSD, Linux, NT, or OSX.
  158: 
  159: Try creating bootable media using tools built on another OS.
  160: Decribe experience, propose improvements, implement them.
  161: 
  162: Tools affected
  163:  
  164: * fdisk
  165: * disklabel
  166: * installboot
  167: * perhaps others
  168: 
  169: For hardcore hackers (those wishing to learn how the stuff works).
  170: 
  171: ### Audio/Video broadcasting (network radio/TV broadcasting)
  172: 
  173: Build audio and/or video broadcasting server.
  174: 
  175: ### Telephony
  176: 
  177: Become VoIP provider!
  178: 
  179: ### Build system QA (QA, Code, Research)
  180: 
  181: Check all MK* variables, check how they affect builds,
  182: suggest improvements or removal.
  183: 
  184: ### System Library project (Code, Doc, QA, Research)
  185: 
  186: Add a function call to a system library.
  187: The function call does not need to be immediately useful (ideally we should provide several
  188: suggestions) and in fact should not be very complex as the project contains the following
  189: tasks with varying skills
  190: 
  191: * produce C code of function
  192: * bump library minor version
  193: * write nroff manpage
  194: * handle Makefile changes
  195: * handle set list changes
  196: * write ATF testcase
  197: 
  198: ### Tests projects (Code, QA)
  199: 
  200: Create ATF tests for a section of library routines, such as:
  201: 
  202: * [[!template id=man name="atomic_ops" section="3"]]
  203: * [[!template id=man name="bitstring" section="3"]]
  204: * [[!template id=man name="bluetooth" section="3"]]
  205: * [[!template id=man name="cdbr" section="3"]] and [[!template id=man name="cdbw" section="3"]]
  206: * [[!template id=man name="inet" section="3"]] and [[!template id=man name="inet_net" section="3"]]
  207: * [[!template id=man name="ethers" section="3"]], [[!template id=man name="iso_addr" section="3"]] and [[!template id=man name="link_addr" section="3"]]
  208: * [[!template id=man name="regex" section="3"]]
  209: * [[!template id=man name="sdp_data" section="3"]]
  210: * [[!template id=man name="ssp" section="3"]]
  211: * [[!template id=man name="string" section="3"]]
  212: * [[!template id=man name="strings" section="3"]]
  213: * [[!template id=man name="strtod" section="3"]], [[!template id=man name="strtol" section="3"]], [[!template id=man name="strtoul" section="3"]] and [[!template id=man name="strtoull" section="3"]]
  214: * [[!template id=man name="uuid" section="3"]]
  215: * (please add..)
  216: 
  217: ### PR projects (Code, Research)
  218: 
  219: Create a fix for PR#...
  220: 
  221: (please list any PRs that you think are easily fixable but just require a bit
  222: of time that you don't have)
  223: 
  224: ### Documentation projects (Doc, Outreach)
  225: 
  226: #### Save all useful information from closed wiki.NetBSD.SE
  227: 
  228: Go over NetBSD.SE snapshot, check pages for valid and useful information,
  229: move all relevant bits to to-be-official NetBSD wiki.

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