Competition vs. Community
So, some people are going to hate me for this post, and I've said some of this before, but I really want to express it in more detail. I've been wanting to write something like this for a long time, and recently I think I've been in a mindset where I need to think through some of these thoughts anyway, so "here goes nothing".
(I actually started writing this as a comment on reddit, but after I had reached about 15k of text, well over the limit for an individual reddit comment, I finally decided I should just reformat it as a full-on article for my website; especially as the content and argument actually manage to "stand alone" fairly well.)
Cydia as a Business
Every year or so, someone announces a new "Cydia competitor". Almost always, these projects either never come to fruition, are nothing like how they were portrayed before release, or don't actually offer much of value over the existing solutions: they tend to disappear as quickly as they were announced.
Most of the them start from a common premise: that SaurikIT (my company behind Cydia) is not effectively monetizing our ecosystem, in particular for "end users", and that they see a "market opportunity". I think a lot of people find my reaction to this kind of competition confusing, so I'm writing an article to address that.
To get anywhere, I first need to point out that to some extent the "premise" is dead-on: Cydia does not try to be the world's best business; instead, it's somewhere halfway between a community-driven project and a for-profit company. Cydia was originally a side project, so I should explain why I turned it into a business:
1) It let me buy my time from my previous job. A lot of our users, many of whom are in high school (or even college) and have months of downtime in the summer to work on entirely random projects, might not really, truly, appreciate this, but I have to pay rent, buy food, and am expected to do this with a job ;P.
2) It "legitimizes" jailbreaking (politically): in both the 2009 and 2012 DMCA hearing cycles, it has been extremely useful to be able to point at a "legit" commercial ecosystem. It also helps when I give talks at conferences to explain to "normal developers" that software modification is not inherently tied to piracy.
3) It allows me to fund random community efforts. I have provided bandwidth to tons of random projects over the years, I threw a depressing amount of money down the TSS server "money pit", and I was able to help run websites such as JailbreakQA when they became too expensive for their creators to operate.
It has also allowed me to keep many of the random things that I do free, while still allowing me to get help doing them. Parts of WinterBoard (the preferences panels, pincrush) were done under contract by Dustin. The updates to Veency on iOS 7 (which includes 7.1, to be released very soon) were done by Cykey. etc.
I have been a major backer of JailbreakCon (which is itself not a usefully profitable enterprise ;P), and in addition to "the conference was able to actually run at all", it led to the last-minute "our workshops day is free" announcement last year and the drastically decreased ticket prices (to get more students) this year.
I do a lot of outreach, giving talks at various conferences, all of which I do for free (and in fact I often end up sponsoring the conferences, which helps make the organizers see us favorably). The goal is primarily "do not hate us", as that's the default position :(. I feel like I've done a great job: some of the best conferences now love us.
The jailbreak subreddit is also an interesting case: before I got involved, /r/jailbreak had been banned by the reddit admins. I argued with them to get it reinstated, explaining to them that I would be able to guarantee hired moderation staff. This wasn't possible until after I was able to hire Britta to SaurikIT.
I do not actually run SaurikIT, however, with a normal "pure profit" motive: there are tons of things I could be doing--that I know I could be doing--if my goal were only to "make money": I could be spending more time promoting primarily paid things and trying to convince people with free packages to ask for money.
I particularly never "hijack" successful product ideas from third-parties, even though I know I could get away with it if I didn't do it that often (I know this due to CyDialer, a product I did in fact build as a copy of IntelliDial that could be available in Cydia). In a "pure profit" scenario, I would have released first-party Barrel in 2011.
I try to actively avoid thinking of the problem like that, though, because it leads to things like Rock 1.0. People only remember Rock 2.0, but Rock 2.0 was essentially "a response to the community": Rock 1.0 was "only for a small number of quality things, mostly paid things". They asked me to sell Cycorder for $10 :/.
The reason I think this works so well is because I legitimately never came at the idea of Cydia from the "I want to build a startup, let's target an opportunity, how will I monetize it now" point of view: while I did have some background in the knowledge of "business", it was highly academic in nature (at UCSB, as a TA).
Instead, I got dragged into it, starting from "person doing silly Java development for jailbroken devices", rising to "person maintaining key components (userland and the toolchain)", and ending up as "member of the primary jailbreak team", all in 2007. At some point I realized I needed to either make it a job or quit.
In so doing, I carefully designed everything so I wasn't even myself in control of content: I have always wanted to avoid being "another Apple", as to me that's what the community is actively trying to rebel against. This fight was actually "very real", as some key community members argued for instead having "closed jailbreaks".
This was actually the backstory behind ldid: I frantically worked on it in secret, disappearing from IRC for a while and avoiding getting access to the code for isha, or even hearing how it worked; I then hurriedly pushed it out as an open source project, and nearly got kicked off the iPhone Dev Team for having done so.
I thereby love and even relish the idea of repositories, and as users have seen, I've finally in Cydia 1.1.10 built my vision of moving them closer to the forefront of the experience. Repositories allow for everyone to be involved, but lets us all share common installation infrastructure: it is like an "app store of app stores" ;P.
I'd even go so far as to say that one of the goals for repositories is to make competing with Cydia itself somewhat pointless: repositories have separate branding and nearly complete control over the presentation of their content, a situation that has only become more true in Cydia 1.1.10 and which I intend to further going forward.
Cydia as a Job
The result is that I'm in a really weird position: I have the people on the one side saying "Cydia is too corporate" and on the other saying "Cydia isn't corporate enough". Given that I am trying to walk a boundary, the fact that I really do get both of these styles of hecklers makes me feel like I'm doing something right.
The reality, though, is that I don't consider this a fun job. It is a job where I like to think I get to feel very free, but I think only marginally so more than when I was a consultant (though which at this point is largely becoming a fading memory). I can't go to sleep because I'm stressed out; I wake up, and I'm already stressed out.
The one great benefit is that while sometimes Cydia stuff sucks, it is almost always "my suck". But I'm not even certain that's a real benefit: I now have to compromise vision sometimes for short-term reasons... I did "own" the technology design before, and our consulting group had weirdly large amounts of product design ownership.
(Incidentally, The Okori Group recently got reorganized into a company I sometimes regret not being a part of; like, I actively will sit around and dream about being able to go back and undo all of this Cydia stuff and instead have worked at Okori/Opus for the last six years of my life: "the road not taken" and all that :/.)
It is also really depressing in its lack of future value: one day, probably a day sooner to now than any of us would like (and which may have already happened...), it will take longer to see a public jailbreak for a new version of iOS than the user community can tolerate, at which point the value of most of this stuff I've built drops to zero.
The Bitter Truths
I'm also much lonelier. SaurikIT is three-and-a-half people, all remote; the consulting group I was a part of is so much bigger: I seriously sometimes go and work on a couch at their office to avoid being alone in my apartment for weeks on end. I have painfully fond memories of being able to work on things "with" people.
And at some level, it means that I'm less free. I don't like having to write these articles and comments. I mean, clearly I enjoy the art of doing so (or they would not end up so long ;P), but what I really want to be doing is programming something complex, new, and interesting, or even writing some useful documentation.
Today, after spending the last week straight slaving away on a project I'm going to be releasing soon--alone and somewhat sad the entire time--I just got a phone call from someone I really want to see inviting me out, and I ended up having to turn them down because instead, I needed to sit around and write this article.
This is, of course, all because this afternoon I woke up to an announcement about yet another competitor, and if I don't post some kind of response (which will likely itself lead to more public discussion or argument :/) people are going to assume I'm dead or being actively mean or something. I randomly get "summoned" like this.
Instead, I largely think of this job as "the price I have to pay to keeps this thing I love operating". My key interest now, for over a decade, has been the idea of runtime code modification and building production software out of parts of other existing programs. I even co-published a paper in 2004 on essentially "Substrate for Java".
That's why I was in a great position to write Substrate: in 2008, I already had five years of thinking about this very problem. When iOS 2 came out, the techniques people had been using to do things similar to this no longer worked, and WinterBoard's release was "magic". Now we take it for granted, but it is still all built on Substrate.
Substrate is, essentially, the core of the Cydia platform. It is the reason why all the stuff you find in Cydia can even work in the first place. It (along with Cycript, which may rise to more prominence soon) is "the hard part" of Cydia: even Rock Your Phone was just using Substrate to build their "Rock Extensions" platform.
This situation essentially leads to something that looks like an amazing "opportunity": there seem to be people who like buying stuff, and all the hard parts have already been taken care of by some chump (me) who isn't monetizing it very effectively... someone who even leads by poor example, releasing cheap or even free products.
I actually got contacted by someone else last week, another (different) business guy with "deep pocketed investors", who has a "disruptive" vision for our community, and who wanted me to be on-board with helping him in his quest to build some large commercial empire. I just don't agree with the underlying premise :(.
The reason why I am thereby writing all of this today is that I don't think people are modeling me correctly: people seem to assume that I would be motivated by money and would be spurred forward by having various forms of "competition". Here are the things that actually motivate me to keep working on jailbreaking:
1) Freedom. I already touched on this factor, but for completeness I need to list it again here. This is the argument where I've managed to come up with a way to live my life ostensibly spending all my time working on the things I used to only be able to do as silly side projects, without distraction from a job.
2) Vision. I believe strongly in the vision of runtime code modification as a platform. I first became excited by it in the seventh grade, modifying BASIC programs we were using in French class on our computer lab's Apple IIe's to add silly features like the words "Jay's Personal" before "French Tutor".
3) Obsession to detail. I sometimes find myself slaving away at something trying to make it perfect or beautiful long after doing so really has much "value". Some of it people get to experience: I am really really proud of Cycript, for example; but many of the things I obsess over no one actually truly sees (payment/login and accounting integration), or understands (the font metric calculation logic in Cydia's CSS), or even gets released (some of the debugging and analysis tools I build to help me understand Apple's code, or to debug the other code that I write). If I believe there's no hope of making something amazing, I often don't bother doing it at all.
4) Obligation. Part of me feels like I must work on some things because I took responsibility for them: they are now "my problem". I sadly have the kind of personality that accumulates responsibility, so this burns me a lot: if you look at my history in the iPhone jailbreak ecosystem, it is all "assumed responsibility".
The most hilarious example of this I tell is that I didn't intend--or even want--to become the guy in charge of the iPhoneOS 1.x/2.x toolchain: one day I went to Google Code to file an issue, and noticed I had become the owner of the project; I never heard from the previous owner again after that day: it was now "my problem".
Some of the things I've now accumulated as responsibilities are "people"; I have people, whether friends who became employees, acquaintances that became friends, or simply random people I'm now sufficiently acquainted with to hear about how what I do affects them, whom, if I stopped working on this stuff, would suffer.
5) Masochism. I seriously sometimes believe I do not deserve anything better in life than to slave away on things that have no long-term value and that which people may or may not appreciate. Sometimes I'm not even certain that life has anything but such to offer, so it doesn't matter whether or not I consider it sane.
A few months ago, I played a game called Futilitris. It purports to be a Flash game in the style of Tetris, but in reality it is a piece of conceptual art. I played it for hours as I found the emotion it was conjuring up in me absolutely fascinating: it was the exact same feeling I had felt the day before working on my payment backend :/.
"Every accomplishment I do is outweighed by the need to do more. And my mistakes never go away, they just glare at me forever, even though they're small and meaningless. There's not even points. It just gets harder to see and slower to get things done until finally you don't want to go on." -- Patrick Newnan
6) Biased value system. I grew up with the value system--one that is really common in some cultures, including America--that being a "leader", and generally shouldering increased responsibility, is a good thing: it indicates that you are doing well, making correct moves, becoming a better person, "being all you can be", etc..
It is, to me, not entirely clear that that's even true. Yet, I have some friends who just can't understand the idea that these things aren't somehow "a given", that accomplishing goals which are defined as the accumulation of these traits is not inherently good, and now one of them isn't even speaking to me anymore :/.
7) Pride. I am not above saying that "pride" (which despite playing directly into the commonly-assumed aforementioned broken value system, when used stand-alone, is considered a negative word) motivates a lot of what I do: knowing that people care about and use the stuff I build and that they care to hear me talk about it.
Money Does Not Motivate Me
Money, given some base amount, is not one of the things that motivates me. It never has been: after spending a half a year doing almost nothing but random jailbreak projects between late 2007 to early 2008, I ended up $20k in debt (my entire credit limit at the time) because I wasn't doing my profitable consulting work anymore.
If it were, building an app store (or anything metaphorically equivalent) is a really dumb move: Apple just barely breaks even on their store, and the Android Market actually lost money. (We know these details due to a combination of Apple and Google being publicly traded, in addition to disclosures from lawsuits.)
I have talked with many other people who build app stores, and they are all effectively side projects. The only ones that have made enough money as a stand-alone business have actually focussed almost entirely on advertising revenue (such as GetJar, which didn't even support paying for things directly).
Part of the issue is that payment processing is a brutal and painful battle. Another part of it is that there are tons of costs outside the scope of the store itself (especially for something like Cydia, where only a tiny fraction of the jailbreak ecosystem is involved for purposes of buying our products).
The reality is that Apple makes money because Apple sells hardware: they make more money on a single iPhone than they could ever hope to win back in a lifetime of application sales, and most users purchase a new iPhone every two years. You'd have to buy hundreds of $1-$2 apps every year for Apple to care about that business.
The reality is that Google makes money because Google monetizes your data into a global advertising network: they don't even support payments in many countries, and developers often don't even bother releasing paid versions of their products for Android anyway; the lifetime value calculation is horrible.
Yes: you can make enough money to run a small company like SaurikIT, but it isn't a large business; even "at scale" it is something you only do "for money" if you have some other business, as both Apple and Google do, that your store is designed to support, improve, or control. What money I do make, I spend back to the community.
Competition Does Not Motivate Me
That, though, I think a lot of people are willing to understand: there are characters in movies, books, television shows, or even just folk tales, for whom money doesn't seem to be a motivating factor; whether they "already have enough" or "don't believe in material possessions", this is a believable premise.
The data I've provided at various conferences (including JailbreakCon) regarding the actual profit margins associated with Cydia and similar companies (in particular the App Store and the Android Market, as people mistakingly believe them to be functional stand-alone businesses) is also rather believable.
What people don't seem to understand is why someone might not be motivated by competition. We are trained, at least in much of Western democratic entrepreneurial culture, that competition is the key motivator in life: that if you want someone to really fight for something, by definition they must be competing.
If you think through the list of reasons I just presented for why I am motivated to do the things I do, however, I think you will find some serious issues with this premise.
1) Competition often leads people to make fast, poor decisions and forces time tables that usually do not allow for the kind of attention to inane details I described, the ones that "people won't see, understand, or experience". Time spent on these invisible things is you not spending time "competing" with the other players.
A particularly insidious aspect of this is adding features that are poor quality but "expected": users, particularly new users, often do not have the experience to know when a feature they expect is actually a bug; competition plays on this by forcing effort to be refocused from long-term value to short-term user acquisition.
2) Competition is the clear opposite of "community": it leads to people hoarding improvements--even bug fixes--in order to obtain a competitive advantage over the other players. Effort is then duplicated, leading to a less overall efficient allocation of the resources for building things the community needs.
3) Competition is not fun; in fact, competition is stressful. Maybe some people thrive on that kind of stress, but a lot of people--myself included--just tend to lock up and feel entirely uninspired when they are constantly thinking about "the looming disaster". You can also only be stressed for so long before you crack.
4) Competition is inherently mean, with a guarantee that you will hear tons of nasty comments. Many of these comments are implicit--"this actually works" has the implication "unlike my competitor"--but some quite explicit. Users also are a big part of the problem, "taking sides" and saying really hurtful things.
Why Would I Bother?
I guess the question I have is: why would I bother "competing"? There are tons of things that need to get done in this world. I could, for example, spend my time "picking fights", competing with random projects (whether or not related to jailbreaking): I could, of course, build a better Logos, or a better CallBar.
Or, as I mentioned earlier, I could have built my own Barrel, or in 2009 I could have concentrated on a better MyWi. I don't do that, though, unless the original developer is essentially gone: I just don't see the point. I didn't write Cydia because I wanted to compete with AppTapp, I wrote it because AppTapp was already dead.
I think people these days don't quite appreciate the reality of that, because they weren't there at the time, and because they get the wrong impression from reading the article I wrote when I released Telesphoreo with Cydia: the author of AppTapp Installer disappeared and never returned around iPhoneOS 1.1.2.
After Cydia came out, a different group (RiPDev) was given the code and started releasing updates to Installer 3, and later Installer 4 (an incompatible rewrite) for iPhoneOS 2.0.1 (long after Cydia was the only option for iPhoneOS 2.0). By this point, repositories had long since decided Cydia was a better bet.
Really, the cases where I've ended up in "competition" have been cases where other people have decided to start competing with me (with one notable exception, where after working on something for two years I realized as I was finishing that someone else had already released something similar that didn't actually work as well :/).
The Cult of Competition
So, the reason I feel like a lot of people are going to be angry at me for posting this, is because this really does fly in the face of what people generally seem to believe: they feel like if you don't have multiple parties locked in competition-to-the-death that no progress is ever made; that competition gets things done.
They then see attempts to argue against competition, no matter how benign, as instead attempts to "stifle" competition in order to maintain "monopoly" positions. This, I think, leads to a horrible chilling effect on discourse, allowing a single way of thinking about the world to slowly be "taking over".
I think this sucks. "Back in my day", if you had an issue with an open source project, you didn't "fork it" and ask questions later: you joined the mailing list or IRC channel, talked over what you were trying to contribute, and got into a discussion about whether it was or was not a good idea and how to go about getting it integrated.
Now-a-days, it seems like "competition" at all levels of scale is the new status quo: people find a bug in a program (I've personally had this happen with WinterBoard and Substrate's Safe Mode), and they don't even report it... they fix it for themselves, release a new binary, and use their "competitive advantage" to get people to switch :/.
For my part, I will point out that Cydia is not usefully described as a monopoly anyway: I don't force anyone to use my payment system, and in fact many of the largest developers, even listed in default repositories, do not; I also provide APIs that allow off-Cydia payments to co-exist with Cydia's own accounting.
Picking Fights Loses People
I will now ask the question: what happens when you insist on constantly "picking fights"? What happens if I do spend the time to rewrite Logos (the development tool by Dustin) or CallBar? For one, it is a waste of my time (because seriously, while I don't especially like Logos, a lot of other people do, and it seems to work).
But there is a much more important cost to consider: if I do "win"--or even if I just end up in bitter competition--it is also a waste of Dustin's time. Why would Dustin bother participating in a community where people do not value his time? Why would he keep maintaining not just Logos, but PreferenceLoader?
Because, after all, if I'm going to start replacing Logos, why wouldn't I also replace PreferenceLoader? I could sit around and first-party the entire stack: this would be much easier than you'd even think; after all, Dustin already did the "hard work" of figuring out what was even possible and what kind of solution solved the problem.
Once you start modelling "competing" as "picking a fight", I think it becomes less surprising that a lot of people just get demotivated and leave. I don't want Dustin to leave: he's been a valuable ally in the common fight that is jailbreaking; why would I turn my weapon on him and fire, just because maybe I can do better?
One particular battle that a lot of people seem to want me to wage is against the default Cydia repositories. In fact, before Cydia (with AppTapp Installer), repositories had to be installed separately from a "Community Sources" package. The idea of having third-party default repositories was largely pioneered by Cydia.
I could have "competed" with them: I could have decided to centralized everything, and control all the content in Cydia. However, in addition to feeling like that wasn't egalitarian enough for my vision of an open device, that would have pointlessly created a bunch of enemies: the repositories are really valuable people.
BigBoss has been the developer of a number of key packages that were dutifully maintained for over seven years. ModMyi has run, since the very beginning, one of the more important news sources for our community. ZodTTD's emulators were a major reason to jailbreak, and now MacCiti is deep in the theme community.
Additionally, they know all of the developers and artists (an aspect of their value I've maintained over time: I do not work directly with developers, and have them make accounts and arrangements with repositories), that's a lot of people out there to suddenly lose access to: competing with them would have sucked.
These were, and still are today, highly valuable people: they care a lot about our community, and their care for the community and value in it has only grown over the years. We've had squabbles, but we've been able to resolve them without serious issue. Why pick a fight with them over stuff as silly as package branding?
Of course, sometimes they have issues, and they need help: I have spent many days working on BigBoss's servers to better handle load spikes throughout the years; I've worked with ZodTTD on their repository building scripts, with ModMyi on their HTTP caching layers, and with MacCiti on their CSS for depictions.
This is how you go about making change from the perspective of "community" instead of "competition": you first make friends with the people already involved, you earn their trust, and then you are in a position to help them improve. You don't start by insulting them, or trying to oust them: you start by hanging out near them.
Very few people seem to think like this, though :/. Instead, they post nastygrams on Twitter or complain on reddit, and then decide "I'm going to do so much better" and pick a fight. Even the people who legitimately want to help miss the critical "become friends" and "build trust" parts: you can't skip these starting steps.
(I also want to be very clear and say that building a competing business and then reaching out via e-mail or IRC and trying to propose meetings to arrange how to work together--which is all too common--is so far off the mark as to question whether the sender understands what it even means to "work together" ;P.)
When I was working on finalizing the Cydia build for iOS 7, which needed to support the new "flat" UI from Apple, the owner of ModMyi (Kyle Matthews) reached out to me on IRC with some prototype icons: they were awesome, and they form the basis of what Cydia looks like today. I like having ModMyi involved.
Not Even Effective
Now it is time to throw a curveball: I don't even think competition is a good business strategy. This sounds insane, but if you say "I don't even think picking fights is a good business strategy", I imagine it sounds a lot more reasonable. I'm not saying it "doesn't ever work": sometimes you win! I'm saying it is poor strategy.
There are just too many interesting things that need to be done: I have a massive stack of business ideas I could be working on, why would I bother with one that had direct competition? Yes, competition is a form of market validation, but if you only have so many days to live for the rest of your life, is it a good use of time?
Meanwhile, you now have enemies: you have players in the game who are motivated to make your life harder; and, as tempting as it may be, you threw the first stone, so you can't question their morals. Imagine playing a video game where all of the "enemies" were weirdly incentivized to help you... it almost sounds like cheating ;P.
Instead of making enemies, I hope more people can be encouraged to make friends: instead of trying to replace or undermine other people, figure out a way to supplement and empower them, while adding real value that can become your business (whether you end up charging the other players, or the customer for a different offering).
Competing with Cydia
With all this background, we now can hopefully understand what my response is to competition: I am not "motivated", and in fact I tend to get stressed out and avoid the project in question; I instead work on other things that seem happier, and fall back on "obligation" and "pride" to keep the project maintained.
Maybe I'm just being egotistical here, but I think I add a lot of value to the jailbreak community: I am not "just a storefront". However, if you compete with me on the storefront, you not only indirectly affect my interest to keep working in the community, but you directly affect my ability to spend time doing so.
I always then feel like I have to ask people who see jailbreaking as an "opportunity to better monetize what that saurik chump won't": are you actually prepared to handle the situation where I get fed up and leave? Do you rely on my software? Are you relying indirectly on the people who in turn rely on me, or my friends?
Because if you are, you aren't just picking a fight, you are walking into one you can't win: where on the one side is losing quickly, and the other side is still losing, it's just losing a little bit later, after the infrastructure you are relying on crumbles and key parts of the developer and support community (first- and third- party) disappear.
You might think that all the things that I or SaurikIT contribute are "givens" you can rely on, and that I will maintain them even after you sap the fun of it and bleed away the funding; but I don't have to, won't want to, and wouldn't be able to afford to. Nor, to be clear, should anyone (user or developer) feel entitled to me doing so :(.