Dev:Advice for new developers

So you built your first tweak, and you're ready to release it on a default repository. Exciting! Here's some help for the next step of actually releasing it.

You're invited to edit this page and add more, especially if you're a developer who has released a few things already and has advice for people starting out.

Choosing free vs. paid
There are obvious benefits to making a paid tweak (money), and there are less obvious but also very important benefits to making a free tweak. You have to choose which is right for you - it's great to get paid for your work, and it's also great to release things for free.

Some good things about releasing free tweaks:
 * Builds your reputation: Especially if you're new to releasing tweaks, people don't really know who you are yet, and they sometimes prefer to install and buy products from developers they trust - the jailbreaking community is small enough that people do recognize names. Releasing some things for free means that tons of people can try your work and start building trust in you as a developer. Gathering an audience of fans means that your later products will be more successful!
 * Feeling of satisfaction: A free tweak is accessible to all jailbreakers, which is potentially millions of people. It can be very fun to see that many thousands of people are using and enjoying your work.
 * Less obligation and less worry: If you know you don't want to do a lot of maintenance work for your tweak (such as updating it for upcoming iOS versions), releasing a paid tweak could make people annoyed at you. People have lower expectations for free tweaks in terms of updates and support (although not zero expectations - people will still expect the tweak to work properly as described).
 * Contributes to the community: Cydia having good free tweaks available (along with paid tweaks) makes the jailbreaking community healthier and more fun. For example, newcomers to jailbreaking usually start with installing free tweaks, and if they install great stuff that they really like, that means they're more likely to stick around and be enthusiastic about jailbreaking in general.

Choosing open vs. closed source
You might also consider releasing your tweak's code as an Open Source Project, typically published on GitHub. The main benefit is that your code can help other developers learn how to do new things, especially beginner developers who are interested in reading sample code.

