Dev:WinterBoard

WinterBoard is an open source theming tool by saurik, and he supports people contributing improvements to it. Here is how!

How to report bugs in WinterBoard
You'll want to provide a summary of the problem, and it's really helpful to include a specific example of the problem.

If a theming feature doesn't seem to be working: Which themes does this happen with? Can other people reproduce the same problem if they apply the same themes? Did this theme work on an older iOS version, and have you checked using WinterBoard's "Debug Logging" feature (under Advanced (For Themers) and using syslog) that you're theming the right images?

If WinterBoard seems to be making SpringBoard crash (putting your device in Safe Mode): please grab a crash report using the Crash Reporter tool (available via BigBoss), paste the crash report on a service like GitHub Gist, and give saurik the link to the paste. It helps to also explain the conditions that seem to cause the crash. It's common for crashes to actually be caused by something else, so before reporting this, it's good to first try uninstalling WinterBoard and seeing if the problem persists without WinterBoard installed.

When you've gathered as much detail about the problem as you can, you can use the instructions in step #2 below to report the problem to saurik and other WinterBoard contributors. You can expect them to ask you some friendly questions to help them figure out if this is a real bug, what the problem is, and how to fix it.

1. Evaluate if this is likely to be a useful change
The following lists are just basic background information. You'll want to continue on to the next step unless it's really obvious to you that your proposal is not a good fit for WinterBoard.

Improvements that are usually very welcome:
 * Adding back a feature that WinterBoard used to have.
 * Fixing a bug in a current feature. This includes fixing the default themes that come with WinterBoard, if they're broken in some way.
 * Small fixes that are likely to be useful to most WinterBoard users.

Improvements that saurik usually declines for WinterBoard:
 * Large new features that do something completely new with theming. These are usually better as separate packages - here's a comment where saurik explains more about this option.
 * Lockscreen-related improvements. (These are usually better for Cydget, which is also open source and has a similar contributing process where the most important part is to get in contact with saurik and propose your change.)
 * Suggestions to add some kind of DRM protection for themes. In general centralized DRM implementations get cracked quickly since they're enticing, and since themes are fundamentally made of images, it'd also be easy for somebody to write a simple DRM bypassing tool that hooks UIImage construction and saves the files.

2. Discuss with people to see if this likely to be a useful change
It's great to check your idea with saurik and other people who contribute to WinterBoard before spending a lot of time working on your idea. IRC is the main place where development discussion happens. It's a chat system, so it supports having a quick efficient interactive conversation with multiple people. See How to use IRC for instructions (including a couple of ways to set up a long-term connection), or use this web interface for #winterboard on irc.saurik.com. It's best to stick around in the channel for a while after saying something (leave the website or your IRC client open for a few hours), so that people have a chance to respond.

You can also contact other people who have contributed to WinterBoard, if you want advice and suggestions before getting in contact with saurik. See WinterBoard's changelog for an incomplete list: Cykey, thekirbylover, Surenix, NickF, etc.

If you tried IRC and didn't get a response, or if you really dislike using IRC, you can email saurik instead (saurik@saurik.com). Give your email a detailed subject line that mentions contributing to WinterBoard, so that he knows to open your email among the hundreds of emails he receives.

3. Gather details about the change
You don't need to submit a complete code patch. You only need to explain to saurik what the change is and how it could be implemented, such as the names of relevant functions and other important details. Example: Telling saurik a sentence at the level of "there is a class called _UIAssetManager that has some messages on it of the form imageWithName:idiom: and if you hook at that level it seems sufficient for theme artists" can be a great and useful contribution to WinterBoard.

If you can write code for this, what saurik often finds most valuable is just getting a "proof of concept" that he can figure out how to integrate. saurik can write the necessary code and fit the patch into WinterBoard in the appropriate place.

4. Contact saurik, propose the change, and discuss it with him
You can follow the directions in step #2 to get in contact with saurik, propose your change, and discuss it with him and other people who contribute to WinterBoard. Yay!