In the ever-evolving landscape of software development, managing developer environments has become increasingly complex. With the release of Flox 1.0, a groundbreaking environment manager, Flox aims to simplify this challenge. In a recent Q&A with VMblog, Ron Efroni, the co-founder and CEO, and the visionary behind Flox, shed light on the company's journey, the challenges faced by developers, and how Flox 1.0 is poised to revolutionize the way developers manage their environments.
Efroni's insights dive into the fragmented nature of software development today, with layers of abstraction and scattered deployments complicating the process. He emphasizes the need for a solution that can flatten these layers while preserving control and ergonomics, a challenge that Flox 1.0 aims to address. By providing a user-space environment manager that allows for reproducible and cross-platform environments, Flox 1.0 promises to streamline the developer experience, enabling seamless collaboration and consistent results across different machines and platforms.
VMblog: What
have you been doing since we last caught
up with you?
Ron Efroni: It's been quite a year! We've been working
with a close-knit group of beta users and improving Flox, our environment
manager. We've just shipped version 1.0, and it is based on a lot of user
research and direct feedback.
We learned that users wanted the ability to
manage some environments as code, but also have a way to easily share others
that might not exist within the context of a project. Users were required to
define environments multiple times in order to run them on different platforms
and architectures, which was even more impactful on their workflows than we
imagined. We also learned that they would prefer
not to learn a new declarative language along the way. These signals were
strong, Flox 1.0 is a better tool as a result, and our research is just
beginning. We have an amazing year of releases planned, and I can't wait to
share them with you.
We've also been growing the team! We've added
top folks from across the industry, and each member of our team is a little
part of what we have just shipped today.
VMblog: When
you hear "developer environment" what does it mean to you?
Efroni: Metaphorically, it's the context where
developers do what we love: turn 1's and 0's into magic for users everywhere.
It's a special kind of prepared focus, and the tools we use help us establish
it.
Practically speaking, all software requires a
collection of stuff in order to run, like tools, libraries, frameworks, and
configuration. Without it, the code we all write either won't do anything or it
can't be told to, for example, place its data in the correct cloud bucket. This
melange of stuff is its environment.
There are a lot of tools that developers use
to manage environments, and at the top of the list is probably Docker. You can
go a long way towards managing the problem simply by having a way to isolate
one environment completely from another. Container images are great for
recreating a specific environment: once you build an image, you can easily
conjure up the environment within it as many times as you like.
This has been a great step forward, which is
why you see container images everywhere. But there's always something over the
horizon; for developer environments, that's reproducibility. Container images
are not always guaranteed to build reproducibly. When you build one, what
happens is defined arbitrarily by the author of the image. Depending on how it
was authored, that image might build differently tomorrow than it did today.
Sometimes that doesn't matter...but when it does, it can matter a lot.
VMblog: What
do you think is hard about managing software today?
Efroni: It's all become really fragmented. Every new
wave of technology brings with it another layer of abstraction. New solutions
promise to make everything simpler by adding that additional layer;
incrementally, in some cases, they do. That new console *does* make it easier
to manage all of your deployments...but, yeah, you have so, so many deployments.
Everything is spread out and piled deep. Try to count the number of layers of
abstraction between a pageview of that webstore and the underlying kernel
running on a processor; it's overwhelming, and no single brain can understand
all of it.
Maybe what we need is a way to flatten out
some of these layers while preserving the control and ergonomics that they
provide. It might be time to make an infrastructure smashburger.
VMblog: What's changing about how businesses deal with software?
Efroni: I think they're looking at software in a much
more abstract way than they ever have.
It used to be something we wrote, now it's
something we manage. A lot of the time, we aren't even writing it anymore! It's
being generated by Copilot, or ChatGPT, or something else. We used to think of
it as intellectual property to be built; now we tend to think of it as a
depreciating asset, one that costs us money to create and increases in
liability as time goes by. It's far more ephemeral than it used to be.
We've realized that it's always changing: not
a pond, but a stream. That means thinking about our tools differently, and
choosing ones that can help us stay on top of an ever-changing world.
VMblog: How
can technologies like Flox help us become better developers?
Efroni: Technologies like Flox can help us become
better developers by providing a way for us to manage environments without all
of the overhead and isolation of virtual machines or containers. One that runs
in userspace, and allows us to reproduce and recreate those environments over
time and across platforms - and, for those moments where isolation is truly
needed, one that can easily be deployed inside a container. That way, we know
if it works on our machine it'll work on someone else's - and if we build it
next year, it'll work the same as it did today.
It can be found at flox.dev.