2022 was a pivotal year for open source at Very Good Ventures. We announced the addition of Jochum and Renan to our tooling & open source team, made thousands of commits to GitHub, and released ten brand new open source tools, including Dart Frog, Very Good Ranch, and multiple new Very Good CLI templates.
We’re proud to have created a suite of open source tools that work really well together or separately. For example, you could use Very Good CLI to generate a Flutter app foundation using Very Good Core, which comes with Very Good Analysis and Very Good Workflows; then, as you’re developing you could use Very Good Infinite List to implement a lazy-loading photo album and use r13n to add region-specific contact information in your app. Or, maybe you’re working on a client app and just want to use our strict lint rules with Very Good Analysis. Both use cases are totally valid. We want to provide tools that are useful and help increase developer efficiency — in whatever combination makes the most sense for you!
In 2023, we’re going to focus on all of the things that come with maintaining open source tools: ongoing upkeep, fixing bugs, triaging issues, and developing high-quality documentation and examples — all with the goal of improving the developer experience within VGV and in the broader Flutter community. We’re also going to explore new tools and packages that we can add to the growing ecosystem. Before we dive into more detail, let’s take a look back at what we accomplished last year.
2022 by the numbers
2023 OSS & tooling roadmap
Maintaining core tooling
Our team builds tools that fall into three phases of development: create, build, and scale. In 2022, we open sourced ten new tools, from templates like the Flame Game template, to our backend framework Dart Frog, to our fun exploration into game development Very Good Ranch. This year, we will keep maintaining all of our open source tools, and look for opportunities for new tooling to help developers create, build, and scale their projects with VGV best practices. Here is a list of open source tools that we actively maintain:
- Very Good CLI: A Command-Line Interface to help you generate scalable templates and execute helpful commands. Supported templates include:
- Very Good Core: A Flutter app template with VGV best practices, including flavors, 100% test coverage, and scalable architecture.
- Very Good Flame Game: A template for a game that uses the Flame game engine.
- Dart CLI: A template for a Dart Command-Line Interface.
- Dart Package: A template for a Dart package.
- Flutter Package: A template for a Flutter package.
- Docs Site: A template for a documentation site.
- Flutter Federated Plugin: A template for a plugin that supports the federated plugin architecture.
- Dart Frog: A fast, minimalistic backend framework for Dart.
- Dart Frog Web Socket: WebSocket support for Dart Frog.
- CLI Completion: Completion functionality for Dart Command-Line Interfaces built using CommandRunner.
- Flame Behaviors: Helps apply the separation of concerns to game logic in the form of entities and behaviors.
- Formz: A unified form representation in Dart.
- r13n: Implement regionalization within your app.
- Very Good Infinite List: An infinite list widget for activity feeds, news feeds, and more.
- Very Good Analysis: Lint rules for Dart and Flutter used internally at VGV.
- Very Good Coverage: A GitHub Action to help enforce a specified code coverage threshold.
- Very Good Workflows: A collection of helpful, reusable GitHub workflows.
One of our most popular tools is Very Good CLI and the templates it supports. All templates supported by our CLI provide a scalable, VGV-approved foundation for your project, whether it’s a Flutter app (core template), Dart CLI, Flutter package, federated plugin, or something else.
We’re always on the lookout for new templates; often, we’ll be working on something and ask ourselves the tried and true question: could this be abstracted to a template (that’s how the Flame Game template got started)? As use cases come up, we are open to adding additional templates to Very Good CLI — and useful commands, like very_good test (which helped the SNCF Connect & Tech team cut the time to run golden tests in half, and unit tests ran 6x faster).
In 2023, we hope to explore template extensions. If we can figure out how to extend a template using another template, we’ll be able to better customize the developer experience and keep templates as lightweight as possible.
We’ll also keep tools like Very Good Analysis and Very Good Workflows at the forefront of our thoughts. We’ll be ready to upgrade Very Good Analysis with any new lint rules that we want to incorporate into our projects internally at VGV. We’ll look for opportunities to add additional workflows that help automate the development process.
Full stack Dart with Dart Frog
Last May, we released Dart Frog, which was started as an experimental framework for Dart on the server that leverages existing capabilities of the shelf package. A few months later, we brought Dart Frog to stable with v0.1.0, along with a handful of bug fixes and new features. We’re currently working toward v1.0.0, which we expect to release this year 👀 We’ve been blown away by the excitement and support for Dart Frog so far and plan to ramp up development on this project into 2023! To follow along as we add more features to Dart Frog, check out our roadmap.
Another area we plan to explore with Dart Frog is independent Dart Frog packages that can be added to your projects as needed. For an example of this, see our package Dart Frog Web Sockets. Developing separate packages that work well with Dart Frog projects will allow us to keep the core Dart Frog package simple and lightweight, and empower you to add in what you need when you need it. In fact, this mix-and-match approach is what underlies a lot of our open source tools — we want you to use what you need when you need it, without being burdened by features that you’ll remove right away.
At VGV, we’re dedicated to pursuing full stack Dart in our projects. Our goal with Dart Frog is to create tooling that makes it easy for developers already familiar with Dart to write backend code. We want developers to be able to focus on building apps in an efficient way using the same tooling, linting, best practices that Dart enables. With Dart Frog, you don’t have to context switch from Dart to Typescript or another language. You can simply tap into the features that Dart provides, as well as existing Dart packages, to write both frontend and backend code.
Strengthening the internal feedback loop
The benefit of working at a consulting company is that we are always working on multiple projects with customers across different industries. We can use our teammates’ feedback and suggestions to drive some of what we explore and develop as an OSS and tooling team. Are there ways we can streamline development? Can we automate repeatable tasks? These are some of the questions we ask that can help inspire new tools to increase our team’s efficiency. This is how some of our existing tools originated — both Very Good Workflows and r13n are examples of recent tools that came from a need on the client services side. With Very Good Workflows, we were able to standardize a handful of use cases to run certain checks within CI/CD on a project in a flexible way. R13n came from the need for a scalable way to add region-specific text to an application. We’ll continue to look for opportunities to solve common pain points of our teammates, and if it’s a solution that would be useful to developers beyond VGV, we’ll open source it.
Last year, we started hosting internal focus groups at VGV so that we can gather feedback on certain types of tools to see if there are things we can do to help improve the developer experience for those on our team (and beyond). We host weekly office hours for anyone on our team who wants to chat about tools or any other Flutter topics of interest. This year, we’ll continue these initiatives so that we can see which of our open source tools are being used and how, generate new ideas, and gather feedback in real time.
Other areas to explore
Accessibility is one area we want to explore in 2023. The Flutter team provides helpful documentation and resources for implementing accessibility within an application to ensure that there is sufficient text contrast, target size, semantic labels, and other best practices. We’ve been excited by recent momentum in the accessibility tooling space from Rebel App Studio with their accessibility_tools package, released last month. At VGV, we want to see if we can help automate some accessibility checks; just like you can run widget tests to ensure your widgets are behaving as intended, we want to explore tooling that will make it easy to check for things like text contrast.
Because two of the three full time team members are active maintainers of the Flame game engine, we will likely continue to develop tooling that makes it easier to build games with Flutter. Last year we took a deep dive into building games with Flutter, first through our work with Google on I/O Pinball. We also produced our Very Good Ranch game and shortly after, a Flame game template that can be generated from Very Good CLI. Stay tuned for additional explorations in this area.
Other areas 👀
Our work will continue to follow the evolution of Flutter and Dart. As 2023 unfolds, expect us to come up with some very good ideas that even we can’t anticipate right now, with the ultimate goal of improving the developer experience.