Difference between revisions of "Getting Help"

From iPhone Development Wiki
Jump to: navigation, search
m (About your problem.: RE page is local)
(Clean up this page a bit as a general developer help advice page)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Warning | This article is in construction. }}
+
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.
  
Part of being a tweak (and related) developer 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 IRC.
+
== About your setup. ==
 
 
= About your setup. =
 
  
 
* Give as much information about it as possible.
 
* Give as much information about it as possible.
Line 9: Line 7:
 
* Provide which platform you are building on (Mac, iOS (on-device), Linux, Windows, other; 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).
 
* 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 [[SSH Over USB]]?
+
* Extra questions to answer: Which terminal program are you using? How do you connect to your target device? Wi-Fi or [[SSH Over USB|USB]]?
  
= About your problem. =
+
== About your problem. ==
  
* Search your issue on [https://www.google.com/ Google], [http://stackoverflow.com/ StackOverflow] and the [https://www.reddit.com/r/jailbreakdevelopers r/jailbreakdevelopers] [https://www.reddit.com/r/jailbreakdevelopers/search?q=write+keywords+here&restrict_sr=on&sort=relevance&t=all subreddit] (maybe even in the [https://www.reddit.com/r/jailbreak r/jailbreak] [https://www.reddit.com/r/jailbreak/search?q=write+keywords+here&restrict_sr=on&sort=relevance&t=all subreddit] too)<br>Are you having trouble with your setup or when building your project? Give [[Theos/Troubleshooting | the troubleshooting wiki page]] a read in case your problem matches one of the templates there.
+
* Search your issue on [https://www.google.com/ Google], [https://www.stackoverflow.com/ StackOverflow] and the [https://www.reddit.com/r/jailbreakdevelopers r/jailbreakdevelopers] subreddit (maybe even in the [https://www.reddit.com/r/jailbreak r/jailbreak] subreddit too)<br>Are you having trouble with your setup, or only when building a specific project? Give [[Theos/Troubleshooting | 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! <br>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_Engineering Tools | reverse engineer]]''' from the previous version to start from something more than scratch.
 
* 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! <br>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_Engineering Tools | reverse engineer]]''' from the previous version to start from something more than scratch.
* What have you tried so far? Add snippets or links to pastes ([https://ghostbin.com/ ghostbin], [https://hastebin.com hastebin], [https://pastebin.com pastebin] or [https://gist.github.com github gists] are good sites for sharing big pieces of code) if they are several lines or you want syntax highlighting. Or even link to your project site, hosted on [https://github.com/ github], [http://sourceforge.net/ sourceforge] or other services/servers. <br>Please refrain from using screenshots to display text as it inflates the space needed for the code. 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 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 <code>``` … ```</code> around your code on GitHub and Discord), or links to pastes ([https://gist.github.com GitHub Gist] is good for sharing pieces of code). Or even link to your project site, hosted on [https://github.com/ GitHub], [https://bitbucket.org/ Bitbucket], [https://sourceforge.net/ SourceForge], or other services/servers. <br>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.
* ''If you don't have a simple way of sharing code (which happens to be the case of iOS users), I suggest using [https://ghostbin.com/ghost.sh ghostbin's script] that makes it very easy. (If I'm not mistaken about the following commands) do:''
 
curl -k -o ghost https://ghostbin.com/ghost.sh
 
#''or''
 
wget --no-check-certificate -O ghost https://ghostbin.com/ghost.sh
 
#''and then''
 
su -c "chmod +x ghost; chown root:wheel ghost; mv ghost /usr/bin/; ghost -h"
 
 
 
 
* 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.
 
* 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. =
+
== About your solution. ==
  
* This subreddit is 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.
+
* 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.
** ''I try to comment on all unanswered posts. If I do not know the answer I try to point to other related threads or sites that might put you in the right direction.''
 
  
= About helping others. =
+
== 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 [https://www.reddit.com/r/explainlikeimfive/ ELI5] just in case ;P''
 
* Try to be polite and verbose about explanations. Unless provided or easily inferred, it is unknown how far OP knowledge goes. ''So [https://www.reddit.com/r/explainlikeimfive/ ELI5] just in case ;P''
Line 36: Line 26:
 
* 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.
 
* 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. =
+
== 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.
 
* 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. =
+
== About off topic posts. ==
  
 
* Tell OP politely and suggest better and more relevant places to post. OP might have meant to post in
 
* Tell OP politely and suggest better and more relevant places to post. OP might have meant to post in
Line 47: Line 37:
 
** [https://www.reddit.com/r/LegacyJailbreak r/LegacyJailbreak] if it involves older devices,
 
** [https://www.reddit.com/r/LegacyJailbreak r/LegacyJailbreak] if it involves older devices,
 
** [https://www.reddit.com/r/ObjectiveC r/ObjectiveC] if it is a pure Objective-C issue,
 
** [https://www.reddit.com/r/ObjectiveC r/ObjectiveC] if it is a pure Objective-C issue,
** [https://www.reddit.com/r/C_Programming r/C Programming] if it goes deeper down the rabbit hole,
+
** [https://www.reddit.com/r/C_Programming r/C_Programming] if it goes deeper down the rabbit hole,
 
** [https://www.reddit.com/r/iOSProgramming r/iOSProgramming] if it is a normal iOS development question that doesn’t need a “jailbreaky” solution.
 
** [https://www.reddit.com/r/iOSProgramming r/iOSProgramming] if it is a normal iOS development question that doesn’t need a “jailbreaky” solution.
  
= About the wiki. =
+
== About the wiki. ==
  
* Both the [http://iphonedevwiki.net/ iPhoneDevWiki] and (the) [http://theiphonewiki.com/ theiPhoneWiki] are useful resources for developers of jailbreaks, tools, libraries and tweaks. Use them to your advantage.
+
* Both the [http://iphonedevwiki.net/ iPhoneDevWiki] and (the) [http://theiphonewiki.com/ 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.
 
* 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.
 
* 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. =
+
== About open source code. ==
  
 
* Try to always add a license to your projects, no matter the size or complexity of it. [[Advice_for_new_developers#Advice_for_choosing_open_vs._closed_source | See this section on choosing to open source your project]].
 
* Try to always add a license to your projects, no matter the size or complexity of it. [[Advice_for_new_developers#Advice_for_choosing_open_vs._closed_source | 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 [https://github.com/ github] and [http://sourceforge.net/ sourceforge])
+
* 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 [https://github.com/ GitHub] and [https://sourceforge.net/ SourceForge])
 +
 
 +
== Where to get help ==
 +
 
 +
Most development chat happens in [https://discord.gg/jb r/jailbreak Discord] and [https://discord.gg/z4RTnrcbKW 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 [[Special:Search|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 [https://www.reddit.com/r/jailbreakdevelopers /r/jailbreakdevelopers].
 +
* Post a question on [https://stackoverflow.com/ Stack Overflow] using relevant tags, so it gets picked up on by people with domain knowledge.
 +
 
 +
== External links ==
 +
 
 +
* [http://mattgemmell.com/what-have-you-tried/ whathaveyoutried.com]
 +
* [http://xyproblem.info/ The XY Problem]

Latest revision as of 08:10, 8 January 2022

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

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.

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:

External links