It has been a month since we open-sourced our product under the Apache-2.0 license. Our intention, as we announced, is to better position Touca, as the product and the business, for long-term success. But releasing our source code with a permissive license does not automatically make Touca an open-source software company. This transition will take time and effort to complete. We are committed to making this effort and outline our plans in this post.
What we are solving
Touca provides feedback to software engineers when they write code that could break their software. We help developers to see how their changes affect the behavior and performance of their software, as they write code.
While most teams leverage running unit tests as part of their CI pipeline to verify the basic functionality of their code, they still rely on higher-level testing at a larger scale to gain confidence about new versions of their software. But higher-level tests are slow and inefficient. They are complicated to set up and take too long to run continuously. Historically, most development teams have delegated these tests to QA teams, leading to the status quo:
- Existing software test automation tools are designed for use by QA engineers. Since their end-users have second-hand knowledge of the software architecture and implementation details, these tools perform end-to-end testing, usually invoking the software under test through the user interface.
- Authoring, running, and interpreting high-level tests require manual effort and special skills outside developers' domain of expertise. Engineers need to collaborate with QA teams to run relevant tests corresponding to their code changes and get feedback from them.
These implications have substantially increased the feedback cycle of high-level tests, making them prohibitively expensive to incorporate into the developer's inner loop. When the feedback is finally available, it is rarely relevant and meaningful to developers to give them enough confidence about their code changes. But engineering teams need that confidence to stay productive. So, they resort to building in-house regression testing solutions that are costly to maintain and not generic enough to be reusable.
We are building Touca as a developer-friendly regression testing system designed for engineering teams. We want to make high-level tests easier to write and faster to run so we can move them back into the development workflows. By providing continuous feedback to engineers, we help them find and fix the side-effects of their code changes during the development stage.
Where we are today
It has been one year since the start of our journey. Once an internal-tool at Canon Medical Informatics, Touca is now generally-available and used at scale by our handful of customers and design partners to continuously test some of their software workflows, ranging from data processing pipelines and computer vision systems to machine learning algorithms and augmented reality applications.
To provide fast feedback, we introduced a novel approach to regression testing. Instead of running functional UI tests, we offer SDKs in various programming languages that help developers capture actual values of interesting variables and runtime of important functions for each test case. Unlike snapshot testing libraries that write captured information into files, Touca SDKs capture any number of data points and submit them to a remote Touca server. The server remotely compares them against those of a previous version and visualizes any differences in near real-time.
By offloading most of the work to our remote cloud infrastructure, we make using our technology easier and much cheaper than maintaining in-house solutions. Since Touca tests don't require hard coding expected values for captured variables, they are identical for different test cases. This characteristic allows complete decoupling of the test cases from the test logic, significantly reducing the time and effort needed to write and maintain Touca tests.
We are incredibly grateful to our existing users and customers. Their continuous feedback has helped Touca significantly evolve during the past year. But the core functionality of our product has mostly remained the same. Our value proposition is clear to our existing users. But our product has always required intensive onboarding to help new users understand our proposed model for regression testing and learn how to use our SDKs to write Touca tests.
It is clear that to grow Touca faster and further needs, we need to make it easier to discover, learn, and use for developers. To best solve the problem we have set out to solve, we open-sourced Touca last month and announced changes to our go-to-market strategy, including our business model, sales approach, and product positioning. We like to share more about some of these changes.
Where we want to be
We plan to make Touca relevant to every software engineer, even if they are not involved with maintaining complex software systems for which our current product has worked most effectively.
In the short term, we are adding features to our Touca CLI to remove the need for writing tests using Touca SDKs. We want to make Touca capable of comparing different versions of things, ranging from the output of executables to the content of files of various formats. In the words of one of our longtime users, we want to make the Touca CLI "a fancy new diffing tool that only takes one side of the comparison at a time".
We are also changing our open-source offering to make it more friendly to individual developers. We plan to simplify the self-hosting of Touca, improve our self-serve onboarding, and provide integrations with solutions and platforms commonly used by small teams, starting with GitHub.
To grow Touca as a business, we plan to offer Touca Cloud as a fully-managed cloud-hosted version of Touca with built-in scalability and resilience suitable for large teams. By adding enterprise-ready features to this offering, we plan to continue maximizing the value of Touca for our paying customers without compromising on the quality and usability of our open-source offering.
Over the next year, we plan to expand our cloud infrastructure to include remote execution of tests in isolated environments and seamless integration with code editors. We want Touca to automatically run tests as engineers make code changes and provide real-time feedback in the code editor where engineers have the context to use it.
Embracing the Open-Source Spirit
We think that there are still a few steps for Touca to become an open-source software company. If we want software engineers to use the product that we made available, we need to make it accessible too. To this end, we pledge to improve all aspects of our product that help individual software engineers get started with our open-source offering and keep using it without our involvement. We are starting with improving our documentation website and our overall self-serve onboarding process.
We pledge to keep our open-source offering valuable on its own. We will never withhold essential features and functionality from this version as a ploy to force users to upgrade to our commercial offering. We will keep clear lines between our commercial offering and our open-source project.
We also pledge to keep the Touca Community a safe and inclusive space for every software engineer passionate about building and maintaining software. We want our community to help its members make friends and learn from each other. While our product roadmap will be driven by our business goals, we'd always keep community feedback in high regard. We will take measures to allow community members to participate in our planning discussions.
We think that the key to building a thriving open-source software company is empathy. As fellow software engineers, we'd always work in line with the best interest of our users.
How you can help
- Give Touca a try.
- Share your thoughts with us on Discord.
- Give Touca a star on GitHub.
- Share this post with fellow software engineers.