Skip to content

Update mission, vision, and principles #45

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

Merged
merged 4 commits into from
Jan 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 12 additions & 38 deletions handbook/company/mission.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,51 +6,25 @@ mission: Learn more about the mission of Tuist

# Mission

**It is Tuist's mission to enable everyone to build better Apple apps faster**
**To streamline app development through an integrated platform that helps developers build and share high-quality software at unmatched speed and scale.**

Everyone can build better Apple apps faster with the right:
We believe building apps should be a joyful experience. When developers enjoy their work, they are more productive and create better, more impactful applications. Unfortunately, the current state of app development is far from enjoyable. Developers and teams often find themselves juggling a multitude of tools and data, spending more time building, debugging, and maintaining these tools than focusing on the apps themselves.

- Tools
- Data
- Integrations
- Resources
The web development ecosystem has tackled this challenge effectively with integrated platforms like [Vercel](https://vercel.com). These platforms take a holistic approach to the development process, providing a unified environment where all necessary tools and data converge seamlessly. They guide developers from the initial spark of an idea all the way to production, simplifying and accelerating the journey.

> [!NOTE] WHY ISN'T APPLE DOING THIS?
> Apple has traditionally focused on supporting the "getting started" phase of app development. As apps grow in complexity, developers face challenges that Apple's tools do not address. Tuist is here to fill that gap.
We believe app development should—and must—follow a similar path. Developers need a platform that takes them from idea to the app store, combining sensible defaults with the flexibility to adapt to unique needs. From continuous integration and release automation to analytics and testing, everything should be integrated into a cohesive experience.

## Tools
The time has come to revolutionize app development by creating a platform that truly empowers developers to focus on what they do best—building exceptional apps.

Apple's developer tools, [while convenient](https://docs.tuist.io/guide/introduction/cost-of-convenience.html) at a small scale, can be a significant challenge at scale despite enabling more developers to build apps for Apple platforms. Traditionally, organizations tackled these challenges by leveraging community tools or building their own, and by creating teams, usually known as [infrastructure, productivity, or platform teams](https://blog.pragmaticengineer.com/platform-teams/), to maintain them. However, this approach is costly and time-consuming.
> [!NOTE] FROM APPLE TO OTHER PLATFORMS
> We were born in the Apple ecosystem, but we believe the principles and tools we are developing can be applied to other ecosystems. We aspire to make building at scale delightful for everyone, regardless of the platform they are targeting.

We believe app development doesn't need to be costly if the right tools are available. Unlike other ecosystems, Apple's is dominated by their own tools (e.g., Xcode). Therefore, **we design our tools to align with and integrate into Apple's ecosystem, rather than moving developers away from it.** That makes our tools future-proof and ensures that developers can leverage the latest Apple technologies without waiting for third-party tools to catch up.
## The app lifecycle

Our tools come with sensible, overridable defaults, drawn from our extensive experience working closely with organizations. This ensures that simple tasks are extremely easy, while more complex ones are entirely possible. Developers and organizations shouldn't have to struggle with connecting various disparate tools and data schemas to create workflows. Instead, they receive a set of workflows and tools that are not only easy to navigate but also seamlessly integrated into a cohesive ecosystem.
The complexity within the ecosystem today stems from the narrow focus of existing solutions. In many cases, proprietary tools either lack APIs or are not open-source, making integration challenging for developers. This not only incurs financial costs but also increases the long-term maintenance burden.

## Data
We believe that a simpler solution comes from taking a more holistic view of development—considering the entire lifecycle of an app, from the moment a developer envisions a new project to its release on the App Store.

Apple's tooling outputs raw information about projects, builds, and developer interactions. However, this data is so unrefined that extracting meaningful insights is challenging. Teams often struggle to answer basic yet critical questions such as:
Our goal is to understand this entire lifecycle and provide developers with the most effective solutions. By doing so, we ensure that the journey from idea to launch is as seamless as possible. Developers shouldn't have to spend time searching for the right tool or making decisions about their workflow—that's our job, driven by the insights we've gained from the needs of the community.

- What is the average build time of a target?
- Which test has been the most flaky in the past week?
- What is the bottleneck slowing down compilation times?
- Which output artifact has room for optimization?

We believe that **having answers to these questions early on allows teams to steer projects in the right direction, fostering a thriving and productive development environment**. Teams should be proactive about addressing these areas, rather than reacting once issues negatively impact the team.

Tuist plays a crucial role in collecting, processing, and presenting data in a meaningful way for developers and organizations. **We believe data should be actionable, not just informative.** Our goal is to provide insights that help developers and organizations make informed decisions about their projects.

## Integrations

Although teams spend much of their time within Apple's tools, they are part of larger organizations and ecosystems that include complementary tools, such as communication platforms like [Slack](https://slack.com/), version control systems like [GitHub](https://github.com), and telemetry tools like [Prometheus](https://prometheus.io/). In other ecosystems, such as web development, tools seamlessly integrate with these platforms, providing developers and leadership with insights to make informed decisions. However, the Apple ecosystem is often siloed within Xcode (e.g., [Xcode Cloud](https://developer.apple.com/xcode-cloud/)), which we believe is a missed opportunity.

**Tuist aims to make it extremely easy to integrate projects and tools with other services.** Integration should be as simple as taking a few steps through a web interface. Any member of the organization should be able to interface with Tuist using only a web browser. We strive to meet every member of an organization where they are, without requiring them to install Apple's tools and translating the information into their preferred language (e.g., business).

## Resources

Many resources provided by Apple or available in the community focus on first-time experiences with technologies, often lacking the depth needed to address the challenges developers face as they scale their projects. Tuist is uniquely positioned to learn about these challenges and provide organizations with the best resources to overcome them. Every interaction with a developer is an opportunity to learn and enhance our resources, which can take various forms:

- Best practices and guidelines in our documentation
- Newsletters and blog posts sharing insights
- Open source tools and libraries that solve common problems

Our goal is to make Tuist the go-to reference for building apps at scale, providing the easiest and most effective path forward.
Think of Tuist as something you seamlessly integrate into your repository and then it just works effortlessly.
69 changes: 69 additions & 0 deletions handbook/company/principles.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Inspired by user-centric philosophies like [Apple](https://apple.com)'s and [Rub

By prioritizing joy in our designs, we create experiences that resonate deeply with users, setting our products apart in the marketplace.

> [!NOTE] EXAMPLES
> - A Swift DSL to declare projects
> - Optimized Xcode projects that compile faster

## By humans for humans

We firmly believe that technology should enhance and empower human potential, not constrain or replace it. Humans, with our complex emotions and diverse perspectives, can unlock technology's full potential when given the right tools and environment.
Expand All @@ -31,3 +35,68 @@ To truly embody this principle, shift your perspective from solutions to needs a
This principle extends beyond our products to our work culture. We treat each other with respect, empathy, and understanding. We foster an environment where individuals can be authentic, grow, and find fulfillment. We acknowledge that we're human and may fall short. If you see us straying from this principle, speak up. We're committed to learning and growing together, embracing our humanity in the process.

By keeping humans at the center of our technological endeavors, we create more meaningful, effective, and ethical solutions.

> [!NOTE] EXAMPLES
> - Problem and motivation-oriented focus in conversations with developers
> - Mindful support for the community

## Make simple things easy, and everything else possible

It's crucial to recognize that we can't create a one-size-fits-all solution. The diversity of cultures and needs is vast, and we should embrace this variety rather than forcing everyone into a single mold. Many projects fall into this trap, and we must avoid it at all costs.

So, what does this mean in practice? We need to pinpoint the common denominator of the problems we're addressing and build the simplest solution that resolves them. These solutions should be designed with extensibility in mind. By making them extensible, we provide an API for developers, enabling them to tailor the solution to their specific needs.

It's important to understand that identifying core elements and spotting opportunities for extensibility is a process that takes time, experience, and continuous feedback from the community. It's an ongoing balance—a constant back-and-forth between refining the simple solution, challenging the core models, and making those models more powerful and adaptable.

> [!NOTE] EXAMPLES
> - Providing documented REST API to build their own clients
> - Allowing users to declare their own resource synthesizers
> - Supporting codifying their conventions around where sources and resources are located

## Meet crafters where they are

Crafters are the people who build things.
Each crafter is different.
They come from diverse backgrounds, with varying levels of experience, needs, and preferences—whether technical or not.
We should build technology that acknowledges these differences and brings us closer to them, rather than creating a rigid model and expecting them to meet us where it's most convenient for us.

Some organizations prefer the latter approach because the former can be costly.
It requires building flexible models that serve as a foundation to accommodate the diverse needs of the community.
However, when done right, this approach fosters a unique and lasting connection with the community, helping you shape and grow your product over time.

So, when making decisions, consider whether we can get as close as possible to the community, somewhere between asking them to meet us where it's most convenient and meeting them where it's most convenient for them.
While it may not always be possible to get as close as we’d like, we should always strive to do so.

> [!NOTE] EXAMPLES
> - Using Swift as a language for our DSL
> - Localizing our documentation in multiple languages
> - Adopting `Package.swift` as the interface to declare dependencies

## Default to open

Openness is an invitation to collaboration and diversity.
We believe the best technological solutions are shaped in the open. However, many companies shy away from this approach due to fears of jeopardizing business or rapid growth.

We want to do things differently. Our goal is to build the best and most diverse solution first, allowing the business to follow a community-driven craft. Therefore, we default to openness in everything we do, only keeping private information that is sensitive or poses a significant risk to the company's sustainability, especially during our early days.

In terms of software, our approach aligns with this principle. We commoditize client-side software, such as XcodeProj and our generation logic and graph, using permissive licenses. At the same time, we treat the server as a monetization layer, offering advanced features that leverage server capabilities like databases or the ability to interact with other services.

> [!NOTE] EXAMPLES
> - Open-source CLI and components like XcodeProj
> - Open handbook
> - Open [dashboard](https://tuist.grafana.net/public-dashboards/1f85f1c3895e48febd02cc7350ade2d9)

## Community first

Tuist is where it is today thanks to its thriving community of crafters who connect with our vision and support us in advancing our mission.
Building a community takes time, and despite what many companies believe, we don't think it can be bought with money.
Tuist's community is one of our unique assets, and we must continue to nurture it.

The Tuist community is also our best marketing. Tuist spread thanks to word of mouth—people tried it, liked what they saw, and shared it with others. It’s the most authentic and effective form of marketing we can have.

Therefore, we should focus on how to continue growing our community and introduce new ways for members to connect with the project—such as through contributions, sharing their work on marketplaces, or becoming owners of some project assets. Community investment is a long-term strategy, and we must keep investing in it.

> [!NOTE] EXAMPLES
> - Gift community members with free Tuist subscriptions or swag
> - Recognize their work publicly
> - Guide them to land their first contributions
8 changes: 4 additions & 4 deletions handbook/company/vision.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ mission: Learn more about the vision of Tuist

# Vision

**Our vision is to make building at scale easy and delightful for everyone.**
**To create a platform where developers seamlessly craft exceptional apps for any platform, accelerating innovation and collaboration.**

We believe that building software should be a joyful experience, not a painful one. Our goal is to empower developers to focus on what matters most: creating great products. As projects scale, building software often becomes complex and challenging, as many small-scale assumptions and tools no longer apply. Traditionally, organizations have addressed this by absorbing the cost of building and maintaining custom tools and infrastructure, or learning complex tools. However, **we believe that building software at scale should be accessible to everyone**, not just those who can afford it.
Our vision is to create a platform where developers can seamlessly craft exceptional software for any platform, from iOS and Android to [React Native](https://reactnative.dev/) and [Flutter](https://flutter.dev/). By removing barriers in the development process, we aim to empower teams to focus on what truly matters: delivering high-quality apps that meets the needs of their users.

While our initial focus has been on Apple platforms, we believe the principles and tools we are developing can be applied to other ecosystems. We aspire to make building at scale delightful for everyone, regardless of the platform they are targeting.
Our platform is designed to accelerate innovation, enabling developers to iterate faster and bring their ideas to life with unprecedented speed. At the heart of this vision is collaboration—building a community-driven ecosystem where developers come together to learn, share, and contribute toward a brighter future for software development.

## What makes us different
## Think different™️

At the core of our company and software is a commitment to [openness](/engineering/open-source.html). We believe **the best ideas can come from anywhere**, and to harness this potential, we foster an environment where everyone can contribute. We embrace openness with curiosity and confidence, not fear.

Expand Down
Loading