Xcode Through the Years
martiancraft.com
martiancraft.com
it shows the same obesity as the company's shareholder value.
A big amount of money produces a big amount of things.
Conway says, the product resembles the producer.
Never expect lean things from big corps, no matter how slick the name.
Try half a million.
You mean an IDE only for Swift or only written in Swift? That last few projects I worked on that involved Swift all had some Obj-C or C++ components, so no matter what I would really like support for other languages in an IDE they offer.
>And storyboards? Don’t get me started.
Does anybody use them?
Xcode alone almost justifies the 30% cut on apps. A single developer can do remarkable things because of Xcode + Swift + SwiftUI+ Package Manager + all the fixings for cross platform (Linux, Windows... etc).
Strong opinion: this will win all the things (building a language tightly with a development environment, old intersection of software + hardware vibes)
Relatedly: Vapor is doing great things Swift Server Side, and Tokamak is bringing SwiftUI to the web like WebObjects aimed to do... I have yet to go deep into embedded works with Swift, but I believe that CL left some goodies based on his previous experience.
Even after being 5th degree burned by Mac gatekeeper, I hold these opinions -- eventually it will be write once, run everywhere.
Seeing where it's all heading makes one as giddy as a young Woz
Come on, that’s ridiculous even if I take it as an exaggeration. On what grounds would it have anything to do with the revenue one creates through an app they made? It would be an equivalent of the canvas’s manufacturer Mona Lisa is painted on wanting recognition for their work.
> It would be an equivalent of the canvas’s manufacturer Mona Lisa is painted on wanting recognition for their work.
Come on, that’s ridiculous even if I take it as an exaggeration.
Are we really trying to equate the millions of man hours it takes to get an M1 and A1_ into production, then fine tune the assembly calls for Swift, then the UI frameworks, QA, testing, planning, etc., till the point an app can be downloaded from the App Store by anyone on earth,
... to a canvas?
-------
In my mind, it is a buy in to the Apple ecosystem present and future. Yes my models look different without the 30% or 15% cut, but I have written apps in almost all languages now, and my time from idea to MVP, that can scale leveraging iCloud Sync, etc, is 1/10th that of anything else I've tried with Swift/Xcode/AppStore.
Additionally, developers get to ride in on Apple's market segment. They are doing a lot of heavy lifting to create a customer persona that we can follow if we learn a bit about the cohort... which is another separate value beyond a technical one (think FB level attributes baked into just targeting AppStore)...
Finally, I believe the current pricing encourages all of us to hold our apps to a higher standard, and I appreciate that. Things of intangible value (game coins) have high price elasticity because they directly derive little value... so producers of this good want to lower the cost because it affects their ability to profit. Apple has instead said, 'actually, no, we know the nature of what we sell, the good and the bad. Intangibles can be powerful tools or they can be soul sucking mind-holes. If your product is so price elastic, it doesn't hold the value we are trying to promote on AppStore.'
Honestly Apple shouldn't have anti-trust issues... its current messaging presently doesn't realize its value and strength, which gives it trouble.
Last bit: this is written in haste, so please don't take any of this personally or curtly... it's meant in respect.
The only competitors were Eclipse, and VI/VIM and other lightweight editors. But, even Eclipse, initially was part of the IBM premium enterprise tools, called Websphere.
So, just like they released the iOS updates for free, and MacOS X for free, (in 2008-2009), Apple has been a true innovator in this space. Microsoft and Co were always chasing behind.
And Visual Studio was much better than Xcode (and probably still is). Yes, it was not free, but it was worth its money. I know guy who used Visual Studio to write code for Linux.
Xcode is not even open source. Intellij is open source, Eclipse is open source, Visual Studio Code is open source.
At this point they should just write VSCode plugin to edit storyboards and language server for objective c and swift. Xcode is beyond redemption.
I was making exactly zero dollars as a developer at the time. Or, I suppose, negative-three-grand, actually...
So another thing: all of the documentation (which is in need of some work). Books, web sites, Youtube channels, free tutorials... That stuff wasn't free in 1993, either.
Mac price ~= PC + VS Professional
How much does gas cost for truck drivers?
In what world do you live in, exactly? Plenty of FANG engineers don't get paid a fraction of that. If you dare gaze away from your belly button and, say, outside the US borders, there are plenty of developers who barely earn 20k pre-tax.
It's also not 'spending 100 dollars on their tools', it's spending $100 yearly to upload your app to the app store. You have to spend money on tools on top of that.
Truck drivers get their gas costs reimbursed. If they wouldn't, I'm sure that would complain about gas prices as well.
Only if they’re working for a boss. If you’re a starting independent truck driver, you pay for your own gas.
I would think iOS developers are in the same boat.
Here in Russia paying for software is kind of a novel idea even today. Back in the mid-00s, literally no one even considered that as a possibility. You could go to a store and buy a pre-cracked version of Visual C++ on CD for 60 roubles (~2$ at the time). I still have mine somewhere.
And macs were so expensive no one could afford one. My first contact with OS X was through installing hackintosh on the PC I had at the time.
Internet piracy is of course a thing, but I'm not sure physical pirated media was ever this available here.
If you want to pay, you have to register for an account, provide your card info, get the key, activate, etc. If it's a subscription, it gets even worse.
If you don't want to pay, you download the torrent and install the thing. Maybe you follow the (often simple) included instructions to crack it, if any. And that's really it. It just works forever. I remember that story how then-CEO of VKontakte paid for photoshop (back when you could pay for it just once), couldn't figure out how to download and activate it, and just torrented it because it's this much easier.
They closed those CD stores when Russia joined the cartel^W WTO. But by that time, high-speed internet was getting ever more available, and so naturally people just switched to downloads.
And another thing about Russian mentality: we REALLY don't like asking for help it seems. When you've bought something, you're on your own if you have any problems. Maybe ask for help on forums or something, but official support channels? Nah. Like, I'm well aware that Apple provides tech support, but whenever I have any problems with Apple products, the thought of contacting that tech support doesn't ever cross my mind. In many people's minds, me included, your relationship with the manufacturer or seller of the thing you're buying ends the moment the transaction completes. It's probably vastly different in the west.
I am used to figuring things out, but I did ten years of corporate tech, I got paid to provide that support for the employees of my employer. It was my responsibility to get their things working. So I got used to calling for vendor support, usually a support contract, and just got used to working the problem with whatever help we needed, within budget limits. This was in the 20th century.
But my extended family, they wouldn't dream of such things. They figure if you call for help, it's just going to be more people trying to get money out of you, like everyone is trying to fool everybody else. They just buy the cheapest thing they can get, then if it doesn't work they either take it back to the store for refund or they give it up as a bad job.
I will come to Russia some time, buy a cheap laptop and take it home and use it for a week, then bring it back to the store for a refund because it doesn't work. How will that conversation go?
We could put the video up on the YouTube. :-)
Consumer protection laws aren't as strong in Russia as they are in the US and Europe. But generally electronics come with 1 year warranty from the manufacturer. So if it's legit not working, they'll probably replace it with another that is working.
Returns are complicated. IIRC stores are required to take a return if the item is in a condition in which it can be sold again (sealed box, or all tags intact in case of clothing). But anything further than that is their own concession and thus varies. Some places like Ikea have a policy of "return within one year from purchase showing the receipt and your internal passport (ID), you get a refund, no questions asked". Some don't. Some electronics stores would let you test the thing in the store before you take it home, some would say "you have N days to test it at home, bring it back if it doesn't work".
I also know a guy who bought a phone to test an app he was making, then tried to return it. Wasn't a painless process, but he did succeed in the end.
Returns will erase retail margin (profit) pretty quickly. Big companies like IKEA can deal with that, I suppose, but it does take work.
I managed to get to Russia, in 1990. I didn't shop at Ikea.
There was no Ikea, but the first McDonalds opened in Moscow in 1990 and many minds were blown.
So yes, these extended return policies are one of the things retailers use to compete.
It's very bizarre and contrary to the ethos of macOS applications that's existed for decades I believe.
It's not like the company can't afford to throw some resources at it. But it... doesn't. And the process for extras like AU plugin development - not central, but a significant mini-economy in the ecosystem - used to be so much simpler than it is now.
That aside, historically my favourite accessory was Quartz Composer. It ended up being a dead end, but personally I had a blast experimenting with it and building generative animations.
A decade ago Apple would release a new, pre-release version of xcode at each WWDC with new features. The new version would be unstable, but it would become stable over the next few months with subsequent point releases.
At some point the stability work seemed to never quite get there. And now it seems like Apple is in a cycle of adding new features, launching them before they're ready, and not getting stability back to baseline before the next WWDC comes around. And next year's WWDC needs new features to be announced. XCode is now in a never ending "preview" state, where none of the features added in the last few years (since Swift) work properly. And someone at apple is acting as if what everyone wants is yet more features. (Or, more likely, the manager will only be promoted if they manage to release new stuff).
From the outside it seems like XCode is slowly drowning.
A few years ago Apple announced Snow Leopard. There was no headline feature. Apple just spent the whole year making everything more stable and faster. When they announced this it was met with thunderous applause. Snow Leopard turned out to be the best release of macos ever.
XCode desperately needs to do the same thing.
The only higher quality IDEs I can think of (and maybe this is sad) are the IntelliJ family and (maybe) VSCode.
Found your problem.
http://www.nextcomputers.org/NeXTfiles/Docs/NeXTStep/3.3/nd/...
XCode was a massive improvement over ProjectBuilder, not the least of which because it had an integrated editor. It was an actual IDE.
https://www.oreilly.com/library/view/mac-os-x/0596003706/ch1...
I imagine what happened was: when Apple acquired NeXT, Apple's dev teams built an entirely new application, initially still called ProjectBuilder, as part of the Carbon development effort. This is what eventually became XCode. Or perhaps NeXT had this in their pocket but had not released it yet (this seems much less likely).
But this had little to do with Project Builder on NeXTSTEP 3.x and 4.x.
In many ways it’s pretty good, but there’s some omissions and other behaviors that I find simply astonishing.
Why can’t I view two code windows side-by-side? Why can’t I dock the controls library so it’s always visible? Why does the documentation view always have to be on top of everything else? Why can I zoom the Interface Builder when building iOS applications but not Mac applications? Why do things just kind of stop working and require restarting every couple of hours?
In many ways Xcode just seems to lack a lot of the polish and capability Visual Studio has.
I tried playing with Visual Studio and Xamarin on my Mac to see if it could accelerate development by allowing me to leverage my familiarity with C# and found it to be so cumbersome (change to Xcode and mess around with IB, switch to VS, switch back to Xcode…ugh) that I just ditched that flow completely and went all in with Swift/SwiftUI/Obj-C instead.
> Why can’t I view two code windows side-by-side?
This works just fine. You can have unlimited horizontal panes each having the same or a different file. Or, you can open a second Xcode window of the same project (e.g. right click a file and open in new window) hide the UI and you have multiple editor windows for the same project (something VSCode can only do in a limited fashion)
> Why can’t I dock the controls library so it’s always visible?
This actually used to be how it was before. It got changed into an overlay panel a couple years ago.
> Why can I zoom the Interface Builder when building iOS applications but not Mac applications?
It’s an implementation detail of how it works under-the-hood. iOS interface is rendered in what’s essentially a simulator and screenshotted, so you can zoom the result freely. For macOS the controls you are seeing are real Mac controls, which do not render at arbitrary magnifications.
You can: in general, pressing option will open a new code editor (the exact behavior is configurable in Preferences > Navigation > "Optional Navigation"). For example, option-click a file in the Project Navigator to open it in the "next" editor; this will open a second editor if only one is open.
In exchange, I'd genuinely like to know how to open more than one solution at a time in Visual Studio for Mac. I know about the checkbox in the Options panel of the Open dialog, but if you don't remember to turn that off every time it closes your existing solution. Also, it's documented that holding the Control key when choosing from Recent Solutions has this effect, but that has never worked for me.
But some things really need to be fixed:
- Downloads are getting way too big, and most of this is all the platform SDKs. Those SDKs should be removed from the initial download and instead installed when actually needed or with an integrated "package manager". As it is now, I'm just using 3 (iPhoneOS, iPhoneOSSimulator and MacOSX) of the 7 installed SDKs, the other 4 SDKs (2x AppletTVOS and 2x WatchOS) are just dead weight.
- Don't know how it's in Swift, but starting for the first time into the debugger takes 5..10 seconds, even on my new 14"MBP, and even for trivial programs. This used to be instant a couple of years ago, but then got worse over time.
- The debugger's variable view panel is way too bare bones, and doesn't seem to have been improved much in the last two decades.
- "Schemes"... 'nuff said.
- Something needs to be done about the extension/plugin ecosystem (e.g. there is none, just a handful of extensions in the app store), look at Visual Studio Code for inspiration.
Also, I'm not sure what the "new build system" is about, but from my point of view it didn't really improve anything over the old build system. Maybe the resources should instead have been spent on something that actually benefits users.
Plenty of good stuff too:
- The clang static analyzer integration with the 'arrow visualization' is brilliant.
- AFAIK it was the first IDE to integrate ASAN, TSAN and UBSAN easy enough to use "for the rest of us".
- Probably also the first IDE with realtime memory usage visualization, Visual Studio only got this in VS2015 if I remember right.
- The Metal debugger.
https://paulhammant.com/2013/03/28/interface-builders-altern...