1: # Google Code-In (GCI) project ideas
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?
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
17: ## Proposed areas
18: ### Desktop project (QA, UI, Doc)
20: Try out various desktop scenarios: KDE, GNOME, XFCE.
22: Install software, configure, document, tune.
24: Make it good-looking, I mean _really_ good-looking.
26: Describe problems you meet, sort them out (file problem reports as necessary).
28: ### Document time and calendar formats and functions and their relations (Doc, QA)
30: We have "time_t", "struct timespec", "struct timeval", "struct tm", and so on.
32: Document all of them as time(5) so that one could have overview of those.
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.
38: This requires some programming skills, some knowledge of C in particular.
40: ### Embedded project (Doc, Research)
42: Describe and document some embedded usage,
43: e.g. making NetBSD run on machine without:
45: * keyboard and video ports
46: * above and serial port
48: #### Possible embedded usage
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
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.)
58: #### More notes on embedded systems
60: ##### Router
62: Take any SOHO router as example.
64: Adapt pfSense? Similar software?
66: ### Thin client / Kiosk
68: Build thin client.
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
81: It is preferred if NetBSD installation uses the least possible resources.
83: ### File server
84: Build personal file server.
86: Ideally, it should present HTTP(S), FTP(S), and SMB access to data.
87: Consider other access methods (SFTP, NFS, AFS/CODA, AppleTalk).
89: Ideally, it should implement web interface.
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,
94: Separate tasks:
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
107: ### Backup and Recovery (Research, Doc, QA, Code)
109: #### Incremental backup scenario
111: Document it. Try different plans.
113: #### Recovery from bare iron (QA, Doc, Code)
115: Consider installation recovery scenario from bare system to configured server.
117: Try automatizing it.
119: #### Unattended installation (Research, Code)
121: Like above only using installation tools.
124: ### Live USB Flash image (Doc, Outreach, Code)
126: Perform and document how one does it.
128: Script it if possible.
130: Script cross-buildin if possible.
132: Consider thin client.
134: ### Installation tools (QA, Research, Doc, Code)
136: Try creating bootable media using fdisk, disklabel, installboot.
137: Decribe experience, propose improvements, implement them.
139: Build NetBSD on any other OS at your choice: FreeBSD, Linux, NT, or OSX.
141: Try creating bootable media using tools built on another OS.
142: Decribe experience, propose improvements, implement them.
144: Tools affected
146: * fdisk
147: * disklabel
148: * installboot
149: * perhaps others
151: For hardcore hackers (those wishing to learn how the stuff works).
153: ### System Library project (Code, Doc, QA, Research)
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
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
167: ### Tests projects (Code, QA)
169: Create ATF tests for a section of library routines, such as (please add.. )
171: * string(3)
172: * bluetooth(3)
173: * sdp_data(3)
175: ### PR projects (Code, Research)
177: Create a fix for PR#...
179: (please list any PRs that you think are easily fixable but just require a bit
180: of time that you don't have)
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb