Reorganization and expansion
On IRC, User:Snakeninny provided helpful suggestions for rearranging and expanding this article to help new developers better, so I'll summarize them here for reference (and in case anyone wants to help rearrange the page and fill out the missing parts).
- An introduction to basic knowledge: the differences between normal and jailbroken iOS from a power user's perspective (sandboxing, directory hierarchy, permissions), and from a developer's perspective (from App Store app to Cydia app, tweaks, daemons). An explanation of what Mobile Substrate is and how/why it works.
- Explaining the tools you need to develop for jailbroken iOS. On Mac: class-dump(-z), Theos, Reveal, IDA, iFunbox, dyld_decache. On iOS: OpenSSH, GDB, Cycript, AppCrackr, syslog.
- How to write a tweak, from finding inspiration to finishing it. This includes figuring out which files to analyze, learning how to use a combination of class-dump, IDA, and GDB to locate functions/methods, how to use Cycript to prototype the tweak, and how to finish it with Theos. Also, how to reverse-engineer with IDA and GDB to go further with development.
- Examples: representative examples and snippets from GitHub repositories and blogs.
Should Theos Challenges be moved to Theos/Getting Started? ~anoa
Thoughts on improving this article
"The discussion page puts it pretty well. I didn't even know some of those programs existed! The code examples/ideas to get your brain flowing was the other thing, which is starting to be added."
About Open Source Projects: "When I visited that page as a beginner I tried downloading one, tried compiling, got some arbitrary error, and was stuck. I also found building simple tweaks and asking this group about errors taught me much more than looking at open source code. :P"
Suggestions from a newcomer: make this page into a numbered list so that it's structured, to make it easier to follow for newcomers.
- Some people will arrive on this page without knowing how to jailbreak their devices but know how to write code, and they want to write something for a jailbroken device. Others arrive on the page knowing how to jailbreak but don't know how to write code. We need to direct people elsewhere if they are in these two buckets, asking them to come back.
- If people know how to jailbreak and know how to code:
- Background/prereqs for development (including what Substrate is) - building a mental model of the ecosystem (you are going to be modifying running code, etc.).
- Tutorial (hello world, using Theos).
- Further reading (possibly including troubleshooting and where to ask for help).
The Substrate website has some of this background info and it has hello world, but it doesn't have hello worlds that use Theos. We probably need better Theos documentation.
Another newcomer said knowing the keywords to google was enough. This page should make sure to have those keywords.