
Lessons from Solomon Hykes
Solomon Hykes created Docker, the tool that standardized how the industry packages and deploys software. After navigating Docker's rapid growth and commercial struggles, he co-founded Dagger to fix duct-taped CI/CD pipelines. This collection covers his views on developer experience, open-source business mechanics, and why software delivery should run like a factory line.
Part 1: The Origin and Impact of Docker
- On the bigger picture: "We're surfing a wave that is much bigger than one company. It's bigger than Docker but it's also bigger than any single company no matter how large because it's a major transformation of the entire technology industry." — Source: [The New Stack]
- On empowering developers: "Docker was for them... they want to ship." — Source: [Code to Cloud Podcast]
- On architectural thinking: "It gives them a tool for thinking about the architecture of their application... It's about separation of concerns between developers and infrastructure teams and ops." — Source: [Platform Engineering Podcast]
- On crossing the desert: "We spent 10 years on that company... the first five years we were crossing the desert, like no one cared. We were doing containers and we were nobody." — Source: [Platform Engineering Podcast]
- On the wow moment: The success of Docker wasn't just the underlying technology, but making it fast, lightweight, and incredibly easy to use locally. — Source: [InfoQ Podcast]
- On bridging the gap: "I think the key impact that Docker had was to take all that infrastructure and package it in a way that it had an impact on the application side... to be a bridge between the world of the machine and the world of the application." — Source: [YouTube]
- On the PyCon demo: "I just wanted to touch on it quickly... it generated a lot of energy in the room... people came to our booth... that's the extent to which we realized, people are liking this." — Source: [YouTube]
- On trusting side projects: Founders should trust their instincts when an internal side project, like the Docker engine, begins showing more organic traction than the main product. — Source: [Platform Engineering Podcast]
- On the shipping container analogy: Just as the intermodal shipping container standardized the transport of goods regardless of what was inside, Docker standardized the transport of software regardless of the underlying code. — Source: [Linux Foundation]
- On gradual adoption: "Docker never said 'throw away your stack'... we said 'okay, where can we help? Just put a Dockerfile here and then we'll take it one step at a time.'" — Source: [GitHub Pages]
Part 2: The "Software Factory" and CI/CD
- On unique operations: "Behind every great product there is a factory, and every factory is unique." — Source: [Platform Engineering]
- On the duct-tape problem: "The experience of creating and maintaining these pipelines that ship the application is just a pain. The reason it's a pain is it's made of duct tape." — Source: [InfoQ]
- On pipeline complexity: "The reason CI/CD is so hard to solve is because you can't solve it once and for all with a well-defined product. Because everyone's pipeline is different." — Source: [TFIR]
- On gluing tools: "DevOps engineers spend most of their time gluing together a bunch of specialized tools and the glue itself is the problem." — Source: [The New Stack]
- On treating pipelines as code: "What if we thought of these really complicated CI/CD pipelines as applications?" — Source: [Heavybit]
- On the burden of scripts: CI/CD glue usually consists of bash scripts thrown together that are incredibly hard to test, adapt to new requirements, and debug. — Source: [The New Stack]
- On looking past the box: "Instead of worrying about the box and what's inside the box... now we're worrying about what comes just before the box... what does that factory look like that's cranking out containers?" — Source: [YouTube]
- On basic industry problems: "The problems in pipelines today are so terrible and basic. It's not rocket science, it's just that there's a missing standard and a missing upgrade to the state-of-the-art." — Source: [InfoQ Podcast]
- On pushing and praying: The deepest pain point in modern software delivery is the inability to run CI/CD pipelines locally, forcing developers to push code to a remote server and pray it passes. — Source: [Platform Engineering Podcast]
- On providing system layers: "Make it proper software built on a proper platform... to provide a solution at the system layer, because the system primitives that we have remain the same and they have been for basically 50 years." — Source: [YouTube]
Part 3: Programmable Delivery and Dagger
- On standardizing delivery: "Just as Docker standardized app deployment, Dagger aims to standardize and containerize software delivery." — Source: [dbt Labs]
- On the necessity of real code: "It has to be real code because of the very nature of a pipeline. The point of a pipeline is to connect pieces together. It's to be the glue. It's modular by nature." — Source: [Kubernetes Podcast]
- On replacing YAML: Configuration files and shell scripts have reached their practical limit; complex delivery processes must be written in actual programming languages like Go, Python, or TypeScript. — Source: [InfoQ]
- On local parity: "You can run it locally or in CI systems and get the same results, and confidence that things will actually work after a push." — Source: [Kubernetes Podcast]
- On the single long mission: "I started on this whole container thing in 2007, 2008. It is just one big arc. The arc is, it should be easy to ship your code into a live application in the cloud, but it just isn't." — Source: [InfoQ]
- On containerizing the factory: While earlier efforts successfully containerized the application itself, the next necessary step is containerizing the pipeline to ensure delivery consistency. — Source: [Platform Engineering Podcast]
- On incremental replacement: Teams do not have to re-platform completely; they can replace a single messy shell script with a programmable function and call it from their existing YAML setup. — Source: [InfoQ]
- On decoupling from providers: A dedicated pipeline engine runs tasks in containers, rendering the delivery process independent of the specific CI provider hosting it. — Source: [Kubernetes Podcast]
- On gaining control: "Dagger is the devops operating system that gives teams complete control over their software supply chain." — Source: [Heavybit]
- On supply chain security: "Dagger improves supply chain security because once you have turned your pipelines into code and are running the code in containers, developers can be more agile, helping to adapt to new threats quicker." — Source: [TFIR]
Part 4: The Developer Experience (DX)
- On developer sanity: "If you told a developer... your dev loop is going to be like five minutes... they will go insane." — Source: [YouTube]
- On what good tools do: "A never-ending quest to help developers save time, help you ship faster, which is what good tools should do... You should be building the product, talking to users." — Source: [Platform Engineering Podcast]
- On the pain of remote testing: "The inability to run the whole thing locally is just a major problem... It's like there's this ball and chain that you're carrying around." — Source: [InfoQ]
- On restoring local simplicity: True local control means taking the official, production-grade build and guaranteeing it can run identically on a developer's laptop at any moment. — Source: [InfoQ]
- On a terrible DX for ops: "If you think of these pipelines as software... then that's just a terrible development experience for that software. We're telling that designated DevOps person: your pipeline should be code, it should be software." — Source: [InfoQ]
- On fast feedback loops: "It's always been attractive for builders to work in an environment where there's a direct feedback loop. It's you, your code and either it works or it doesn't." — Source: [The New Stack]
- On reducing waste: Engineers spend far too much time on delivery mechanics that are a waste of their expertise instead of iterating on their actual products. — Source: [Heavybit]
- On unlocking creativity: "The world needs the tools for mass innovation, tools that encapsulate the harder parts of technology in order to unlock creativity." — Source: [Opensource.com]
- On making the hard things easy: "Making things simple is hard." — Source: [The New Stack]
Part 5: Modularity and System Design
- On modular structures: "We make your software factories better by making them more modular, like Lego." — Source: [Heavybit]
- On modeling the graph: "Our goal is to gradually give you a platform that's like Lego: modular where you can actually gradually run your whole DAG or at least model it." — Source: [Kubernetes Podcast]
- On universal primitives: Successful infrastructure requires building programmable primitives that teams can combine at will, rather than enforcing rigid monolithic workflows. — Source: [Linux Foundation]
- On standardizing to unblock: "Standards... the right standard at the right time can unblock a lot of innovation." — Source: [YouTube]
- On component consistency: CI/CD pipelines require deep structural consistency and modularity to escape the fragile nature of custom shell scripting. — Source: [The New Stack]
- On the necessity of fragments: The computing environment will remain permanently fragmented; the role of core infrastructure tools is to provide a consistent interface over that fragmentation. — Source: [Xurrent]
- On building from scratch: "The joy of building is really unique; there's nothing like it. So we started from scratch." — Source: [YouTube]
- On avoiding lock-in: Modular designs allow developers to seamlessly use existing ecosystem tools without being forced to abandon their preferred technology stack. — Source: [GitHub Pages]
- On the nature of pipelines: The entire purpose of a pipeline is to connect disparate pieces together, making a modular architecture a functional necessity, not just a preference. — Source: [Kubernetes Podcast]
Part 6: The Open Source Philosophy
- On saying no: "No is temporary, yes is forever. Resist the urge to accept every patch for new features." — Source: [Opensource.com]
- On feature removal: "You can always change your mind later and add it, but removing features is really hard; the users have pitchforks." — Source: [Opensource.com]
- On punching above your weight: "Open source levels the playing field for challengers. A small team, or even an individual, can 'punch way out of their weight class' with open source." — Source: [Opensource.com]
- On maintaining a core: A highly surgical approach to accepting contributions ensures an open-source project's core remains lean, stable, and maintainable over time. — Source: [eWeek]
- On the social contract: Open-source projects are not just static repositories of code; they are active social contracts where users expect reliable, continuous patching and maintenance. — Source: [Open Source Underdogs]
- On older open source cultures: Earlier open-source communities often functioned like closed clubs, whereas modern software requires a more inclusive, builder-centric environment. — Source: [The New Stack]
- On builder environments: An open, welcoming community drastically shortens the feedback loop between writing code and achieving widespread adoption. — Source: [The New Stack]
- On avoiding monolithic control: Projects should be modular enough for other companies to fork, adapt, and build competing or complementary systems on top of the same foundation. — Source: [YouTube]
- On treating open source as a service: Modern users expect an open-source tool to function as a responsive service that quickly addresses vulnerabilities and ecosystem shifts. — Source: [Open Source Underdogs]
Part 7: Business and Ecosystems
- On the two faces of the coin: "This is a strong opinion that I have, that you can't separate open-source and business." — Source: [The New Stack]
- On technology for its own sake: "If you only do open-source projects, then you're doing technology for the sake of technology." — Source: [The New Stack]
- On solving real problems: "If you only do products and you don't have an open-source collaboration in the background, then you're not going to be able to solve as many problems." — Source: [The New Stack]
- On intellectual honesty: Founders must be completely intellectually honest about their commercial goals from day one to build sustainable businesses around open code. — Source: [Emily Omier]
- On the Kleenex problem: Open-source companies must rigorously protect their trademarks so their brand does not become a generic term disconnected from their commercial offerings. — Source: [Open Source Underdogs]
- On fighting winner-takes-all: "I really don't believe in winner takes all in enterprise tech... the computing market is too large now to have one platform somehow win it all." — Source: [YouTube]
- On separating roles: A successful model relies on the open-source project to provide technology and collaboration, while the commercial product delivers a targeted solution and support. — Source: [The New Stack]
- On drawing boundaries: Studying companies like RedHat is essential for learning how to draw precise boundaries between a free community project and a paid enterprise product. — Source: [Open Source Underdogs]
- On true ecosystem scale: Massive adoption only happens when you empower other organizations to build their own profitable businesses on top of your underlying standard. — Source: [Linux Foundation]
Part 8: The Future of Software and AI
- On the AI application wave: "I think the AI wave is turning into an AI application wave... it's still going to be software... this is the biggest opportunity for software engineers." — Source: [YouTube]
- On pipelines remaining necessary: Even as AI writes the majority of new code, applications still require databases, frontends, and backends, meaning they still must pass through a strict delivery pipeline. — Source: [dbt Labs]
- On community-led innovation: "We didn't plan for it, but our community showed us the way. People started building AI agents that run in Dagger pipelines." — Source: [dbt Labs]
- On agentic automation: Developers are actively deploying AI agents within programmable pipelines to automate the writing of tests, submission of pull requests, and optimization of builds. — Source: [dbt Labs]
- On intent-based delivery: The future of CI/CD will transition from manual, step-by-step configuration to intent-based systems where AI calculates the necessary steps to ship the code. — Source: [Platform Engineering Podcast]
- On the enduring need for ops: AI will not eliminate operations; instead, it will make operations significantly more important as the volume of generated code exponentially increases. — Source: [YouTube]
- On infrastructure acting as a bridge: As AI fundamentally changes the application layer, infrastructure tooling must evolve parallel to it to maintain the bridge between machine execution and software logic. — Source: [YouTube]
- On adapting to threats: Moving to programmable delivery allows engineering teams to respond to new security vulnerabilities quicker, a massive advantage in an automated environment. — Source: [TFIR]
- On the ultimate goal: The final objective of developer tools is mass innovation: creating systems that encapsulate technical friction so that human imagination becomes the only constraint. — Source: [Opensource.com]