
Dear Apple - pepibumur
https://github.com/dear-apple/dear-apple
======
fleshweasel
It's absurd to have to beg the wealthiest software company in the world for
what should be considered really basic stuff. Xcode is consistently unstable,
slow, missing simple essential functionality (like refactoring), and Apple's
interface builder is something that most experienced Apple devs know to run
for the hills from.

~~~
IBM
Apple is not a big company. Out of the 116k employees they have 60k are in
retail [1]. Another 6k are in AppleCare call centers [2]. So about 50k of them
are at corporate. Contrast that with Google which has 72k employees [3] and
Microsoft which has 120k employees [4].

Apple's organizational culture is meant to be about small teams. Steve Jobs
once said "we're the biggest startup on the planet" [5]. This leads to
complaints about various neglected features or products and calls for Apple to
hire more employees or spin off divisions so it can have dedicated resources.
Just like people will always complain about the quality of service at
airlines, Apple watchers will always complain about whatever pet issue they
feel isn't getting enough attention. That there are complaints doesn't in and
of itself mean that Apple needs to change their organizational culture. These
complaints always miss the opportunity cost of the changes they suggest: that
Apple is Apple _because_ they are resource constrained.

[1] [http://fortune.com/2016/01/28/apple-retail-ahrendts-
employee...](http://fortune.com/2016/01/28/apple-retail-ahrendts-employees/)

[2] [https://www.nytimes.com/2016/11/21/technology/how-apple-
empo...](https://www.nytimes.com/2016/11/21/technology/how-apple-empowers-and-
employs-the-american-working-class.html)

[3]
[https://abc.xyz/investor/pdf/20161231_alphabet_10K.pdf](https://abc.xyz/investor/pdf/20161231_alphabet_10K.pdf)

[4] [https://news.microsoft.com/facts-about-
microsoft/](https://news.microsoft.com/facts-about-microsoft/)

[5]
[https://www.youtube.com/watch?v=f60dheI4ARg](https://www.youtube.com/watch?v=f60dheI4ARg)

~~~
kbenson
Did you seriously just try to convince me that a 50k employee (by your logic)
company is not a big company?

~~~
coldtea
I'm not sure what flaw you found in what he wrote, or why even ask.

Obviously it's not the absolute number (50k) that counts, but how it's
distributed. (And those 50k are not even all programmers).

If you do an OS, a mobile version of it, an embedded version of it, your own
language, several huge SDKs, your own mail app, your own calendar app, you own
spreadsheet, your own word processor, a TV appliance, the biggest mobile app
store on the planet, your own logic board and CPU designs, the biggest music
store on the planet, another large desktop app store, your own DAW, your own
NLE, your own compositor, your own broswer, your own javascript engine, your
own AI, your own Maps, and several other things besides, then no, "50k" might
not be enough.

Microsoft has 5000 programmers just for Office.

~~~
jblow
SpaceX has 5000 employees and they design, build, launch, and LAND rockets.

~~~
sjwright
A much easier feat than having to deal with retail customers in shopping
malls. Physics is much more rational.

------
meesterdude
Wow, it's that bad for developers of their own platform? I do rails
development and left OSX for linux a few years ago after finding all the
custom song & dance to do things on apple was painful. Not a day goes by I am
not grateful for doing that, i am much happier doing web dev on a linux box.

But I was under the impression Apple at least took care of the devs who work
on their platforms.

As someone else has noted: vote with your keyboard. I do ROR web development
in part because I am free of many of the constraints other devs must face on
custom platforms.

If you don't like doing dev with Apple, don't do dev with Apple. Either pick
better tooling (if available) or ditch the platform (if possible).

~~~
tlrobinson
Can you give some examples of advantages of doing ROR development on Linux vs
Mac?

~~~
majewsky
Not the grandparent, but I can share one example: Our team deploys OpenStack
and is developing a custom dashboard in Rails. I'm more of a backend guy,
although I also do my fair share of frontend development. But I had a ticket
in my sprint, just a tiny UI bug, but I was busy in the backend, so I asked a
junior dev to take care of it. He cloned the repo, then proceeded to fight
with rbenv and postgres and what not on his Mac for a full 2 days, until he
gave up and spun up a Linux VM on OpenStack to work on the Rails app in there.
Sure enough, he got up and running in there in under an hour.

Shit like this is why I do all my development in a VirtualBox with Arch Linux.
While my co-workers argue about the best way to install Docker on their Macs,
I just `pacman -S docker && systemctl start docker` and get on with my life.

~~~
manmal
He likely had some old Macports or whatever binaries lying around in his $PATH
(it was that for me the last time some libs didn't compile). Would Linux be
immune to that, if you had 2 concurrent pkg managers?

You could probably run vanilla macOS in a VM without running into any
problems.

~~~
majewsky
> He likely had some old Macports or whatever binaries lying around in his
> $PATH (it was that for me the last time some libs didn't compile).

He only ever used Homebrew as far as I know.

> Would Linux be immune to that, if you had 2 concurrent pkg managers?

How would that ever happen?

------
LeoNatan25
Apple works with their bug reporting system; instead of encouraging people to
"sign" "letters" (on Google forms no less) - open a bug report at
[https://bugreport.apple.com](https://bugreport.apple.com), post the bug
number and encourage people to duplicate it. This is the only way to move
something at Apple.

~~~
chmaynard
You're joking, right?

~~~
LeoNatan25
No, I am completely serious. This is how things work in big organizations.

~~~
saurik
As far as I've been able to tell, Apple engineers use "file a radar" to mean
"I'd rather let someone else triage that, or even better yet I'd rather you
get lost in the system, so here's a quest for you to go on so I can get back
to work", particularly as we all know that at the end of that quest the result
will be "marked as duplicate", past which point Apple refuses to give you any
more information or even a follow-up. I would honestly rather there just be an
e-mail address bugs@apple.com to which I could shoot off random issues I run
into, from which I _know_ I'd get no response, than Radar.

~~~
eridius
That's a rather insulting comment, and it's completely wrong. Apple engineers
tell you to file a radar because if it's not in radar, _it won 't get done_.
Period. Radar is the way Apple engineers track work that needs to get done,
and if nobody files a radar, it can't be tracked, prioritized, assigned, and
completed.

~~~
jvz
The problem is that _none of that is apparent to an outsider_. You can tell
developers that filing radars is important until you're blue in the face, but
as long as dealing with Radar from the outside is functionally identical to
talking to a wall, you shouldn't be surprised when you get pushback like the
parent's.

If you find that "insulting", consider how it feels to be told to go through
the work of filing dozens of most-likely-duplicate reports simply because
Apple won't deign to allow searching existing reports. Regardless of whatever
excuses they give for that, it sends a very clear signal about how Apple
values the time of third-party developers.

~~~
eridius
> The problem is that none of that is apparent to an outsider.

What exactly isn't apparent? How Radar is the way things get done and you need
to file a Radar if you want anything fixed? I'd think that's crystal clear
given that every single Apple engineer you talk to will explain this to you.

------
hd4
I made a conscious decision a while back to simply use a Linux distro (Ubuntu)
with easily/cheaply-available commodity hardware for programming. Correct me
if I'm wrong but other than iOS development, there isn't anything I can't do
on Ubuntu with a 2010-ish laptop that I can do with a 2016-ish Macbook.

~~~
nurettin
In my personal experience, with everything else being equal, iOS development
yields on average 6x more income than Android development. I haven't found a
decent alternative, yet.

~~~
hd4
Which is why I feel for a lot of us who don't own Macbooks, it's a major
sticking point, and you get a lot of people trying out "Hackintoshes" (which I
don't really have much of an opinion on).

I just wish Apple had taken the Google route and made development a lot more
open, not sure what they stand to gain by keeping even iOS development a
walled garden but hey it's their platform to do with as they please.

~~~
nurettin
And they have every right to build a paywall and make the developers pay for
it.

The only redeeming Apple product I found is the mac mini which gives low-
budget developers an easy access to their expensive platform.

------
vrutberg
As a developer who moved from Java and JavaScript (IntelliJ IDEA) to Swift and
Xcode about a year ago, the experience has been horrendous. How is it okay for
a company as big and serious as Apple to have an IDE and tooling as bad as
Xcode? The IDE frequently crashes, there is no refactoring support at all,
practically non-existant code completion, syntax highlightning frequently
stops working, etc etc.

~~~
wsc981
I've been using Xcode for many, many years now. In the past (~8+ years ago)
I've used Visual Studio.

From my perspective Xcode is a really nice IDE. I prefer the lean UI compared
to Visual Studio and Xamarin. The only thing that annoys me is that since
Swift the syntax colouring and autocompletion breaks multiple times a day.
This is a slight annoyance for me, but otherwise I personally think it's a
decent IDE.

I don't experience the crashes like you do. And I've never really used much
refactoring tools in the past, so I guess I don't know what I am missing out
on.

But you might want to consider AppCode from Jetbrains. Apparently it supports
both Objective-C and Swift and it's refactoring support -at least- should be
good.

~~~
bartvk
Yup, I agree. I think Xcode is not bad at all. I wouldn't call it great, but
it's good enough. I get a hard crash every couple of weeks. Autocompletion
breaks maybe 2 times a week, and this month, I haven't seen syntax colouring
break.

It used to be worse, of course. Especially in Swift 1.x and 2.0.

------
politician
@dang Can you add the repo name to Github URLs that point to repos? For
example, display the title as "Dear Apple (github.com/dear-apple/dear-apple)".

I thought this was a letter from Github to Apple, but was disappointed to
discover that it was a letter from some subset of the Apple developer
community.

I recognize that this is sort of pulling at a thread, but since Github is so
widely used, perhaps some sort of exception can be made?

------
JustSomeNobody
These letters always come off as sounding immature. The open letter, the why I
quit, the why I switch letters all do. It is as if you need validation for
something.

~~~
valuearb
I develop in Xcode every day, and it's usually the least of my problems.
Everything this letter asked for is an I don't care for me.

~~~
AsyncAwait
I guess you're lucky, because I fight SourceKit crashes every couple of
minutes.

~~~
slavapestov
You can find SourceKit crash logs in Console.app; can you file a bug and
attach some of them?

~~~
AsyncAwait
Sure, I'll have a look and file some bugs.

------
makecheck
While I have slightly despised Xcode ever since 4.x when they integrated
Interface Builder and everything else unnecessarily into one buggy app, it has
only been _completely broken_ for me with the latest version. “Something”
makes typing s...l...o...w......a...s......h...e...l...l... and I have never
figured out what. The editor became utterly unusable no matter the project and
I was forced to do every change outside of Xcode.

I am very thankful that they at least had the wisdom to expose "xcodebuild",
etc. as command-line tools, because I have always set up my primary build to
rely only on the commands. (Even when “building” from Xcode, the build that I
click runs "make" underneath with xcodebuild.) That way, I never _need_ to be
in the GUI and can work around its quirks or bugs that make it unusable, which
has paid many dividends.

~~~
bartvk
That's very interesting. What code editor do you use, and does it support good
auto-completion, navigation and the like?

~~~
makecheck
Just using "vim" in a terminal, although I install some plug-ins to give me a
bit more power while editing code (like "nerdtree.vim" and "a.vim").

------
Clubber
I've given up on App store development. I wrote a handful of moderately
successful apps in the 2009-2012 range, but the market is too crowded and the
expectation of free, or near free software isn't profitable for the small team
of "just me."

They do fascinating work though. Making a living with Microsoft technology at
my day job(s) for two decades, Apple stuff was a refreshing change.

------
jmkni
The best way to build native iOS applications is in Visual Studio with Xamarin
IMHO.

It pulls in the UI designer from XCode, and you get all of the advantages of
Visual Studio which is hands-down just a better IDE than XCode.

~~~
saurik
Yeah :/... I do not understand, nor have any sympathy for, all these people
who _insist_ upon using Xcode even though we all know how bad it is... there
are so many alternative toolsets you can use, including just vim+git+make,
that are just so much more stable and easier to customize to get the optimal
testing workflow, that to sit around and smash your head against Xcode over
and over again while constantly complaining to Apple, as if that is really
going to help, makes no sense at all :/.

~~~
AsyncAwait
> I do not understand, nor have any sympathy for, all these people who insist
> upon using Xcode

> there are so many alternative toolsets you can use

Actually no, if you want the latest, most supported tools, frameworks APIs
etc. you have to use Xcode.

Most of us don't want to use Xcode, but we also don't want to use C#, (Swift
is actually very nice), which IS NOT a native solution.

~~~
ghuntley
How does one define `native`? To me, native is using the platform API's
exactly - 1:1 - with zero abstractions. With Xamarin you do exactly that, in
either csharp or fsharp. When using Xamarin a UIViewcontroller still is a
UIViewController, you'll be directly interacting/pinvoking the underlying APIs
that you already know and potentially hate :p (cough Android).

See [http://continuous.codes/](http://continuous.codes/) for an example of
what can be done with F# and Xamarin.

~~~
invalidname
That is one way to define native. Another is to use the platform native source
code and provide access to that. E.g. on Android Xamarin includes an overhead
due to constantly passing thru the slow JNI bridge when it needs to
communicate with the native UI widgets. It also includes a relatively large
overhead because of standard C# libraries that need to be included on
iOS/Android.

OTOH Codename One (
[https://www.codenameone.com/](https://www.codenameone.com/) ) has a very
different interpretation of "native". They use their own widget toolkit like
QT which makes them "less native" in that regard. But they are native to
Android (being Java based) and translate directly to C/Objective-C which means
you can literally write OS native code and use native widgets within the
hierarchy.

I think native is a worthless word in that regard as it doesn't properly
convey meaning in these sort of complex situations. Once PhoneGap started
billing itself as "native" this all went out of the window...

------
snackai
Just stop pushing apps for iProducts. When all the major apps stop adding
features for a while Apple will focus on getting developers back or customers
switch to Android.

~~~
eddieroger
Yup, that. Vote with your keyboards. Apple writes software with the same tools
and languages - if they considered this stuff a problem, they'd have fixed it
by now. Besides, Apple has mechanisms for feedback, and it's not open letters
on GitHub.

~~~
orbitur
> if they considered this stuff a problem, they'd have fixed it by now

It's not good but it's workable. Which Apple accepts as a reason to focus very
few resources on dev tools.

~~~
eddieroger
Sure. My point is more if it's good enough for Apple at their scale - I mean,
Xcode itself is written in Objective-C with Xcode - and they're willing to
work around it, then 25 developers (at time of viewing) in a GDocs sheet and a
readme file will probably not be the straw that breaks this camel's back.

------
thedjinn
The one thing I'd really like to see is a more stable autocomplete. Having a
decently working editor should be prioritised above everything else in my
opinion.

~~~
AsyncAwait
Not only autocomplete, but syntax highlighting as well.

SourceKit seems to crash with every moderately complex expression.

~~~
slavapestov
SourceKit crashes are caused by bugs in the Swift type checker most of the
time; it's not SourceKit itself that's at fault usually. We did a lot of work
to fix architectural problems in 3.1, especially with generics, and there will
be more improvements in 4.0. It's definitely a priority now that the language
design has settled down.

~~~
AsyncAwait
That's great to hear & thanks for doing an amazing job with Swift. The
language itself is great.

------
tajddin
It would also be an absolute joy if we could actually refactor with Xcode.

~~~
Larrikin
I immediately downloaded appcode when I found I couldn't rename variables in
swift

~~~
scribu
But you _can_ rename variables in Swift 3 + XCode 8: move cursor to a symbol
and press Command + Control + E.

Sadly, that's the only refactoring support available right now.

~~~
mayoff
Sadly, that only renames within the current file.

------
cbsmith
It's kind of sad seeing developers beg for things they could build themselves
if the tool was open source.

------
codr4life
This is what you get for relying on proprietary software, begging on your
knees for crumbles while your supplier is busy pivoting themselves out of
relevancy. It's always the same game, and we never learn; as soon as the next
new shiny arrives, people get in the same old lines and beg for another round
of abuse.

------
sehr
[https://developer.apple.com/bug-reporting/](https://developer.apple.com/bug-
reporting/)

For anyone who signs this, make sure you throw a report at em as well!

~~~
wool_gather
And see also [http://fixradarorgtfo.com](http://fixradarorgtfo.com)

------
mmahemoff
They should recruit the services of Miss Swift, who received a swift response
from Apple when she tried this, albeit not on a Git repository.
[http://taylorswift.tumblr.com/post/122071902085/to-apple-
lov...](http://taylorswift.tumblr.com/post/122071902085/to-apple-love-taylor)

------
camdenlock
Oof. This isn't good for Apple, and I say this as a fairly big Apple fan.

From my perspective as a programmer, Apple's success has hinged entirely on
the quality and innovation of their OS and dev tools. For a long time, both of
these have been ahead of the game (since NeXT came to Apple).

They lose this advantage, they crumble. Mark my words! Go on, mark them.

~~~
AsyncAwait
They did develop Swift fairly recently, which is actually very nice, so it's
not like they're doing nothing for developers, but the Xcode team really needs
to pick thing up.

------
sebleon
As someone that has dabbled in Android development, I have to say that Xcode
is light years ahead of its competitors re: developer friendliness. It's
realistic from a complete novice to setup their environment and create a full
app in a few hours. Just getting your environment setup for Android can take a
whole day or more.

I'm surprised by how few of these comments actually touch on the suggestions
in this letter. Overall, they seem like small improvements that won't really
move the needle on Xcode's effectiveness... Breaking up targets to make 15sec
compilation times to <1sec would be nice though

Things I do with every project: -Don't use the interface builder, easier to do
all UI work programmatically \- Use Pods

~~~
mileycyrusXOXO
This is an exageration. Setting up a clean install for Android development
takes all of two minutes.

------
geophile
I use XCode for the absolute minimum, and when done with it, go back to
AppCode.

~~~
joe_fishfish
I'm surprised I had to scroll this far down to find mention of AppCode. The
ESP edition is even free.

------
chris_wot
I really don't know what Apple gets out of keeping XCode as closed source. Why
not open it up?

~~~
sebleon
There's always non-zero work involved with open-sourcing stuff. How would
Apple benefit from this move?

~~~
chris_wot
In much the same way that Mozilla benefited from open sourcing Netscape's
source. If they open source the code, then someone could work towards fixing
the problems in this letter, for instance.

------
CppCoder
Since their tools and software is not improving and each version brings new
bugs to enjoy, I am happy to see Microsoft support compilation of other
platforms with Visual Studio. The best would be Apple stops their whole
desktop lineup and focus on mobile Devices, making everything easily
accessible from other platforms. Maybe the way the Macs are updated is a sign
in this direction.

------
matt2000
I don't think it's considered a problem by the team at Apple, or even by some
developers, but I would love a more stable Swift language. The number of
changes per version * the number of projects in the world is causing a large
amount of work and instability. This is contributing to the low tool quality
as well.

~~~
dwaite
Swift 3 had a purposeful effort to prioritize syntax-impacting changes and API
changes as possible with the idea that Swift 4 and beyond would have backward
compatibility for Swift 3 code.

Swift 4/5 will establish ABI compatibility, so that binary swift libraries
will work across compiler versions

~~~
matt2000
Yes I know that's what Swift 3 was trying to do, that's what I don't agree
with. In my opinion the tradeoffs are just not worth it.

Whatever happened to graceful deprecation of older language features an APIs?
They invalidated all the related example code online and created a ton of
mandatory work for all iOS developers within a 1 year timeframe, that's nuts.
In my opinion :)

~~~
LeoNatan25
Why are you using a work in progress and unstable language? You should have
known from the start that, implicitly, that would require a lot of rewrites.
Developing a language, especially as all-encompassing one such as Swift, is a
very demanding task; what is the added benefit of having to support deprecated
language constructs and APIs? Tools are lacking as it is.

~~~
wool_gather
Agreed, but just anecdotally: I was job hunting over the last year, and I saw
very few posts that said "We're sticking with ObjC for now because Swift is a
huge technical risk" although I would have been happy to hear that.

There just seems to be a lot of momentum; everybody's excited about it,
everybody wants to be on the bus.

~~~
leonatan
That bus entails both good and bad, and everyone should be familiar with the
risks of developing in a language in this state.

Personally, I wouldn't take any job application that only lists "Swift
developer" seriously. Anyone serious enough about iOS development should know
that you always need both. Also, not a big fan of telling people what
technology to use forcefully.

------
0xFFFF0000
Normalization of Deviance - this is a not uncommon problem with organization
that grow as big and are successful. I'm curious on ideas on how a company as
big as Apple and it's somewhat unfocused relation with the developer community
can fix this? Maybe their CEO needs to call out to Developers.

------
sergiotapia
74 signatures is hardly a blip. I would've waited for at least 5000 signatures
before publishing this.

~~~
vortico
How do you get 5000 signatures without publishing it?

------
tubehouse
While we're at it, maybe we can put pbxproj out of its misery and get a modern
project file format and module system

~~~
AsyncAwait
There's the Swift Package Manager, it should be part of Xcode sometime soon.

------
afro88
Signed. But is there some way you can hide the email addresses on the Google
Sheet?

------
wool_gather
Can we give this HN post a better title? This is atrociously clickbaiting.
Granted it just goes to GitHub, but I would like to have at least an _inkling_
of what I'm about to read.

~~~
ryanSrich
Especially given the length as well. It's a small, short list of issues that
users of XCode/Apple Developer tools have. Why is this #1 on the front page?

~~~
infinisil
Because it's by far one of the most annoying issues every developer has with
Apple now. It's so frustrating to see the syntax highlighting and auto
completion engine crash continuously as you try to figure out what line causes
it just so you can rewrite it the more verbose way for the engine not to
choke. You may think this has to be a beta version or a newly introduced bug,
but no, these issues have been there in the official release for at least 1
1/2 years now. It got better over time, yes, but it's still far from being
where it should be.

~~~
majewsky
> it's by far one of the most annoying issues every developer has with Apple
> now

Every developer on an Apple device who actually makes apps for Apple devices.
There are a lot of devs on Macbooks who produce server applications that run
on Linux, possibly more than create iOS or macOS apps.

~~~
infinisil
Whoops, yeah that's what I meant to say

------
benologist
Xcode is 14 years old and Swift is a new language with no baggage that really
only needs to target iOS and has new APIs for graphics and more. Seems more
likely their goal would be a much-more simplified IDE for iPads that anyone
can learn that can only publish to iOS.

They also stopped making computer monitors and routers last year and haven't
updated most of their computers in years.

Best reason to host WWDC outside of SF this year is so it won't be a building
full of Xcode developers lol!

