# Package Hygiene in Alice

**URL:** <https://discuss.ocaml.org/t/package-hygiene-in-alice/17513>\
**Category:** Ecosystem\
**Tags:** build\
**Created:** [November 21, 2025, 2:25am UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513 "2025-11-21T02:25:57Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![gridbugs](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/gridbugs/32/4243_2.png) [@gridbugs](https://discuss.ocaml.org/u/gridbugs)\
**Post date:** [November 21, 2025, 2:25am UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513/1 "2025-11-21T02:25:57Z")

</div>

> **[Package Hygiene in Alice](https://www.alicecaml.org/blog/package-hygiene-in-alice/)**
>
> A radical, experimental OCaml build system and package manager

Alice is an OCaml build system and package manager I’m developing in my spare time. This post is about Alice’s packaging protocol and how it enforces hygiene while building packages.

---

<div class="post-metadata">

**Author:** ![octachron](https://avatars.discourse-cdn.com/v4/letter/o/49beb7/32.png) [@octachron](https://discuss.ocaml.org/u/octachron)\
**Post date:** [November 21, 2025, 9:40am UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513/2 "2025-11-21T09:40:09Z")

</div>

The `-pack` option has been essentially deprecated because it creates `cm{o,x}` that contains all the code of the library. Thus, using one module of the resulting library requires to link the full library.

---

<div class="post-metadata">

**Author:** ![gridbugs](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/gridbugs/32/4243_2.png) [@gridbugs](https://discuss.ocaml.org/u/gridbugs)\
**Post date:** [November 21, 2025, 9:54am UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513/3 "2025-11-21T09:54:05Z")

</div>

Good to know! I recently learned about hidden include directories, and I think they’ll enable a less heavy-handed implementation of package hygiene. I might switch to using hidden directories when Alice detects that the compiler is recent enough to have that feature.

---

<div class="post-metadata">

**Author:** ![dbuenzli](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/dbuenzli/32/18_2.png) [@dbuenzli](https://discuss.ocaml.org/u/dbuenzli)\
**Post date:** [November 21, 2025, 10:13am UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513/4 "2025-11-21T10:13:43Z")

</div>

You may want to have a look at [this](https://discuss.ocaml.org/t/proposal-a-new-exports-field-in-findlib-meta-files/13947).

---

<div class="post-metadata">

**Author:** ![dra27](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/dra27/32/5294_2.png) [@dra27](https://discuss.ocaml.org/u/dra27)\
**Post date:** [November 21, 2025, 3:55pm UTC](https://discuss.ocaml.org/t/package-hygiene-in-alice/17513/5 "2025-11-21T15:55:00Z")

</div>

> [@octachron](#):
>
> The `-pack` option has been essentially deprecated because it creates `cm{o,x}` that contains all the code of the library. Thus, using one module of the resulting library requires to link the full library.

Just in case “deprecated” (even with _essentially_ before it) creates any panic in a quiet corner of the community, it’s not going anywhere at the very least until it ceases to be the least-bad option [for building ocamldebug](https://github.com/ocaml/ocaml/blob/c5451c06343e565722772634eba48daa0ae5babb/Makefile#L2230-L2232)!
