-
Notifications
You must be signed in to change notification settings - Fork 38
The Technical Problem with Piracy
This isn't about the moral issue with piracy. I believe that most people that pirate know that what they are doing is wrong.
This is about the crashes and other undesired behavior one may experience when using pirated jailbreak software on a jailbroken iOS device. One reason for this is anti-piracy measures (i.e. DRM) implemented by the developer. Another reason, discussed here, is due to pirated software breaking something I refer to as "conflict detection".
Much of the software available on jailbroken devices is what is known as tweaks. Like add-ons for web browsers, tweaks modify the behavior of the app that they target. And just like add-ons, if not designed properly, tweaks can cause the targeted app to behave oddly, or worse, to crash.
When just one tweak is targeting a given app, that tweak only needs to worry about working properly with the app itself. When two tweaks target the same app, they have to work with both the targeted app, and with each other. When three or more tweaks target the same app... things can get complicated pretty quickly.
Sometimes, for whatever reason, it simply is not possible for two tweaks to work together. Fortunately, there is a way for developers to prevent users from having both packages installed at the same time.
Tweaks (and other software) are installed on a device via something called a package, specifically a Debian package (.deb file).
The Debian package format provides a way to have two packages "conflict". Two packages that conflict cannot be installed on the same device at the same time.
Let's say that we have two tweaks, "Tweak A" and "Tweak B", that are set to conflict. If "Tweak A" is currently installed, and the user attempts to install "Tweak B", they will be told that they must uninstall "Tweak A".
All Debian packages are given a unique identifier. Two different packages can have the same name (i.e. they could both be called "Tweak A"), but they cannot have the same identifier.
For our example scenario, the package identifier for "Tweak A" is "com.company.tweak-a", and for "Tweak B", "com.company.tweak-b". If the developer of "Tweak A" wants to make it conflict with "Tweak B", s/he can do so by adding the following to the package's control file (which contains information about the package):
Conflicts: com.company.tweak-b
And thus, problem solved. Users will not be able to have both tweaks installed at the same time, and thus will not experience trouble due to the known incompatibility.
Many of the pirate repositories change the package identifiers. They do this presumably so that when the official package is updated, users of the pirated version will not receive a notification (as they do not own the official version and thus will not be able to install it).
Say that some pirate repository releases a pirated version of "Tweak B" with the package identifier "com.pirate.tweak-b". If a user has "Tweak A" installed, and tries to install the pirated version of "Tweak B"... the system will allow it. To the system, "com.company.tweak-b" and "com.pirate.tweak-b" are two completely different packages, and "Tweak A" is only set to conflict with "com.company.tweak-b".
Now the user has two tweaks installed that are known to be incompatible. The user will experience trouble.
In theory, the developer of "Tweak A" could set the following:
Conflicts: com.company.tweak-b, com.pirate.tweak-b
... but there are many pirate repositories, each using different package identifiers, and new repositories can be formed at any time. It simply is not possible to guard against all of them.
(Unfortunately, the Debian package format does not allow wildcards such as "*.tweak-b", and even if it did, there is nothing that says that the pirated version must include "tweak-b" in the identifier.)
If you want to avoid such issues, don't pirate.
If you want to pirate in order to "try before buying", realize that pirated versions may not function the same as official versions. Never have more than one pirated package installed at a time. Do not install packages from a repository that changes the identifiers of packages (if the package identifier includes the pirate repository's name, it has likely been changed).
If you insist on having multiple pirated packages installed and using repositories that change identifiers, never install packages from more than one such repository. Having packages installed from multiple identifier-changing pirate repositories increases the chance of issues occurring.
And finally, when something goes wrong, don't expect help from the developers whose software you are pirating.