Alice emerges as an experimental OCaml build system prioritizing accessibility and developer experience, created by a core Dune developer to explore uncharted design territories free from legacy constraints.

The OCaml ecosystem, renowned for its expressive type system and functional programming capabilities, has long been served by mature build systems like Dune and package managers like opam. Yet beneath this stability lies an untapped design space – one that Alice, an experimental build system created by a core Dune developer, seeks to explore. This initiative represents not just technical experimentation but a philosophical inquiry: what becomes possible when freed from the constraints of maintaining established ecosystems?
Alice's foundational premise centers on accessibility. Where traditional OCaml toolchains often require complex compiler setup through opam or manual compilation, Alice introduces a streamlined approach. It provides precompiled toolchains for Linux, macOS (both x86_64 and aarch64), and eventually Windows, bundling not just the compiler but essential developer tools like LSP servers and code formatters. This eliminates the time-consuming compiler compilation step that frequently deters newcomers. The command-line interface, inspired by Rust's cargo, offers intuitive workflows: alice new scaffolds projects, alice run executes them, and alice dot generates build dependency graphs – all with auto-generated bash completions via the Climate library.
Structurally, Alice makes deliberate departures from OCaml conventions. It decouples the compiler and development tools from package management, rejecting opam's model where these components are treated as packages. While current functionality supports building multi-file projects into executables and libraries with sequential incremental builds, it lacks dependency management between packages. The creator acknowledges this limitation while outlining a future packaging system prioritizing "ease of publishing and maintenance with as low cognitive load as possible." Notably, opam compatibility isn't a primary goal, suggesting Alice may evolve as a parallel ecosystem rather than a backward-compatible extension.
The implications extend beyond technical capabilities. By separating build logic from package management, Alice challenges assumptions about how development tools should orchestrate workflows. Its incremental build foundation – currently sequential but designed for future parallelization via dependency graphs – offers a clean-slate approach to build performance. For the OCaml community, this experiment could inspire evolution in existing tools or validate alternative architectural patterns. However, significant challenges remain: the absence of Windows support, unfinished package management, and the potential for ecosystem fragmentation without opam interoperability.
Alice's existence as a passion project highlights the tension between innovation and maintenance in mature language ecosystems. While Dune serves production needs, Alice explores what might be possible without compatibility constraints. Its success hinges on balancing novel approaches with practical utility – a reminder that progress in developer tooling often emerges from questioning established conventions, even when those conventions are products of our own making.

Comments
Please log in or register to join the discussion