Google Code-in Ideas 2017
This is the brainstorm page for the Google Code-In contest for 2017. As such, some or many of these may not end up being in our final released list of tasks that end up in Google Code-In. If you are a student, DO NOT start working on these ahead of time as they are ALL subject to change.
Our aim for this year will be to help bring Haiku closer to a Beta 1 release. This will be a good chance for you to see your work end up in a released product! We hope to have a large number of fun tasks this year. Whether this is your first time learning about Haiku, or your second or third time competing in the Code-In, we will have tasks suited to a variety of skill levels.
For Haiku Users and Developers, this is your chance to suggest some task ideas that students would be able to complete in about 2-4 hours of work time spread out over a few days. You can suggest bigger tasks, but they should be ones such that they could be broken down into smaller parts that fit this 2-4 hour timeline.
General Information
Google has announced that they are going to hold Google Code-In 2017 as disclosed in this blog post.
If you are interested in submitting an idea for a task then you can make one by posting on this topic in our forum.
For students interested in participating in Google Code-In 2017 be sure to read through Google's Getting Started Guide.
1. Code: Tasks related to writing or refactoring code
For coding tasks students should make sure to follow Haiku's coding guidelines.
1.1 Code an app for Haiku (including multi-part tasks)
Example task | Example Skills | Example link | |
---|---|---|---|
X | Code a Password Manager using Haiku's BKeystore | UI design, C++ | Seahorse, Haiku ticket on subject |
X | Code a simple Photo post-production app (red eye remover) | UI design, C++ | |
X | Code an Advanced Download Manager | iGetter, FOLX | |
X | Code a Graphical Profiler/Tracer | KCachegrind, AMD CodeAnalyst, Stackify | |
X | Code a Graphical Crash Reporter | Apple Crash Reporter, Goolge Breakpad (MIT) | |
X | Code a graphical interface for Haiku's RemoteDesktop | RemoteDesktop | |
X | Code a ScreenReader for Haiku | Haiku ticket on subject | |
X | Code a graphical event/syslog viewer | Ticket on subject | |
X | Code a speech recognition app | Ticket on subject | |
X | Code a Haiku notification Center | Ticket on subject | |
Code a Currency Converter | |||
Code a system Dictionary | |||
Code a CountDown/StopWatch/TimeZoneCheck app | |||
X | Code a Action Automation app | Xnee, Apple Automator, Automise | |
Code a Video Manager | cosmos | ||
Code a Subtitle Editor | Gnome Subtitles | ||
Code a Hardware compatibility analysis app | C++, Python | to be used with this web app | |
X | Merge Spider Solitaire and Klondike from previous GCI into a single "card game" app | C++ | |
Code a game of Ishido | C++ | Can use tilesets from BShisen / SDLopan | |
X | Code a MIDI event viewer for debugging MIDI devices and apps | C++ | |
Code an easy to use attribute manager for Haiku | C++ | Tags | |
Code a text document manager takes advantage of metadata | C++ | idocument | |
Merge bknob and bdial into libwalter | C++ | bknob, bdial, LibWalter | |
Improve map application from 2016 Google Code-In | C++ | https://github.com/raefaldhia/Maps | |
Code an SQLite workbench app | C++ | http://sqlitebrowser.org/ | |
. | Code a Haiku screensaver based on Jared Tarbell's work | C++ | http://www.complexification.net/, like Substrate and Neon Lights |
. | Code a Haiku screensaver of your choice | C++ | (add link to past screensavers done by GCI students from past years) |
1.2 Develop a web app, a plugin or fix a issue related to Haiku's web infrastructure
Example task | Example Skills | Example link | |
---|---|---|---|
X | Fix a bug in our web app that records hardware compatibility | Codebase on Github | |
Fix a bug in our documentation translation tool | tickets on trac | ||
Fix a bug in our copy of Pootle | tickets on trac |
1.3 Refactor, clean up or improve Haiku code
Example task | Example Skills | Example link | |
---|---|---|---|
Fix a issue in Mail | Wiki page on Mail | ||
X | Finish the network VirtIO driver for Haiku | C++ | Ticket on subject |
Implement a console/serial VirtIO driver for Haiku | C++ | ||
Add missing devices to our ice1712 driver | C++ | Ticket on subject |
1.4 Fix a broken recipe in haikuports
Many recipes on Haikuports need to be updated to the current format. We are working on bots to autobuild all of these, but there is a lot of work that needs to be done in order for those to work smoothly. This is one place we could use much help, as it is one of the big blockers to the upcoming Beta1 release.
- In particular, software listed in #10267 should be checked and recipes provided where they are still missing.
- We still have a bunch of old format recipes in git, migrating and updating them should be a must, so that the repository is cleaner for bots. (This may be the fix 10 lint failures from GCI 2016 task?)
- Fix an open issue at HaikuPorts https://github.com/haikuports/haikuports/issues Individual tasks will be created for many of these.
1.5 Fix bug listed in Haiku's Trac
Lots of open issues, we will post tasks for specific open Haiku issues.
1.6 Fix bugs or add features to the various Haiku Apps hosted at Haiku Archives
https://github.com/HaikuArchives
150+ Haiku applications, many with open bug reports you can try fixing. Here are some examples:
1.7 Fix issues reported by Coverity and other code checking tools
https://dev.haiku-os.org/wiki/Coverity http://pulkomandy.github.io
1.8 Write recipes for HaikuPorter
Try building other open source apps on Haiku and write a recipe to allow HaikuPorter to build it.
Add new port targets here |
Investigate whether any of the following can be ported to Haiku - Chapel, OpenCV, Open Detection, Octave, Tor, Tiled, MariaDB, Inkscape, TensorFlow, Celestia
1.9 Add scripting interfaces to applications to make it more useful
Scripting is used in Haiku to interact programmatically with applications,like with the hey CLI tool. All apps already support basic scripting through the App Kit, but some would benefit from more specific scripting interfaces.
Applications that needs specific scripting interfaces | ||
---|---|---|
Example app | Example need | |
X | Magnify | Make Magnify controllable by scripting, like zoom factor, and other actions. |
X | MediaPlayer | Expose the current track as a scripting object, possibly reusing SoundPlay's interface. |
1.10 Add accessibility features to applications to make them more useful to disabled people
Haiku already has some applications that could be useful for accessibility, but aren't really tailored with it in mind. The idea is to make them more useful in this context.
Applications that needs accessibility features | ||
---|---|---|
Example app | Example need | |
X | Magnify | Make Magnify follow caret when mouse is not moving. Make Magnify "dockable" to the screen bottom or top. |
2.0 Documentation/Training
Tasks related to creating/editing documents and helping others learn more.
Example task | Example Skills | Example link | |
---|---|---|---|
X | Write an article on how to use unit tests when developing Haiku | English | Ticket on subject |
X | Convert AMD SimNow article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Convert QEMU article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Convert KVM article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Convert VMware Workstation article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Convert VMware Fusion article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Convert Parallels Desktop article to markdown and update | html, markdown | https://github.com/haiku/website |
X | Write an article on how to run Haiku with veertu | English | https://veertu.com |
X | Write an article on how to run Haiku with ProxmoxVE | English | http://www.proxmox.com/ |
X | Write an article on how to run Haiku with Xen | English | https://www.xenproject.org |
X | API documentation for Network Kit classes | ||
X | API documentation for Keystore | ||
Update the "laying it all out" article to use the BLayoutBuilder classes (it uses deprecated BGroupLayoutBuilder) | |||
Write part 2, 3, "laying it all out" articles ... (Grid layout, Menu layout, ALM layout, custom layouts) |
2.1 Learn to program with Haiku
Work through the Haiku programming books learning how to program in C++ as you go.
2.2 Write a new lesson for the programming with Haiku books
Write a lesson covering a Haiku related topic that isn't already covered in the book(s).
3.0 Outreach/Research
Tasks related to community management, outreach/marketing, or studying problems and recommending solutions.
Example task | Example Skills | Example link | |
---|---|---|---|
X | Research the current status of the Scooby codebase | Wiki page on Scooby | |
Investigate Trac-Buildbot intergration | Python, html | Ticket on subject | |
X | Investigate our AMD GPU support and update our wiki to match | Haiku Wiki page on AMD/ATI video cards | |
X | Investigate our NVidia GPU support and update our wiki to match | Haiku Wiki page on NVidia video cards | |
X | Investigate our Intel GPU support and update our wiki to match | Haiku Wiki page on Intel video cards | |
X | Investigate our VIA GPU support and update our wiki to match | Haiku Wiki page on VIA video cards | |
Make a video tutorial of Haiku, such as running Haiku / Installing Haiku / Programming with Haiku (add link to videos done by past GCI students) | |||
Give a Haiku presentation to a group of your peers. This can be a 5 minute lightning talk, or something longer |
4.0 Quality Assurance
Tasks related to testing and ensuring code is of high quality.
4.1 Test builds of Haiku on various hardware and see if certain issues still exist or not
Examples:
5.0 User Interface
Tasks related to user experience research or user interface design and interaction
5.1 Improve UI on old BeOS/Haiku apps
Convert old BeOS/Haiku programs from Haiku Archives to use layout management and improve the UI, see 1.6
- https://github.com/HaikuArchives/Hare/issues/1
- https://github.com/HaikuArchives/ArmyKnife/issues/5
- https://github.com/HaikuArchives/ArmyKnife/issues/3
- https://github.com/HaikuArchives/ArmyKnife/issues/1
- Add more here
5.2 Improve UI of a Haiku component
- Improve Bluetooth's PinCode Window (or move it to interface kit?)
- Improve Bluetooth's Incomming connection Window (or move it to interface kit?)
- Improve Bluetooth by putting non relevant information under a ToolTip
- Certificate window in Web+
- Improve history management for Web+
6.0 Design and artwork
- Wallpapers, T-Shirt designs
- New small "square" platform logo to replace the current one
- New Haiku sticker design
- Create HVIF icons for screensavers that are missing icons