Remix.run Logo
gregoriol 7 days ago

This is really sad, because the replacement, Swift Package Manager, is really crap: it lacks some useful features (an "outdated" command, meaningful commandline output, ...), is buggy as hell in xcode (most of the time xcode just crashes when you add/removed a dependency, error messages while getting a repository are not understandable and even often not visible entirely, many repositories have some old Package.swift that current developer tools won't read, ...), and worst of all, it stores the full repositories of all the dependencies with their full history on your machine and downloads them every time when you do CI properly, which often means GBs of data.

rTX5CMRXIfFG 7 days ago | parent | next [-]

I don’t know, I’ve never had those problems and my codebases reach 600k+ LOC. I’ve certainly had plenty of errors to deal with Cocoapods and obsolete frameworks though, though those projects also tend to use pretty much every third-party lib that gets attention on Medium.

Modularizing an Xcode project with local Swift packages has been the best productivity gain in my experience. Doing something similar with Cocoapods is a headache.

gregoriol 7 days ago | parent [-]

Local Swift packages are indeed improving the experience a little bit: better version management, less xcode crashes, slightly more explicit errors, but still highly troublesome. It really feels like Apple's teams are not using any of SwiftPM themselves.

ninkendo 7 days ago | parent [-]

> It really feels like Apple's teams are not using any of SwiftPM themselves.

They probably never will, at least not for anything that ships with the OS. For Apple, binary size is very important, and it’s essential that they have only one of every library (“project”) installed on the device, and that they use dynamic linking everywhere.

SwiftPM uses static linking to the core, and if Apple were to use it, binary sizes would balloon (not to mention there would be potentially mutually incompatible versions of things.) You could fix this by ignoring version specs in the package file and building just one of every project/framework, and changing it to use dynamic linking everywhere… but at some point you’re just contorting swiftpm to become a big mono-build system, which only Apple would really be using as such.

6 days ago | parent [-]
[deleted]
cosmic_cheese 7 days ago | parent | prev | next [-]

SwiftPM been little trouble for me, with the most complex project involving a number of external packages and a couple of local ones. No crashes or anything like that.

It’s been way, way less trouble than CocoaPods was before I switched several years ago. CocoaPods was so bad about screwing itself up that I’d just check in its dependencies in a building state and avoid upgrading anything unless I absolutely had to, because inevitably when doing updates or even just resolving my project would somehow hit some number of the many edge cases that’d cause it to blow up.

In contrast with SwiftPM I keep most dependencies pretty close to current because it’s painless to do so.

In fact it’s been good enough to me that I wish it were possible to replace the awful mess that is Gradle with SwiftPM (or a 1:1 JVM counterpart) on the Android side. I need approximately none of Gradle’s flexibility and bells and whistles that make it such a pain in the rear, so something with SwiftPM’s simplicity would be a serious QoL improvement.

meisel 7 days ago | parent | prev | next [-]

Yeah, I’ve hit many pain points over the years with SwiftPM. Its restrictions on compiler flags is also problematic.

atommclain 7 days ago | parent | prev | next [-]

My biggest criticism with SPM is that there doesn't seem to be a way to use it with git worktree since the package cache is centralized as opposed to being at the directory/project/workspace level.

wahnfrieden 7 days ago | parent [-]

Can you elaborate on the use case? I've started putting my local package dependencies into Vendor/ submodules in the repo I'm using them. I can't use worktrees with this setup?

kiliankoe 7 days ago | parent | prev | next [-]

If you're looking for an outdated command, maybe this works for you? https://github.com/kiliankoe/swift-outdated/

Disclaimer: I wrote this (a while back)

gregoriol 6 days ago | parent [-]

I'm using it, thanks so much for making it :-) It should have been part of the swift base tools, it is very useful.

kiliankoe 6 days ago | parent [-]

Oh fantastic! And yes, I very much agree. I have some ideas for improving it a bit, maybe that'll make it worthwhile to PR into SwiftPM itself (:

tomaskafka 6 days ago | parent | prev | next [-]

Sounds like Microsoft’s “Embrace Extend Extinguish” approach that everyone hated (and some successfuly sued) has found a new home at Apple.

1 take over the thing 2 succeed at it as a platform owner 3 not put in resources to do it well

secretsatan 7 days ago | parent | prev | next [-]

Yeah, no, cocoapods was a nightmare compared to SPM, every ios update supplied a new unsolved issue in one pod or another that required dark incantations.

Managing a local pods caused issues so great engineers quit

gwbennett 7 days ago | parent [-]

100% agree!

wahnfrieden 7 days ago | parent | prev [-]

Tuist

richrichardsson 7 days ago | parent | next [-]

In spite of search engines being a thing, this comment could have done with a bit more information. I assume you're talking about this: https://docs.tuist.dev/en/

wahnfrieden 7 days ago | parent [-]

Yes. There's no ambiguity, no other project uses the name

MobiusHorizons 7 days ago | parent [-]

It was not at all obvious to people that haven’t heard of tuist (presumably the intended audience of your post) that tuist is a product. I thought it was a typo or even possibly an insult (same form as racist, sexist, ableist, ageist, etc)

wahnfrieden 7 days ago | parent | next [-]

Glad we've cleared it up

johnisgood 7 days ago | parent | prev [-]

> I thought it was a typo or even possibly an insult (same form as racist, sexist, ableist, ageist, etc)

That is on you, though.

adastra22 7 days ago | parent | next [-]

Another non-iOS developer here. It was absolutely not clear what you meant with a single word reply, and one that honestly looked like a typo or some kind of insult (short + -ist) I didn’t get.

johnisgood 7 days ago | parent [-]

What I meant is that people who are non-ableist, non-racist, etc. do not have racism et al. popped up in their mind.

Why does everything have to do with those things in people's minds? It is tiring, and I am starting to believe they are the racists.

It never crossed my mind based on the name of a project. It is ridiculous.

nxrabl 7 days ago | parent [-]

If you’re not familiar with the experience of browsing the internet and then suddenly having deeply-held parts of your identity deemed undeserving of respect, it’s the kind of thing that the mind naturally develops habits to avoid, in much the same way that you might start to walk differently through a city after getting mugged. It is indeed tiring for everyone, but the solution is not to blame people for doing what they feel like they need to do to protect themselves.

johnisgood 7 days ago | parent [-]

Of course I do, but we are talking about a project's name.

MobiusHorizons 7 days ago | parent [-]

That’s the whole point. If you know we are talking about a project name (for instance by using the word in a sentence) then it makes perfect sense, but with no context one is left to try to use etymology like one might do with any unknown word.

johnisgood 6 days ago | parent [-]

So you admit to it being an unknown word.

I did not, for a second, think, that an unknown word was intended to be racist, ableist, etc.

Why would you?

Also parent's reply:

> If you’re not familiar with the experience of browsing the internet and then suddenly having deeply-held parts of your identity deemed undeserving of respect [...] the solution is not to blame people for doing what they feel like they need to do to protect themselves.

It was a comment under a submission, FWIW.

Seriously though, just stop assuming everything is about race and friends. It is what is tiring. Ask first before making assumptions if it really is not a slur you know of, but an UNKNOWN WORD. If he were to say n***e* then yeah, have at it. That cannot be misunderstood.

And by my reply "That is on you" is down-voted for fuck-all, because people does not realize that the people preoccupied with racism are the ones first to believe it was a racist slur. I did not think it was a racist slur, because 1) it was an unknown word, 2) I am not preoccupied with such stuff, my mind is not filled with racism and such. Thus, the people who say "racist!" usually turn out to be the racists. I have seen it everywhere. Now I saw it on HN, too, which is just splendid. A single search would have sufficed. I do not deny that the person saying the word could have clarified what it is, but defaulting to believing it has to do with racism is one of the reasons for why we have racism. It did not cross my mind. Why did it cross yours, especially if you knew nothing but the unknown word?

