File:  [NetBSD Developer Wiki] / wikisrc / projects / code-in.mdwn
Revision 1.19: download - view: text, annotated - select for diffs
Fri Oct 22 10:41:00 2010 UTC (10 years, 10 months ago) by asau
Branches: MAIN
CVS tags: HEAD
More on thin client.

    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: Try out various desktop scenarios: KDE, GNOME, XFCE.
   21: 
   22: Install software, configure, document, tune.
   23: 
   24: Make it good-looking, I mean _really_ good-looking.
   25: 
   26: Describe problems you meet, sort them out (file problem reports as necessary).
   27: 
   28: ### Document time and calendar formats and functions and their relations (Doc, QA)
   29: 
   30: We have "time_t", "struct timespec", "struct timeval", "struct tm", and so on.
   31: 
   32: Document all of them as time(5) so that one could have overview of those.
   33: 
   34: We have time zone sensitive and time zone independent representations too,
   35: figuring out conversions between local time and UTC from manual pages is hard.
   36: This is to be addressed too.
   37: 
   38: This requires some programming skills, some knowledge of C in particular.
   39: 
   40: ### Embedded project (Doc, Research)
   41: 
   42: Describe and document some embedded usage,
   43: e.g. making NetBSD run on machine without:
   44: 
   45: * keyboard and video ports
   46: * above and serial port
   47: 
   48: #### Possible embedded usage
   49: 
   50: * Thin client: rdesktop or vnc to hardcoded server
   51: * Home or SOHO router (wireless access point)
   52: * Home or SOHO file storage
   53: * Home or SOHO print server
   54: 
   55: It is preferred if NetBSD installation uses the least possible resources.
   56: (E.g. try making it boot over network, or consider that it is to be made so in future.)
   57: 
   58: #### More notes on embedded systems
   59: 
   60: ##### Router
   61: 
   62: Take any SOHO router as example.
   63: 
   64: Adapt pfSense? Similar software?
   65: 
   66: ### Thin client / Kiosk
   67: 
   68: Build thin client.
   69: 
   70: * install and configure graphical system (X server)
   71: * make your NetBSD autologin and launch some application (imagine a kind of kiosk or game console)
   72: * make your NetBSD ask login in graphical mode
   73: * make your NetBSD autologin and launch graphical application
   74: * configure and install VNC server
   75: * make your NetBSD connect to VNC server
   76: * configure and install RDP server
   77: * make your NetBSD connect to RDP server
   78: * boot your client over network
   79: * make your client boot from CD or USB Flash, or CF card
   80: 
   81: It is preferred if NetBSD installation uses the least possible resources.
   82: 
   83: ### File server
   84: Build personal file server.
   85: 
   86: Ideally, it should present HTTP(S), FTP(S), and SMB access to data.
   87: Consider other access methods (SFTP, NFS, AFS/CODA, AppleTalk).
   88: 
   89: Ideally, it should implement web interface.
   90: 
   91: Bonus points if you make it work like Apple Time Capsule (already running NetBSD) or better,
   92: e.g. implement periodic file system snapshots, 
   93: 
   94: Separate tasks:
   95: 
   96: * provide access to your files via HTTP
   97: * provide access to your files via FTP
   98: * provide access to your files via SMB
   99: * provide access to your files via NFS
  100: * provide access to your files via SFTP
  101: * create periodic file system snapshots on your NetBSD
  102: * learn how to perform automatic periodic tasks
  103: * make your NetBSD perform periodic file system snapshots
  104: * try doing anything/everything above on headless system
  105: * try automatising anything/everything above
  106: 
  107: ### Backup and Recovery (Research, Doc, QA, Code)
  108: 
  109: #### Incremental backup scenario
  110: 
  111: Document it. Try different plans.
  112: 
  113: #### Recovery from bare iron (QA, Doc, Code)
  114: 
  115: Consider installation recovery scenario from bare system to configured server.
  116: 
  117: Try automatizing it.
  118: 
  119: #### Unattended installation (Research, Code)
  120: 
  121: Like above only using installation tools.
  122: 
  123: 
  124: ### Live USB Flash image (Doc, Outreach, Code)
  125: 
  126: Perform and document how one does it.
  127: 
  128: Script it if possible.
  129: 
  130: Script cross-buildin if possible.
  131: 
  132: Consider thin client.
  133: 
  134: ### Installation tools (QA, Research, Doc, Code)
  135: 
  136: Try creating bootable media using fdisk, disklabel, installboot.
  137: Decribe experience, propose improvements, implement them.
  138: 
  139: Build NetBSD on any other OS at your choice: FreeBSD, Linux, NT, or OSX.
  140: 
  141: Try creating bootable media using tools built on another OS.
  142: Decribe experience, propose improvements, implement them.
  143: 
  144: Tools affected
  145:  
  146: * fdisk
  147: * disklabel
  148: * installboot
  149: * perhaps others
  150: 
  151: For hardcore hackers (those wishing to learn how the stuff works).
  152: 
  153: ### System Library project (Code, Doc, QA, Research)
  154: 
  155: Add a function call to a system library.
  156: The function call does not need to be immediately useful (ideally we should provide several
  157: suggestions) and in fact should not be very complex as the project contains the following
  158: tasks with varying skills
  159: 
  160: * produce C code of function
  161: * bump library minor version
  162: * write nroff manpage
  163: * handle Makefile changes
  164: * handle set list changes
  165: * write ATF testcase
  166: 
  167: ### Tests projects (Code, QA)
  168: 
  169: Create ATF tests for a section of library routines, such as (please add.. )
  170: 
  171: * string(3)
  172: * bluetooth(3)
  173: * sdp_data(3)
  174: 
  175: ### PR projects (Code, Research)
  176: 
  177: Create a fix for PR#...
  178: 
  179: (please list any PRs that you think are easily fixable but just require a bit
  180: of time that you don't have)
  181: 

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