-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adopt Tuist to manage the project #1752
Conversation
@CodeEditApp/maintainers What do y'all think about the work done here? Tuist has the potential of doing some good for our project. There may be some concern around the higher barrier to entry because contributors now would need to install Tuist as opposed to pulling down the code and running the project. @pepicrft can you please explain to everyone in short what benefits Tuist could bring to an open source project like ours despite this concern? To learn more on your own, visit tuist.io. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
URL Seems to be incorrect
@@ -72,6 +72,9 @@ Join our growing community on [Discord](https://discord.gg/vChUXVf9Em) and [GitH | |||
|
|||
## Contributing | |||
|
|||
> [!NOTE] | |||
> CodeEdit uses [Tuist](https://tuist.io) to manage Xcode intricacies and streamline the development process. To get started, you'll need to [install Tuist](https://docs.tuist.io/guide/introduction/installation.html) (we recommend via Mise), and then run `tuist generate` to generate the Xcode project. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This url leads to a 404 page, do you mean https://docs.tuist.io/guides/quick-start/install-tuist ?
Hey folks! Tuist makes the intricacies of modular Xcode projects more manageable, prevents implicit configuration that might lead to slowness and unreliability of some Xcode features, and allows optimizations like selective test execution or binary caching that might be handy at a particular scale. It's been battle-tested by large organizations for more than seven years. I'm very biased in the value that this provides, but I think it's awesome! You know better than me what the situation of this codebase is and whether it might benefit from the above value. If you think so, I'd be happy to push this to the finish line and give you access to some of those features to speed up workflows. |
Thanks, Pedro! We’re wondering if Tuist can help address a few challenges we’ve been facing in CodeEdit with our separate packages (CodeEditTextView, CodeEditSourceEditor, CodeEditLanguages, CodeEditCLI, CodeEditKit, etc.). There is a high barrier to entry for our contributors when setting up their local environments. Do you think Tuist can simplify this by automating the process, making it easier for contributors to work across multiple repos without manually configuring everything? We’re hoping these improvements can make the project more efficient. Looking forward to hearing your thoughts! |
Do you have some examples? Besides requiring Xcode's toolchain, what are the other elements that add friction? Once I understand that better, I might be able to make some suggestions. Perhaps it's not Tuist what you need :) |
@pepicrft Sure, here’s an example of what I’m talking about. To set the stage we have CodeEdit which depends on CodeEditSourceEditor which depends on CodeEditTextView. Each exist in separate repositories. The last two are packages. Let’s say a new contributor comes along and says, “I’d like to contribute to CodeEdit.” They go to the CodeEdit repository, fork it, pull down the code and start looking for an issue to take. When they find one, it has to do with the source editor. They dig through the code only to discover the code needing to be changed is in CodeEditSourceEditor. So they go to that repo in GitHub, fork the repo, pull it down, then they need to temporarily add their local copy of CodeEditSourceEditor to their CodeEdit project. They work on the issue and are about done when they find that CodeEditTextView needs adjustment in order for everything to work correctly, so again they need to go to the repo, fork it, pull it down and add the local copy to CodeEdit and CodeEditSourceEditor temporarily, make the change, and make sure everything works across the board. Once they are finished they need to remember to remove the local package references, make three separate commits, and open three separate PRs in each repo. Once merged, we need to then make a release for CodeEditTextEditor, bump the version to pull in the changes to CodeEditSourceEditor. Then release CodeEditSourceEditor and bump both CodeEditTextView and CodeEditSourceEditor in CodeEdit to pull in all of the changes. @CodeEditApp/maintainers please correct me if I have any of this wrong. Now, some of this is necessary and I am not complaining because there are a lot of benefits in organizing it this way, but I’d like to use any tool available to make things as efficient as possible where it makes sense. |
Thanks @austincondiff :). Then I don't think that's the type of problem that we are trying to solve with Tuist, but happy to help anyway. What's the motivation between the multi-repo setup? If it's useful, we committed to a monorepo structured at Tuist since the beginning, and it has been quite useful because it prevented that type of friction. Eventually, as APIs got more mature, we extracted the pieces that made sense standalone, that didn't change much, and that we planned to reuse across repositories and release following its own cadence. |
@pepicrft ahh yeah, a monorepo could definitely help here and this has crossed my mind before. @thecoolwinter what are your thoughts here? Maybe we can take this conversation to Discord. Tuist documentation says
Maybe I mistook what was meant here. This is why I brought this up in the first place. |
@austincondiff that might make people believe that we are solving the challenges of working across repositories, but this is not an Xcode-specific problem, and hence we don't think it should be addressed by Tuist. That problem spans technologies and ecosystems. Multi-repos and mono-repos come with pros and cons, so you need to assess which model is best for the project. |
@pepicrft thanks for your time working on this! I appreciate the effort you’ve been able to put towards this. We’re going to close this PR for now and continue to use Xcode’s project management system. We’ve got a few specific things driving this decision:
Tuist seems like a great tool for a slightly larger, faster moving team looking to save time. Again I appreciate your time with this PR as I know it’s been drug out for a while. |
Thanks a lot @thecoolwinter for the thorough rationale. As I said earlier, if you don't have the challenges that Tuist is addressing, then it doesn't make sense to bring the tool. I'd like to point out a couple of things though that seems to have been misunderstood:
|
Tuist removes the intricacies, inconvenience, and slowness of working at scale with Xcode. This PR migrates CodeEdit to use Tuist.
.xcconfig
files using Tuist's command for thatTuist/Package.swift
, ensuring that they align with the current project's requirements.InspectorSidebarToolbarTop.swift
,FindNavigatorResultFileItem.swift
, andNavigatorSidebarToolbar.swift
, which don't seem to be used anywhere.