I do not see race. Am I the racist one or the people thinking everything is about racism? Do not worry, I see race when it comes to a groups of people, except in that case it does not matter much, a group of people may always be trouble, regardless of race, so no, I did not abandon my self-preservation.

There is a lot to unpack here, my bad.

MobiusHorizons 7 days ago | parent | prev [-]

I completely agree with you that if I had wanted to I could have put in the effort to decipher the meaning of the post. However, the post left me with absolutely no desire to decipher it's meaning, so I did not. If instead the author had written simply "I use tuist for that" the meaning would have been immediately clear for someone like me, and I would have been much more likely to look up the product.

I don't mean to imply that there is some sort of "should" to this. The author is not required to want their meaning to be understood, even though I'm not really sure what other purpose they would have for posting. But I do think that this class of miscommunication is both common and reasonably avoidable by building up a bit of a mental model of the intended audience. I was trying to provide anecdotal evidence to build up that mental model.

johnisgood 7 days ago | parent [-]

We are talking about a project's name. Why did racism (and friends) came up in your mind, or an insult? Why is this the default norm, now? People are free to down-vote me, but they cannot deny there is no truth to what I am saying. I would have never thought that a project's name was intended to be racist or cause any sort of harm. Why did you?

MobiusHorizons 7 days ago | parent | next [-]

> We are talking about a project's name. Why did racism (and friends) came up in your mind, or an insult?

Please don’t take what I said as any kind of allegation that you were being insulting. Those associations were from trying to parse the word as English, which resulted in some unknown word from the family of words relating to prejudice presumably relating to textual user interfaces vs graphical. Context would have made it clear that it was a project name, in which case the word doesn’t need to be parsed.

johnisgood 6 days ago | parent [-]

It was not me who said the word, FWIW.

rafram 7 days ago | parent | prev [-]

Because it was a single word ending in -ist, the common English suffix for a prejudice or preference? There was no context indicating that it was the name of a project.

johnisgood 7 days ago | parent [-]

And you resort to either it being an insult or something about ableist, racism, etc.? That was not something I thought of until I got reminded.

myko 7 days ago | parent | prev [-]

I will never start another Apple platform application without Tuist. If I start work on one I will do my best to get buy-in to switch.

wahnfrieden 7 days ago | parent | next [-]

It is also the only good way to use LLMs to manage projects/workspaces

You can use it for non-Apple platforms btw. Swift on Linux, Android, Windows, WASM. Projects like https://swiftcrossui.dev (with major contribution from Miguel de Icaza recently) and https://skip.tools for instance make this all the more productive

myko 7 days ago | parent [-]

Neat, I may check that out.

For my Swift backends running on Linux I have just been using SPM and when working on macOS open the manifest directly. I haven't really done anything with a non-web UI with Swift outside of blessed platforms.

SoKamil 7 days ago | parent | prev [-]

Have you worked with Bazel before? Do you have a comparison to Tuist?

myko 6 days ago | parent [-]

I haven't earnestly used Bazel but my limited experience with it is that it does work fairly well and if your project is multiplatform it might be a better choice than Tuist for the Apple specific pieces. But if your project is all Apple and you're deeply into the ecosystem Tuist would be my recommendation - instead of Bazel's DSL you just write Swift to describe your project.