When the only input your company accepts is through paying customers, you limit your ceiling to a small pool of ideas. Open communities create a different kind of exchange, one that compounds in ways money can't measure.
Tags
Open Source
I built Helmsman, an Elixir framework for building LLM-based agents, inspired by Pi's SDK mode and aligned with Elixir patterns and conventions.
Openness is not a trend or a distribution strategy. It's a way of building trust, expanding your pool of ideas, and creating something that lasts.
Tuist started at the toolchain layer and is working its way down to compute and caching. This is the whole house, from roof to foundation, and why going deep into each layer is how you earn trust that money cannot buy.
Developers who build companies tend to fall in love with their creations. That love is a strength, but it can also become a blind spot when others see your work as an asset to acquire rather than a craft to respect.
Developer tooling companies often believe their moat is technology or infrastructure. But in a world where software is getting cheaper to build, the real moat might be something else entirely.
How the move from closed source to services created new business models, why open source spoiled those models, and what happens when everything collapses to Markdown, SQLite, and CLI tools you run yourself.
A reflection on what 'providing value' really means in software, why traditional business models are built on artificial limits that AI is tearing apart, and how embracing constraints can lead to more sustainable approaches.
Git and Git forges were designed for a world where humans write code in isolation. As agents become central to how we build software, I believe we need to rethink everything from branches to CI to how open source contributions work.
I built Schlussel because agents deserve a simple way to authenticate with APIs. No more wasting tokens navigating documentation or guessing OAuth flows.
In this blog post I talk about how Apple's non-inviting ecosystem has hindered innovation.
This is an stream of thoughts around the future of Tuist.
In this blog post I talk about how Tuist is evolving and how some mental models are transitioning.
Learn how to configure a Hetzner server as a Forgejo runner to run CI/CD jobs for your projects hosted on Codeberg.
How I choose the technology I use
In this blog post I reflect on Dries Buytaert's piece about balancing makers and takers in open source, and how it relates to Tuist.
Automate the continuous release of releasable changes with git-cliff and CI.
This post touches on the models we looked at to draw inspiration to make Tuist financially viable.
As we shape Tuist’s future, we are committed to true open source, embracing standards, and simplifying developers’ lives. It’s not just business
BREAKME.md is a new convention across Tuist repositories to keep track of breaking changes that we would like to introduce in the future.
Open-source sustainability is hard, and while it’s necessary to have the tools to reward and pay contributors for their work, the problem requires more of us, developers, speaking out loud about the importance of contributing to the software that we depend on.
A reflection on the importance of maintaining the open-source projects that become the infrastructure for many companies.
In this post, I share my thoughts on open source and how it aligns with my principles. I also talk about the different models that I've seen in the industry and how I'd like to see it evolve.
2023 was a year full of micro-traumas that led me to a negative mindset. In this blog post, I talk about how I'm working on swinging back to positivity.
In this blog post I talk about the motivations that led me to build and open-source lightning_css, an Elixir package to bring a more advanced CSS bundler to Elixir and Phoenix projects.
In preparation for a workshop that I'm conducting in Swiftable (Buenos Aires), I came up with an idea to ensure a smooth experience following the workshop
Juggling roles in Tuist, from coding to community support, taught the delicate balance between mastery and sustainability in open-source projects.
Read my personal take on Bitrise's actions against Tuist, and how we're rallying as a community to uphold our values and vision.
Embarking on a nuanced journey with Tuist, facing ethical dilemmas & aiming for sustainability, I invite you to be part of our personal tech story.
Embarking on a tech-venture adventure; creating value, chasing joy, and conquering challenges.
If you've worked in the Javascript ecosystem, you might already be familiar with the "delete node_modules" solution commonly suggested on StackOverflow and GitHub Issues. People make fun of it, but it's a frustrating scenario that…
I often hear a statement when justifying decisions in building developer tools: but they are developers too. It bugs me a ton because it throws all the developers into the same bag and assumes that they know what you know. If we want to bui…
Over the years of working on command-line interface tools I observed that they are not often perceived as products. Consequently, organizations don't embrace the same principles as UI-oriented products, which leads to complex tools designed…
We, software crafters, naturally tend to distance ourselves from users led by excitement for technological cycles and innovation. Our industry is full of examples. For instance, the crypto trend is an excellent example of that. No one can o…
More and more, we see open-source projects being backed by investment rounds . It's positive for the projects because they can innovate faster and sustain themselves by paying people to work on it full-time, making money one of the main dri…
Every time I try to set up Omniauth on a Rails codebase I run into the same issue: Not found. Authentication passthru And every time I have to spend a fair amount of time understanding what's causing the error. Luckiy it won't have anymore…
One of the things that I appreciate as a developer is having a consistent experience across projects . As you probably know, this is often not the case when running a project locally. Some ask you to run yarn run ios . Others prefer an exec…
As part of building Chimera , an AppleOS tool for capturing networked knowledge, thoughts, and ideas, I encountered an issue trying to set up Neo4j on an M1 laptop (i.e. arm64 architecture) . It turns out that Seabolt , the connector that n…
A while ago, I started reading about the Rust programming language out of curiosity. Many things fascinated me about the language. It has a powerful dependency manager similar to the Swift Package Manager but more thoroughly designed. Unlik…
One of the things that I find the hardest when building open-source software is planning the work . On one side, there are all these new features and improvements that you'd like to build. On the other side, there are PRs to review, tickets…
When building open-source software, getting external contributions is usually one of the most difficult things. Most of the times developers are busy working on their projects, and they are hesitant to devote time to another project. That's…
A while ago, and inspired by Facebook's internal tooling, we added a new command to Tuist, tuist focus . As it names says, it's intended to be used when you want to work on a given target. If you have a project of, let's say 300 targets, yo…
As we are approaching the release of Tuist 2.0, I started thinking what's next for the project. The focus until 1.0 was around project generation. We provided developers with a graph-based project generation that abstracts away Xcode's intr…
As you probably know, I started building Buildify , an open-source and AGPL-3-based tool for deployments. Like I did with Tuist , I'm in the process of building mental models around the business domain. It's one of the hardest steps, and th…
I recently had to set up a React frontend for a Rails app, and I decided to use ViteJS instead of Webpack . What's interesting about ViteJS is that in development, it uses ES modules instead of smashing all your Javascript into a single fil…
Yesterday, while reading about Rust and its package manager, Cargo , I realized how diverse the list of Crates (packages) for building CLIs is compared to Swift, and made me think about the connection between that and how Rust and Swift are…
I often wonder why Apple continues to build features that are closed into Xcode, for example Swift Package Manager's integration. While some developers might see that as something positive, because that means it can be seamlessly integrated…
When looked from the consumer standpoint, open source often reads as software publicly available that I can check out, use, and improve. However, there’s more than that. In a world where everyone seems to be obsessed with building the next…
Yesterday, we announced that Tuist has now stats that allows us to understand how users use the tool and therefore, invest our time working on Tuist more wisely. As expected, there were some negative reactions to this: Oh! I’m glad that I c…
Having seen Shopify acting as an e-commerce platform that developers can extend made me think whether the same idea would be applicable to Tuist. What if instead of us trying to codify all different workflows and configurations, we gave dev…
I think there are a lot of similarities between Tuist and JS bundlers. First, they both are functions that take input and return an output. In the case of a JS bundler, it takes Javascript or any variation of it, and converts it into Javasc…
One of the things that I noticed when building tools for developers, either through Tuist or my work at Shopify, is that we developers tend to get incredibly excited about what our new idea would enable, and put the need or problem aside. I…
It's common to see developers wondering why they should use Tuist instead of the Swift Package Manager (SPM) for modeling their projects. I think it's normal. It happened to me a few times too. Some of them even made me wonder if I should c…
I've recently spent a lot of time in Tuist tackling technical debt. It'd been a while since the last time I have to pause some other work for weeks to do something that would be beneficial for the long-term of the project. This time the wor…
One of the things I've been terrible at is at keeping decisions records in projects . It happens often working on Tuist that I come across something that I need to know why it was done in a particular way and I can't remember. It also happe…
One thing that I've been struggling a lot with lately is the amount of distractions that come with the growth of an open-source project. In the case of Tuist , those distractions have come in the shape of notifications on GitHub, mentions o…
There's something beautiful in entering a directory that contains a project and knowing how to interact with it. It's like being part of a communication where the terminal is the channel and you both know the language. You know that build w…
Today I created an RFC for the first time in the repository. I've pondering a bunch of ideas for a long time regarding how the experience building React Native apps could be improved and I finally gave them a structure and formalized them.
In this blog post, I share my experience building the Tuist community. I talked about the things that have worked well, and the areas where there's still some room for improvement.
I recently came across a blog post from Shopify where they share how they are componentize the main Rails application into smaller pieces with clearly defined boundaries and loose coupling between them. This made me think about the uFeature…
One of the things that I find the hardest when working on Tuist these days is finding a good balance between adding new features and tackling technical debt. The most exciting part is always building new things. Indeed, yesterday I came acr…
These days I'm a rollercoaster of emotions ― I guess as a result of COVID19 and spending so much time at home. In particular, these days I'm thinking a lot about Tuist and my devotion for it. I really like building it, working on building s…
There’s an idea that I’d love Tuist to move towards: provide a CLI that is standard across all the projects defined using Tuist. This is not a new idea; we can see it in frameworks like Rails that thanks to being opinionated about the struc…
I'm flying back from Tokyo and took the opportunity to code a bit on Tuist. Since I don't have Internet connection to get distracted with, I decided to work on something that doesn't require Internet connection: improving the project archit…
I recently opened up this PR on Tuist that turns models that represent the projects into structs. For some reason, which I don't remember, I had the not-so-brilliant idea of defining them as classes. While that has been working fine, they d…
In this blog post I talk about a recent decision that we made to start using reactive programming to model asynchronous tasks in Tuist.
An update on what I'm up to these days with Tuist. In particular, I talk about the new website that I'm designing and implementing for the project.
Picked up my phone and dumped some thoughts on why I'm so engaged and excited to build Tuist.
In this blog post I talk about what traits I expect a static site generator to have, and why I believe Gatsby is a more suitable option than other alternatives in the industry.
We are providing a new API from Tuist to define relative paths and this blog post describes the motivation behind it and the solution that we are adopting.
In this blog post I talk about a beautiful abstraction which Alex and I came up with to push Tuist's awesomeness even further.
In this blog post I talk about abstractions in the Xcode projects domain and how Tuist leverages the concept to conceptually compress intricacies of Xcode projects that developers are often confronted with.
A brief reflection on Dependabot, a tool that was recently acquired by GitHub and that helps automate the process of updating dependencies on your GitHub repositories.
A Monday blog post with some reflections about the current state of Tuist and its future.
Trust is key for open source projects to thrive. In this blog post I explain what trust has meant for Tuist.
In this post, I explain how we are able introduce changes and release new versions of Tuist with the confidence of not introducing bugs or breaking things.
A reflection on what's one of the most important things to me when building software, the people that make it possible.
In this blog post I talk about why I work on open source projects and what are the most important elements for me when starting an open source community.
Most of developers haven't tried creating an Open Source component before. Since I apply it to every of my projects I feel the results and development process has improved a lot. In this article I will describe why it's so important