File:  [NetBSD Developer Wiki] / wikisrc / projects / code-in.mdwn
Revision 1.27: download - view: text, annotated - select for diffs
Sat Oct 13 19:43:47 2012 UTC (8 years, 11 months ago) by spz
Branches: MAIN
CVS tags: HEAD
add project proposal

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

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