Like you, I think that Xcode maybe gets a worse rap than it deserves, but it's also endlessly frustrating.
First, the performance is just bad. The responsiveness compared to apps like VSC or Panic’s Nova is night-and-day.
The attention given to the design of new features is piss-poor. Placing the AI functionality on the left sidebar makes no sense; all the other tools on the left are project management; the "let me run weird functions and interact with stuff" UIs like terminal, debug and logs are in the bottom panel. Or maybe a new tab in the main workspace area?
The SwiftUI preview canvas can't be floated as a separate window, making it all but useless on anything smaller than a 16" MBP (and only barely usable there). In fact, I think it might be impossible to use Xcode in multiple screens altogether…?
Old simulator versions and cache files hang around forever, you need a third-party app like DevCleaner just to keep your storage from filling with nonsense. Cryptic messages like "copying symbols to device"… clear-cache that doesn't seem to clear-cache, that stupid list UI for info.plist…
I never thought I'd have anything nice to say about PNPM package management, but you can always just delete `node_modules` and reinstall and count on things working. Swift package management is a cryptic mess, and their insistence on using a GUI instead of a basic JSON manifest just compounds it. Like the info.plist thing, a lot of Xcode is based on a developer UI philosophy from the Mac Classic days that has mostly been abandoned by the rest of the world.
Mostly, I think the vitriol surrounding Xcode is that Apple seems to think they're doing a good job; meanwhile their most ardent and adept users are insisting that they are not. Same boat as MacOS, really.
> functionality on the left sidebar makes no sense
they really just need to get rid of 'sidebars' and go full-on panel oriented ui so i can put whatever inspector/tool on whatever edge of the window i want; i'm constantly switching between opening panels and closing panels and hunting and pecking for the right panel-within-a-panel with those tiny icons...
I'd like an option to make things like inspectors into floating utility panels like used to be common in Mac apps back in the OS X 10.0-10.6 era. This would be really nice for multi-monitor setups… your editors could use the entirety of the main window while inspectors get tossed over to the laptop's built in screen or maybe onto one of those funky vertical strip external displays.
yes, that is another option, and ironicaly iirc project builder (xcode up to v3) and interface builder had this paradigm in use more, then in xcode v4 they just chucked everything into a single window... its like they just gave up and decided to copy visual studio (but worse)
The Xcode interface up to v3 was an even bigger mess. Interface Builder and Xcode were two separate programs, you'd quickly fill your screen with 15 little windows that you had to constantly drag around, open, close, switch between... The IB didn't even have a canvas so you'd have all your screens inside a NIB just floating around the code windows, the inspector panels, the controls toolbox... Want to switch to this or that IB screen? Move all other windows out of the way, then bring the inspector and toolbox back, and so on. Nowadays you just Cmd-Shift-] a few times.
Putting it all into a single window was a good idea IMO, they should just make it more flexible - allow sidebars/panels to be reorganized and windows to be dragged out of the main window.
> their insistence on using a GUI instead of a basic JSON manifest just compounds it
I think this is a big part of the problem. Apple owns the IDE and the programming languages; in theory this should lead to a great experience. In practice, because they insist you only use their languages with their ide, and their ide with their languages, it leads to lousy tool design.
Features that would be best implemented as part of the compiler suite are instead be implemented in the GUI. File formats that could be simplified live on, because everyone is using GUIs in the IDE to edit them anyway.
Fixes that should be prioritized in the IDE get punted because the IDE is not competing with any other IDE, it's the only way to develop the language, people will use it anyway, etc.
On iOS system libraries (e.g. UIKit, CoreFoundation) are packed into a file called the dyld shared cache. To get symbols for them, you need to download this file, split it apart, and parse the symbol tables embedded inside. These symbols change with every iOS release, so it needs to be done every time you update. When you see this message in Xcode, it's downloading the shared cache file off your device (which is several gigabytes) and splitting it. This does not get cleaned up unless you do so explicitly (which is why a lot of "dev cleaner" apps will prune it for you). You can also see the symbols you have cached on your computer from System Settings.
First, the performance is just bad. The responsiveness compared to apps like VSC or Panic’s Nova is night-and-day.
The attention given to the design of new features is piss-poor. Placing the AI functionality on the left sidebar makes no sense; all the other tools on the left are project management; the "let me run weird functions and interact with stuff" UIs like terminal, debug and logs are in the bottom panel. Or maybe a new tab in the main workspace area?
The SwiftUI preview canvas can't be floated as a separate window, making it all but useless on anything smaller than a 16" MBP (and only barely usable there). In fact, I think it might be impossible to use Xcode in multiple screens altogether…?
Old simulator versions and cache files hang around forever, you need a third-party app like DevCleaner just to keep your storage from filling with nonsense. Cryptic messages like "copying symbols to device"… clear-cache that doesn't seem to clear-cache, that stupid list UI for info.plist…
I never thought I'd have anything nice to say about PNPM package management, but you can always just delete `node_modules` and reinstall and count on things working. Swift package management is a cryptic mess, and their insistence on using a GUI instead of a basic JSON manifest just compounds it. Like the info.plist thing, a lot of Xcode is based on a developer UI philosophy from the Mac Classic days that has mostly been abandoned by the rest of the world.
Mostly, I think the vitriol surrounding Xcode is that Apple seems to think they're doing a good job; meanwhile their most ardent and adept users are insisting that they are not. Same boat as MacOS, really.