Dev:Getting Help

Part of being a tweak developer (or indeed, a developer in any other field) is communicating with your peers. Sometimes this involves asking questions because one has found a problem or is dealing with undocumented features of a program. With everyone dealing with their own problems, poorly made questions might discourage others from helping or lead to solutions one has already tried but didn't mention. So please read these suggestions before posting questions, comments and links on sites like Reddit and StackOverflow, making issues in GitHub projects or asking on Discord.

About your setup.

 * Give as much information about it as possible.
 * Provide which build environment you are using (Theos, Xcode; which version it is).
 * Provide which platform you are building on (Mac, iOS (on-device), Linux, Windows, other; which version it is).
 * Provide which platform you are targeting (iOS, watchOS, tvOS?; which device and version it is running).
 * Extra questions to answer: Which terminal program are you using? How do you connect to your target device? Wi-Fi or USB?

About your problem.

 * Search your issue on Google, StackOverflow and the r/jailbreakdevelopers subreddit (maybe even in the r/jailbreak subreddit too) Are you having trouble with your setup, or only when building a specific project? Give the troubleshooting wiki page a read in case your problem matches one of the templates there.
 * State what you are trying to achieve. Is it visual? Add screenshots or drawings. Maybe add a link to a youtube video explaining what it should do. Be creative! Perhaps you are trying to make a replacement for an existing but outdated project or porting something over from another system/platform? Try finding its source code first. Contact the original author, they might provide it to you if they don’t intend on maintaining it anymore. Otherwise try using what you can  reverse engineer from the previous version to start from something more than scratch.
 * What have you tried so far? Add snippets (add four spaces at the start of each line of code on Reddit and Stack Overflow, or add backticks  around your code on GitHub and Discord), or links to pastes (GitHub Gist is good for sharing pieces of code). Or even link to your project site, hosted on GitHub, Bitbucket, SourceForge, or other services/servers. Please refrain from using screenshots to display text as this makes it more difficult to read your post, especially on mobile devices. Paste sites are more convenient since others can copy and paste snippets of it to show you where or what is wrong, or could be improved.
 * What are the results of your work? Do they match what you had thought? Show screenshots or videos. Be as explicit as you can. If you use the syslog to show debugging messages use a paste service to share them for the same reasons as above.

About your solution.

 * Online forums are made up by people from different timezones so do not worry if your post goes unanswered for a couple hours or days. Most are here as a hobby, finding free time to do stuff of their own, so helping others might be a spare-time-between-spare-time task.

About helping others.

 * Try to be polite and verbose about explanations. Unless provided or easily inferred, it is unknown how far OP knowledge goes. So ELI5 just in case ;P
 * Do not accuse OP of wrongdoings before having proper evidence. Sometimes they can explain things in a way that leaves room for misinterpretation and jumping at them for what they haven't done might push them away.
 * Use references to back up your explanations whenever possible. Even if the source is outdated it might help finding the right track to the answer.

About posting links.

 * Use a title as descriptive as possible that helps understand why you find it useful for others. Consider adding a comment in case you need more space for explaining.

About off topic posts.

 * Tell OP politely and suggest better and more relevant places to post. OP might have meant to post in
 * r/jailbreak if it is a request,
 * r/TweakBounty if it is a paid one,
 * r/LegacyJailbreak if it involves older devices,
 * r/ObjectiveC if it is a pure Objective-C issue,
 * r/C_Programming if it goes deeper down the rabbit hole,
 * r/iOSProgramming if it is a normal iOS development question that doesn’t need a “jailbreaky” solution.

About the wiki.

 * Both the iPhoneDevWiki and (the) The iPhone Wiki are useful resources for developers of jailbreaks, tools, libraries and tweaks. Use them to your advantage.
 * Everyone is welcome to edit it, so long as it is constructive. If there's something you know that you want to share feel free to add it to a page, even if you don't know the syntax for it. Someone else can format it later or contact a contributor to help you do it.
 * If there is something incorrect you can correct it, but if there is outdated information leave it as is with a note around it stating this fact; add the new information after it so the valid information is not lost to Apple's aggressive deprecation.

About open source code.

 * Try to always add a license to your projects, no matter the size or complexity of it. See this section on choosing to open source your project.
 * Try to use versioning systems to keep track of the changes you made and having points to go back to when code stops working. (For example GitHub and SourceForge)

Where to get help
Most development chat happens in r/jailbreak Discord and Theos Discord. Make sure to post your question in the most appropriate channel for your problem, and don't duplicate your question across multiple channels.

Feel free to drop by and listen for a bit. If you ask a question and nobody responds right away, stay around a while to wait for answers, since not everyone is always awake and online. It's also helpful to do your best finding an answer yourself (via searching this wiki which is full of documentation, searching Google, and so on) before asking in the channel.

You can also:


 * Post a question at /r/jailbreakdevelopers.
 * Post a question on Stack Overflow using relevant tags, so it gets picked up on by people with domain knowledge.