In my case, it ended well, because after explaining there must have been a misunderstanding, they finally accepted the update, but something changed at that precise moment i saw the reason they rejected the app.
I am now extremely worried about things i knew before but didn't really care about. That is:
- Apple has a monopoly on app distribution to my customer's devices.
- Apple doesn't care at all if my app is distributed on the store or not.
- They'd rather have every developer work for free and give their time for free, and work only for iOS. That would be the ideal situation for them if that was sustainable. We have different interest.
And so the natural conclusion was that I, as a developer, can not responsibly develop only for apple-owned platform.
And so tomorrow (or actually monday), i'm starting my next application project, and it's going to run either on flutter or react native. Because at the minimum i'll be able to provide an option to my customers should apple not like what i'm doing on their store, for some obscure reason.
I only say this because -- if you haven't tried React Native before -- you're in for a bad time if you think you don't really need to know Android development to make an even modestly complex app. When you run into Reactive Native errors and you don't know what's going on in Android, it can be an infuriating experience.
I'm not saying it's the best bet for you. Just -- if you haven't tried it -- maybe give it a shot [=
I'm not planning on using react or flutter to avoid knowing about android internals. I'm going to use them to only develop specific code when it's absolutely needed, and not for 100% of the code base.
As an independant software developer (or even for a modest company) i think it's now the only sane choice.
ReactNative feels like developing the same app 2.5 times. Once in RN proper, and then covering the same ground for large swaths of the app again for each iOS and Andriod.
Flutter has some pain associated with it (I would highlight the lack of 3rd party and community support compared with RN), but overall I'd say it delivers more on the "write once, run everywhere" promise of RN.
It's a business application, doesn't have anything particular, and doesn't rely on fancy technological tricks, api or marketing tricks. I believe the reason they rejected the update was for a particular wording in a description that made them think i was tricking my customers (although i'm still having trouble understanding why).
Which would have been forgivable, if that was my first release. But it was just an update, and the part that got them triggered hasn't changed since day 1. The app makes something like 10k a year of profits, so it's not big, but if it were a scam, it would have been reported before...
This is another example of why monopolies are bad. Same goes for Google with Android. G can ban your account (and correspondingly any future accounts you might try to make), so any work you do for Android is just as much as risk.
Even though the apps aren't as rich on the web, I think most developers should target mobile web except in cases where they really need something special in the hardware. No app stores, and no begging to be allowed to update your own product.
The web is slowly getting better as an application development platform and a few great ideas have actually started on the web and made its way to native development (React's declarative UI building is a good example). I don't think it's inevitable all apps will become web apps, but I'm very curious to see what happens in this space given the different forces at play.
Apple is very territorial about developer tools. They do allow certain businesses (like Fastlane) to operate in this space (a tacit acknowledgement that those tools provide value) yet they deny others (like Windmill) the right to operate.
This follows the typical Apple ethos of "we can do it better because we're vertically-integrated". However this only works if your product is damn-near perfect. And Apple is infamously imperfect when it comes to software/services.
On top of the competence issue, they also have no real motivation to improve tooling. They know that developers will build stuff no matter how onerous the terms, and no matter how nitpicky is their approval process.
If they re-framed their perspective, and began considering devs as "users" in their own right, then perhaps they, too, would experience the tender love + attention that Apple lavishes on its end users. But this is simply not how they view it, and there is little political will inside Eddy's org to accomplish such a shift.
There is absolutely no way anyone could have been worse than Google in first 4-5 years of Android.
One company that got tooling right was Microsoft. Unfortunately, they had other problems.
(Nokia was good too, Qt studio was awesome)
Are you kidding? Google was a dream. Try blackberry. Or try J2ME. (which wasn't too bad, but nowhere near as good as Goodle or Apple in the early days).
Which is something not just with Developers tooling, Apple seems to have problem with scaling. When they were focused on the iPhone, literally every other part of their business get completely neglected.
There are lots of low hanging fruits not just in developers tools, but they don't seems to care. Instead they spend massive resources on stupid Shows for Apple TV+. Every time I see hundreds of million spent on Shows and that heartless attempt called Apple Music I just felt Apple needs a taste of awful medicine that Steve Jobs once had.
But Apple rejected it, so the developer lost out, and I lost out. I could not accept that Apple was preventing me from running an app on hardware I "owned"! I never bought another iPhone after that.
I've been an Android developer since 2010. But now I've realized that Android has similar flaws because it is controlled by one corporation:
=> 30% Play Store transaction fees!
=> Apps delisted without any explanation
The freedom on open platforms is vital; so I will invest more time in them than in closed ones.
With all apple's talk of privacy, I would love to be able to firewall the phone, see what apps are doing and prevent some of them from doing it. This includes apple apps.
But apple doesn't allow these sorts of things.
I installed adblock ios which allowed this (vpn though 127.0.0.1 which blocked things), but then apple changed their conditions so the developer had to cripple their app further.
Further back, I had an app that could show wifi signal strength which was incredibly useful -- but then apple banned it.
Even as someone with heavy "tech nerd" needs (e.g. a mosh session that is always open to my server), there is very little I want to do on an iOS device that I can't do with tools provided by developers via the App Store.
Has anyone actually noticed that if you use Gmail on iPhone and you’ve got Chrome installed it will use Chrome by default?
PS: I’ve generally use Firefox though
It's not that (most of) these companies are egregiously terrible at being fair, percentage-wise. It's that their scales are so incomprehensibly massive, and their business interests sufficiently high-level, that people will always fall through the cracks. Always. Entire lives comprise a rounding error. And then in most cases those small businesses have no alternative; they're simply shut down. This is a problem endemic to any sufficiently large platform monopoly (or duopoly, etc.).
If you run to the press and trash us, it never helps.
Always my favorite. Safari + The Internet is what exactly?
> If your App looks like it was cobbled together in a few days, or you're trying to get your first practice App into the store to impress your friends, please brace yourself for rejection. We have lots of serious developers who don't want their quality Apps to be surrounded by amateur hour.
Are these from an alternate universe?
There are a lot of very shoddy apps in the App Store, enough that it can be hard to find decent ones for all the crap.
> YOUR APP IS TOO SIMILAR TO TESTFLIGHT, WHICH CREATES A MISLEADING ASSOCIATION WITH APPLE PRODUCTS. WE ENCOURAGE YOU TO REVIEW YOUR APP CONCEPT AND EVALUATE WHETHER YOU CAN INCORPORATE DIFFERENT CONTENT AND FEATURES TO BRING IT INTO COMPLIANCE WITH THE APP STORE REVIEW GUIDELINES.
To be honest, I kind of agree with Apple on this one. What does Windmill do that Testflight does not already do? The author states:
> Windmill on the iPhone allows an organization with an iPhone app under development to make that app available for distribution on any devices they own, as documented in the iOS Deployment Reference.
So does Testflight.
> It makes use of ad-hoc distribution to make it dead easy to get started as a small- to medium-size business, with app distribution to half a dozen or so devices, while progressing towards TestFlight.
Ok, the distribution for test flight might not be "ad hoc", but most end users don't care how it gets published. If it saves a substantial amount of time / clicks, then yeah that might be worthwhile, but based on the product description it's not very clear.
> It allows businesses to distribute their app continuously while still in development, at regular time intervals, on demand, or as a reaction.
"Sorry, your game 'Deus Ex' was rejected because it is too similar to 'Half Life' and creates a misleading association with Valve products. We encourage you to review your game and evaluate whether you can incorporate different features."
I imagine this is more like that time Google tried to submit the Chrome installer to the Microsoft Store and was rejected because the policy for web browsers in the store is that they must use the EdgeHTML engine .
First, it is really disheartening to read Leoforos Syngrou's tale of dedication, inspiration, and going all-in with iOS development only to have his app rejected. I hope Syngrou can find the wherewithal to continue on his journey of software development and I think one place he might actually try is with Apple itself. He's already worked as an iOS developer and I also think he might try working for another iOS team (or as a contractor) in order to fund another foray into independent iOS development.
Or maybe leave the Apple ecosystem and take his considerable talents elsewhere. Basically, I'm saddened to hear he's burned out and wish him as speedy a recovery as possible.
Finally, and this is going to go against the grain of the hacker ethic prevalent among many of us HNers, I think it has to be said that being anticompetitive may be unethical but it is not illegal in the framework of US antitrust law unless the company uses a monopoly position to extend its dominance in other markets.
Independent developers and second-party shops must be very cautious and circumspect about their business prospects if they do not have a formal contract with the owner of a platform for which they are developing.
Syngrou should be proud of his accomplishments and not take Apple's rejection of Windmill as the final say about his skill and promise as an iOS developer, let alone a developer of his caliber and dedication.
 I understand this is a difficult and uncertain road, but it's worth a shot. I say this as someone who works on an Apple campus.
EDIT: fun -> fund; "among most of us HNers" -> "among many of us HNers"
Yes, anti-competetive behavior in an of itself isn't illegal, no one argued that to start with. But the bit about it not being illegal isn't strictly true. You got it backwards. Antitrust laws are about companies being anti-competitive, not simply monopolies. FTC has fined lots of companies for being anti-competitive.
I’m not greek but thats “Syngrou Street/Road” where he is based...
These days, even those options are gone. You can’t sell it or install it in any normal way if the platform vendor doesn’t like it. You will even need to “notarize” side installs (which will kill truly free software because no one should need $99/year to distribute what used to be free).
And the only thing worse than all the rules is the brutal inconsistency of it all. Had this person lucked into one of Apple’s “meh, sounds fine, Approved!” reviewers, there would have been no rejection and no blog post. It is really a crap shoot, where lots of crap gets into the store too.
On Android, you can distribute, download, and install .apk files outside of the Play Store . There's also an app called f-droid  which acts as a 'store' for some open source apps.
There are even big companies distributing Android apps directly via downloaded APK - gambling apps aren't allowed on Google Play, but Sportsbet in Australia still did a splashy TV campaign for their Android app APK:
This is against the guidelines and an indie app doing that would get removed from the App store but because it's Google I guess it's not being done.
In a democracy the people writing the laws are not the ones applying it (law makers in a parliament v. lawyers in a justice court) and app stores don't respect that rule. I'm OK with Apple making its App Store the only way to download apps for security but the authority taking care of which ones are accepted/removed should be independent and open in some way.
Whatever risks there are on iOS are also on macOS. Security is not a great argument. Yes, add Gatekeeper or a red blinking alert if you want, but I should be able to install any app I want without jailbreaking my device. There are many ways Apple could solve this if it wanted to.
On the other hand... it's heartbreaking to see someone spend so much effort on a project and fail, but Windmill was never going to pass through the review process.
Personally I would never bet my future on iOS unless the App Store policies change drastically.
You mean non signed apps or apps from outside the Mac App Store?
We only have two options?!? That’s fucked up! This is not at all an okay state for software development ecosystem!
There’s a virtual monopoly on consumer applications! That’s the actual, real problem!
I think more the concern is they own the stores too
Sometimes we get so married to an idea that we forget to check in with reality..
And as someone who still plugs away at it, I will create a MVP and submit that to Apple, to make sure they will like the idea of it.
Unfortunately, most apps that I use aren't distributed through the Store, and I sympathize with developers who try to avoid it. Most of the apps that do get published tend to be really low quality, often repackaged open source software.
I don't think it's likely that an App Store-only future will come to pass. As Apple has locked down macOS over the past decade, they've always left an escape hatch for advanced users. And iOS has been loosening up little by little.
Fortunately I started playing with React and React-Native for fun. I landed a React-Native position 2 years ago doing both iOS and Android, and am about to switch to a full-stack position, since I also do Django.
The initial idea of owning the whole iOS platform and being able to control every single API worned out after a few years, and I'm glad to be escaping that specialized dead-end.
What drives me to develop front-end apps too is that the threshold to get them into the hands of users is much lower than for apps.
I'd highly recommend you five React-Native a go.
Responsive webapps - go for it.
Native code? You're building on someone else's land.
Like, there are endless justifications people come out with, I guess it's because they really want to develop on iOS specifically, or just want money (and there's a lot of it out there), but at the end of the day, it's all gone in a heartbeat and there's literally nothing you can do about it.
I can't even fathom how I'd feel in the author's situation, and not starting sidesteps the issue entirely.
As a developer, writing responsive web apps provides decentralization, not being a slave to a monopoly platform, being able to push frequent updates, etc.
As an end user, I almost always prefer web versions over native apps. I have a very small number of iOS apps installed, like a very good Go game, Chess game, a few development tools on my iPad, and my bank’s app.
On my MacBook and Linux laptops I have open source software development tools and Firefox.
I hope I don’t sound too political here, but I feel the need to constantly push back against corporations and uphold my rights as a tiny minority (me!, not a democrat, republican, vegetarian, whatever). I sometimes choose to be a paying customer of Google, Apple, Amazon, and Microsoft for services that I highly value, but they don’t own my loyalty except for a few products that I am at this time happy to pay them for at this moment in time.
Which is why I feel for the guy and hope he solves his burnout problems, but there’s a tons of misdirection going on here. Once you strip out the inspo photos…it seems he’s trying to build some sort of CI tool he calls windmill – sure, fine. Let’s evaluate accordingly…
> I had hacked together a continuous delivery pipeline using Jenkins and Apple’s Command Line Tools and I thought there must be a better way to do this.
And yet, no real description of what that might be. If you dig into it, he’s basically trying to automate allowing contractors to sign code using their customer's code signing certs by having them install something on dev machines + build servers. Which is an interesting experiment…EXCEPT that’s 100% against the terms of the Apple Platforms Development Agreement and the iOS / code-signing security model.
Apple’s been clear on this for a while now (and seemingly to him): If one exports an iOS app using dev/ad-hoc profiles, it has to be for limited distribution among individuals within the same business entity (very manual, UDIDs, physical connections to Xcode, etc) Or using TestFlight. He never addresses this, and the HN community is happy to make him the misplaced martyr of big bad Apple restricting indie devs. Maybe, just maybe, he’s missing the bigger picture. Why could that be...?
> I had just left my job and I was thinking of quitting the software industry too.
> Still, I had Windmill to carry me forward. I took a leap of faith and jumped into the unknown, being all poetic. Windmill allows me to have freedom of expression, be creative
Uhh...poetry is nice, but we were talking about CI. As his target audience, I'm not looking for tooling that strokes an author's ego about freedom of creative expression. I am looking for meaningful, well-built utilities. I expect Apple as the OS vendor and App Store operator to maintain the security model so I can continue to build software on a robust and secure platform.
> My dedication to see Windmill through and in the process take control of my life and destiny. You see, Windmill as I envision it, is more than just a Mac app. Literally and figuratively speaking. It’s hard to put this into words, no matter how much I try. It’s a vision after all. My dent in the universe.
This is exactly why it's a terrible idea to derive self-worth based on a software project, regardless of what the project is or what platform it's for. When that happens, it's too easy to avoid level headed introspection and retrospection on what one is building.
tl;dr; Article's author is trying to publish a misguided iOS CI tool to the App Store. Idea has some big conceptual issues (both UIX and technical architecture), looks like a bad Xcode + TestFlight clone, liberally rips off of Apple's dev toolchain IP, etc. When faced with such things, doubles down on inspospeak rather than accepting the reality check. Now is blaming Apple.
Balance one guy's opinion against the 30+ major iOS deployment/distro/CI/automation tools & frameworks out there on awesome-ios alone. Contributors to fastlane, Carthage, CocoaPods, etc are still going strong and the dev ecosystem is better for it.
Also, your special character at the end is showing up as a black square.
In a former life I was an iOS developer, and got my share of App Store rejections. It's important to not take it personally. A rejection letter from the App Store is not some personal judgment of your morals, an insult to your coding ability, or a referendum on how good/useful your software is. It's simply a notice that as it stands, they won't publish your app through the AppStore for [reasons]. You can disagree with the reasons, and reasonable people can debate whether the reasons are fair or not, but you're not some kind of lesser developer just for getting rejected.
Sometimes you can fix your app to comply with their rules, and sometimes the fundamental concept of the app is incompatible with AppStore distribution and you can't. Either way, it doesn't necessarily mean the app is shitty or that you're "on Apple's bad side."