If you want to publish your code, remember to pick a license for your code to specify what other people are allowed to do with it. The top of the Open Source Projects page also explains this, but here's more detail. By default, if you don't pick a license, your code will remain fully copyrighted by you, and other people will only legally be allowed to read it and learn from it (they won't be able to reuse any portion of it or redistribute it) - if that is what you want, you should make a clear note of this copyright status in your README to avoid people getting confused into thinking they're allowed to republish your code because the code is available to view. If you want people to be able to fully reuse and redistribute your code (including allowing commercial/paid redistribution of your code), you need to specify that by adding a "free software" license to your code (in your README and/or in a LICENSE file), such as the MIT or GPL licenses - see How to choose a license for your own work and Choose A License for advice on which license to choose. GitHub also explains how to add a license to your repository.

Note though that people can ignore licenses - if you publish your code and say in the README something like "this is copyrighted code; please don't redistribute this for money", people can ignore your wishes and try to submit your work to a default repository as a paid package. This happens occasionally; if you notice that a default repository has accepted a package because they didn't realize it's made of code copied without permission, please send the repository manager a report of the problem.

Often people publish open source code for their free tweaks, but you can also publish the code for a paid tweak. That probably won't even reduce your sales much, since most people don't know how to compile projects (or don't want to bother), or know it's better support the developer, so they'll still buy it via Cydia.

Advice for improving your marketing and installs/sales
You can encourage many more people to download (and buy!) your tweak if you put some effort into marketing it.

''This section includes a lot of advice based on Sebastien Page's great talk from JailbreakCon 2014 - you can watch it for more explanation. He's the main editor of iDownloadBlog.''

How to name your tweak
There are a couple of popular ways to name a tweak:


 * A descriptive name, like MailUnlimitedPhotos - these are great for simple tweaks.
 * A brandable name, like Zephyr - these are great for big tweaks that are here to stay.

When naming a tweak, make sure the name is easy to spell so people can find it when searching Cydia.

Before you release it, search Cydia to make sure a similarly named tweak doesn't exist yet. This is related to another important pre-publishing step: also search to find out if a tweak with a similar function is already available on the default repositories! If your tweak is very similar to something that exists already, potential users might not be very excited about it, so it can make sense for you to pause and add something new before releasing it.

Also, avoid using other people's trademarks or brand names in the name of your product, to avoid making those companies annoyed at you. For the Cydia Store, saurik doesn't accept products with names with potential trademark problems.

How to write a short description
This short description displays on Cydia's "Changes" tab, under the name of your tweak. You have to make a good impression in approximately 39 characters or less! You should use this field to accurately and simply describe the tweak. Use important keywords because these words are used in Cydia's search feature.

Be clear and concise. Saying your tweak is the "best" or "greatest" in your short description is usually a waste of your precious few characters, since everyone thinks their tweak is the best - instead, it's helpful to use this space to provide a summary of what the tweak does, so people know whether they should tap to find out more. You also don't need to repeat the name of your tweak in the short description.

How to write a long description (depiction)


A great tweak description page (called a "depiction" inside Cydia - see saurik's explanation of it) should include:


 * An accurate and clear description of the tweak and what it does.
 * An explanation for why people might need it. This is a great place to make your tweak stand out - explain to people that it'll make their life easier, or impress their friends, or make their phone look really cool, or whatever it does.
 * Instructions for how to use it.
 * Information about its iOS version and device compatibility.
 * Screenshots.
 * A YouTube video if possible, demonstrating the tweak.
 * A changelog, updated when you release updates. People appreciate knowing what's new.

It's also great to link to reviews of your tweak on blogs. Remember that you can email your repository manager to update the description without necessarily having an updated package as well.

Good examples: Auxo 2 and Pluck 2.

How to price your tweak
If this is a paid tweak, the Cydia Store is flexible when it comes to pricing - ask your repository manager for help if you want to set up temporary discounts or a different kind of pricing scheme. You can use discounts as a marketing tool ("if you bought my previous tweak, get my new one at a discount").

If you haven't sold software much before, there's a lot of existing great advice about pricing that you can adapt for your Cydia Store product. For example, here's a long article about how to price software: Don't Just Roll The Dice, by Neil Davidson - it's helpful for thinking about pricing psychology.

How to get the word out
Reaching out to blogs is great!

Make a list of jailbreak bloggers and learn about their tweak preferences. Connect with them and explain why you think they will like your tweak. Send pre-release versions of the tweak so bloggers can have a look at it first. Gift the tweak to the blogger (there's an option for this in Cydia Connect) if it's not free. If the reviewer liked your tweak, keep them posted about future updates - they might want to post again if you do a major update.

Monitor the comment section to collect feedback and answer questions.

How not to reach out to blogs: don't be a stalker, and don't send 47 emails or tweets. Be open to criticism, and don't be sour if a blog doesn't cover your tweak.

How to get your tweak localized (translated) into more languages
Many jailbreakers are multilingual! They may be fine with reading English but prefer to use their device in their native language, so providing localizations is a great way to make more users happier. Ideally a localization includes more than just translated strings - for example, different languages have different punctuation for dates and numbers - but starting with translated strings is reasonable.

Often developers ask their fans to contribute volunteer translations. You can also try asking people on this list of /r/jailbreak members willing to be translators. It's best to offer volunteers a free copy (if it's a paid product), credit them in your tweak or depiction somewhere, and thank them a lot. For a couple examples of ways people have asked for volunteer translations, see this GitHub repository for IfFound² or this one for rpetrich's projects, or this custom system for AnyAttach. You can also use a tool like Transifex.

If you'd like to hire professional translators to work on your project, Tethras is one service flexible enough to work with people developing for jailbroken iOS as well as normal iOS; you can email them if you have questions about this.

Advice for handling support, criticism, and updates
You know you need to test your initial version thoroughly, but it's also important to test your updates thoroughly before releasing them. Small changes can have unexpected side effects. You can ask friends to try them on different devices with different tweak setups to check for problems. (If you don't really know anyone to help you test, you can try asking on the developer IRC channels, where you can find fellow developers and help each other.)

Do not falter if your tweak is rejected from the repository you upload it to. This happens to all developers, big and small. The important thing is to get back up and keep going. That way, you will learn to accept failure and learn from your mistakes, as well as gain even more determination to develop for the jailbreak community. Also, don't fear criticism. It will surely come along with success and fame as a sub-product. Learn to ignore the bad, and if possible, learn from the mistakes that cause the criticism. Hate emails are also fairly common, at least in my experience. Reply politely or simply ignore the hate, do not let it gnaw away at you.

Advice for dealing with piracy
If you build a way to check whether your tweak is pirated, you may be surprised to see a high piracy rate compared to purchase rate, and this can feel pretty disappointing - it feels disrespectful, and it feels like you're losing a lot of money. But for a variety of reasons, many pirates aren't actually able to buy tweaks - in other words, these are not sales you would have been able to make. It's best to try not to spend a lot of effort worrying about this and to instead focus on your paid users and the fun parts, like improving your tweak and spreading the word about it. (See the marketing section above for advice about increasing sales!)

If you're considering building systems to prevent piracy, see Tweak DRM for lots of advice (philosophical, practical, and technical).

Even though piracy can be really frustrating and discouraging, we have to treat all users and their devices with at least a basic amount of respect - it is not OK to harm devices in revenge for piracy, and writing nasty email replies isn't a great idea either. There are many pirates who decide to start buying tweaks after getting to know developers better (such as via Twitter or /r/jailbreak) and starting to see them as fellow humans who do hard work that is worth supporting. There are also pirates and even tweak crackers who get to know the community better and decide to switch to development and selling tweaks, or other forms of contributing to jailbreaking in helpful ways.

Understanding reasons for piracy that aren't lost sales
Context that may be helpful:


 * Some jailbreakers are too young to have a credit/debit card or bank account, or too young to legitimately register a PayPal or Amazon Payments account. Their parents may not be willing to purchase tweaks for them. Sometimes young people in the United States can use cash to go to a store and buy pre-paid debit cards like Vanilla Visa, but not everyone has access to doing that. Also, not every young person has the opportunity to make money (limited opportunities in their area, parent requirements, etc.).


 * Some jailbreakers live in countries where it's very hard or impossible to get a PayPal or Amazon Payments account, including countries that PayPal doesn't serve at all. It may also be harder to get a credit/debit card than it is in your country. It's less common, but there may be trade sanctions between their country and the US, so US companies like PayPal and Amazon aren't allowed to do business with them.


 * Some jailbreakers don't realize that they're pirating tweaks. This can easily happen if their friend jailbroke their device and installed pirate repositories for them, or if they trusted YouTube instructions without paying attention to Cydia's piracy warning for repositories.


 * Some jailbreakers use piracy to "try before they buy" because they want to be really sure that the tweak works for their setup in the way that they want, even though this strategy has its own problems. (Pirate repositories often have outdated versions, incorrectly configured conflicts/depends, poorly-cracked DRM, and other problems.) They may use a pirated version for a while and then buy the package if they decide it works well for them. To give potential customers more confidence to purchase without pirating, it helps to include a great demo video and lots of detail in your package description.


 * Some jailbreakers don't have the money to afford tweaks. This might seem counterintuitive - that they have an expensive device and perhaps an expensive service contract but can't afford a tweak. But there are many situations where this makes sense: they may have received their iOS device as a gift, or they may have purchased it a long time ago when they had more money available, or they may have purchased a used older device. They may have an inexpensive pay-as-you-go service plan instead of a fancy service contract. They may also live in countries with lower salaries and lower cost of living, where the equivalent of a few US dollars represents hours of work for them instead of less than an hour.