Annotation of wikisrc/projects/code-in.mdwn, revision 1.26

1.1       asau        1: # Google Code-In (GCI) project ideas
                      2: 
1.25      mbalmer     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: 
1.26    ! asau       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: 
1.25      mbalmer    14: 
1.1       asau       15: <http://code.google.com/opensource/gci/2010-11/index.html>
                     16: 
1.14      plunky     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: 
1.1       asau       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: 
1.21      asau       32: #### Generic desktop
                     33: 
1.1       asau       34: Try out various desktop scenarios: KDE, GNOME, XFCE.
1.2       asau       35: 
1.1       asau       36: Install software, configure, document, tune.
1.2       asau       37: 
1.1       asau       38: Make it good-looking, I mean _really_ good-looking.
1.2       asau       39: 
1.1       asau       40: Describe problems you meet, sort them out (file problem reports as necessary).
                     41: 
1.21      asau       42: #### Home theater (QA, Doc)
                     43: 
                     44: Try simulating music player and/or video player.
                     45: 
                     46: See also in embedded projects.
                     47: 
1.1       asau       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.
1.5       asau       51: 
1.1       asau       52: Document all of them as time(5) so that one could have overview of those.
                     53: 
1.5       asau       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: 
1.1       asau       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:
1.2       asau       64: 
1.1       asau       65: * keyboard and video ports
                     66: * above and serial port
                     67: 
1.4       asau       68: #### Possible embedded usage
1.1       asau       69: 
1.4       asau       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: 
1.6       asau       78: #### More notes on embedded systems
1.17      asau       79: 
                     80: ##### Router
                     81: 
                     82: Take any SOHO router as example.
                     83: 
                     84: Adapt pfSense? Similar software?
                     85: 
1.21      asau       86: ##### Home theater
                     87: 
                     88: Create music and/or video player. Perhaps desktop.
                     89: 
1.18      asau       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
1.19      asau      103: * make your client boot from CD or USB Flash, or CF card
1.18      asau      104: 
                    105: It is preferred if NetBSD installation uses the least possible resources.
                    106: 
1.17      asau      107: ### File server
1.16      asau      108: Build personal file server.
1.6       asau      109: 
1.16      asau      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.
1.6       asau      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: 
1.16      asau      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
1.17      asau      128: * try doing anything/everything above on headless system
                    129: * try automatising anything/everything above
1.6       asau      130: 
1.23      asau      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: 
1.15      asau      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)
1.4       asau      144: 
                    145: Consider installation recovery scenario from bare system to configured server.
1.1       asau      146: 
1.15      asau      147: Try automatizing it.
                    148: 
                    149: #### Unattended installation (Research, Code)
                    150: 
                    151: Like above only using installation tools.
                    152: 
                    153: 
1.1       asau      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: 
1.7       asau      162: Consider thin client.
                    163: 
1.11      asau      164: ### Installation tools (QA, Research, Doc, Code)
1.1       asau      165: 
1.11      asau      166: Try creating bootable media using fdisk, disklabel, installboot.
                    167: Decribe experience, propose improvements, implement them.
1.7       asau      168: 
1.11      asau      169: Build NetBSD on any other OS at your choice: FreeBSD, Linux, NT, or OSX.
1.12      asau      170: 
1.11      asau      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).
1.8       plunky    182: 
1.21      asau      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: 
1.22      asau      191: ### Build system QA (QA, Code, Research)
                    192: 
                    193: Check all MK* variables, check how they affect builds,
                    194: suggest improvements or removal.
                    195: 
1.8       plunky    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
1.9       plunky    209: 
                    210: ### Tests projects (Code, QA)
                    211: 
1.24      plunky    212: Create ATF tests for a section of library routines, such as:
1.9       plunky    213: 
1.24      plunky    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..)
1.10      plunky    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: 
1.20      asau      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.

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