1: # Google Code-In (GCI) project ideas
5: ## Goals as stated by Google
6: 1. Code: Tasks related to writing or refactoring code
7: 1. Documentation: Tasks related to creating/editing documents
8: 1. Outreach: Tasks related to community management and outreach/marketing
9: 1. Quality Assurance: Tasks related to testing and ensuring code is of high quality
10: 1. Research: Tasks related to studying a problem and recommending solutions
11: 1. Training: Tasks related to helping others learn more
12: 1. Translation: Tasks related to localization
13: 1. User Interface: Tasks related to user experience research or user interface design and interaction
15: ## Proposed areas
16: ### Desktop project (QA, UI, Doc)
18: Try out various desktop scenarios: KDE, GNOME, XFCE.
20: Install software, configure, document, tune.
22: Make it good-looking, I mean _really_ good-looking.
24: Describe problems you meet, sort them out (file problem reports as necessary).
26: ### Document time and calendar formats and functions and their relations (Doc, QA)
28: We have "time_t", "struct timespec", "struct timeval", "struct tm", and so on.
30: Document all of them as time(5) so that one could have overview of those.
32: We have time zone sensitive and time zone independent representations too,
33: figuring out conversions between local time and UTC from manual pages is hard.
34: This is to be addressed too.
36: This requires some programming skills, some knowledge of C in particular.
38: ### Embedded project (Doc, Research)
40: Describe and document some embedded usage,
41: e.g. making NetBSD run on machine without:
43: * keyboard and video ports
44: * above and serial port
46: #### Possible embedded usage
48: * Thin client: rdesktop or vnc to hardcoded server
49: * Home or SOHO router (wireless access point)
50: * Home or SOHO file storage
51: * Home or SOHO print server
53: It is preferred if NetBSD installation uses the least possible resources.
54: (E.g. try making it boot over network, or consider that it is to be made so in future.)
56: #### More notes on embedded systems
57: ##### File server
58: It should present HTTP(S), FTP(S), and SMB access to data (must),
59: consider other access methods (SFTP, NFS, AFS/CODA, AppleTalk).
61: It should implement web interface.
63: Bonus points if you make it work like Apple Time Capsule (already running NetBSD) or better,
64: e.g. implement periodic file system snapshots,
66: ##### Router
68: Take any SOHO router as example.
70: Adapt pfSense? Similar software?
72: ### Unattended installation (Research, Doc, Code)
74: Consider installation recovery scenario from bare system to configured server.
76: ### Live USB Flash image (Doc, Outreach, Code)
78: Perform and document how one does it.
80: Script it if possible.
82: Script cross-buildin if possible.
84: Consider thin client.
86: ### Make fdisk, installboot and other similar tools work on other systems (Code)
88: E.g. make it possible to create bootable media when running FreeBSD or Linux (NT or OSX are fine too).
90: For hardcore hackers.
92: ### System Library project (Code, Doc, QA, Research)
94: Add a function call to a system library.
95: The function call does not need to be immediately useful (ideally we should provide several
96: suggestions) and in fact should not be very complex as the project contains the following
97: tasks with varying skills
99: * produce C code of function
100: * bump library minor version
101: * write nroff manpage
102: * handle Makefile changes
103: * handle set list changes
104: * write ATF testcase
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb