# Google Code-In (GCI) project ideas
## Goals as stated by Google
1. Code: Tasks related to writing or refactoring code
1. Documentation: Tasks related to creating/editing documents
1. Outreach: Tasks related to community management and outreach/marketing
1. Quality Assurance: Tasks related to testing and ensuring code is of high quality
1. Research: Tasks related to studying a problem and recommending solutions
1. Training: Tasks related to helping others learn more
1. Translation: Tasks related to localization
1. User Interface: Tasks related to user experience research or user interface design and interaction
## Proposed areas
### Desktop project (QA, UI, Doc)
Try out various desktop scenarios: KDE, GNOME, XFCE.
Install software, configure, document, tune.
Make it good-looking, I mean _really_ good-looking.
Describe problems you meet, sort them out (file problem reports as necessary).
### Document time and calendar formats and functions and their relations (Doc, QA)
We have "time_t", "struct timespec", "struct timeval", "struct tm", and so on.
Document all of them as time(5) so that one could have overview of those.
We have time zone sensitive and time zone independent representations too,
figuring out conversions between local time and UTC from manual pages is hard.
This is to be addressed too.
This requires some programming skills, some knowledge of C in particular.
### Embedded project (Doc, Research)
Describe and document some embedded usage,
e.g. making NetBSD run on machine without:
* keyboard and video ports
* above and serial port
#### Possible embedded usage
* Thin client: rdesktop or vnc to hardcoded server
* Home or SOHO router (wireless access point)
* Home or SOHO file storage
* Home or SOHO print server
It is preferred if NetBSD installation uses the least possible resources.
(E.g. try making it boot over network, or consider that it is to be made so in future.)
#### More notes on embedded systems
##### File server
It should present HTTP(S), FTP(S), and SMB access to data (must),
consider other access methods (SFTP, NFS, AFS/CODA, AppleTalk).
It should implement web interface.
Bonus points if you make it work like Apple Time Capsule (already running NetBSD) or better,
e.g. implement periodic file system snapshots,
##### Router
Take any SOHO router as example.
Adapt pfSense? Similar software?
### Unattended installation (Research, Doc, Code)
Consider installation recovery scenario from bare system to configured server.
### Live USB Flash image (Doc, Outreach, Code)
Perform and document how one does it.
Script it if possible.
Script cross-buildin if possible.
Fix fdisk, installboot and other tools as needed (for hardcore hackers).
Consider thin client.