Owl project concluding

more at owl project github repo

Owl project is concluding after 8 years of development.


I hope they’ll move the project to ocaml-community so it can be maintained.

1 Like

Thanks for posting our annoucement! Despite stepping back, we’re hopeful for Owl’s future. It would be great to have suitable persons and organization to keep it maintained. We are talking with the OCaml Software Foundation about potential support. If you’ve got ideas, energy, or just curiosity about how you can help, Liang @ryanrhymes and I would be glad to hear it!


Thank you for sharing the update here. We are still making efforts to find a suitable home for Owl. At the very least, I would like the project to be transferred to reliable hands capable of maintaining the system. I contacted the OCaml Software Foundation this morning to seek some assistance. However, I cannot guarantee any outcome. From the OSF’s perspective, any concrete (e.g., financial) support requires evidence of community interest and its actual usage, which we cannot provide (except for some GitHub stars as an indicator), partly due to its permissive license. From my perspective, I believe that investing in numerical capabilities in a programming language holds strategic importance, especially considering the success of Python and the fact that the world is moving into an AI- and data-driven era.

Despite this, I would like to clarify that we cannot allocate time to maintaining this project. However, I will be more than happy to listen to your advice and sugggestions, and find a good solution for this project.


I have keen interest in contributing to the owl project. For the past few months I have been experimenting and researching the internals of several deep learning frameworks and compilers such as tensorflow, pytorch and jax. I think extending owl’s capabilities would be the best thing to do right now. And for that I am thinking (designing) a few interesting owl specific projects such as

  • Extending Owl to support TinyML and edge devices (mobile, web)
    extracting the computational graph from owl like Pytorch Tensor.FX to an intermediate representation with a graph capture
    API then lowering it to an GIR (graph intermediate representation) and then performing platform
    specific optimization and lowering. Tensorflow Lite Micro and Pytorch Mobile and the new Executorch
    supports TinyML platforms. For mobile devices there is XNNPACK, FBGEMM, QNNPACK (also for
    model quantization )and for the web there is webgpu support now. After the platform specific
    transformation the model can be serialized into a protobuff representation like the .tflite format and run
    using a minimal interpreter which handles launching the kernels and allocating memory.

  • Deep Reinforcement learning support
    Currently I am studying/researching deep reinforcement learning and owl can be a good foundational
    library for doing DRL. My books uses Pytorch for deep learning but it won’t be too hard to implement
    them in Owl. Beside the basic DLR module, we would also need a training enviorment like the
    farama foundation’s gymnasium (they use Atari 2600 games, Mujoco, Box2d, etc).

  • Web based Visualization like Tensorboard
    For profiling, debugging and visualizing training.

  • Hyperparameter tuning
    like Optuna

  • Deep Learning runtime and compiler support
    Graph extraction and GIR can be lowered into torch-mlir (further to IREE, Triton) or Apache TVM. To
    me these compilers seems like LLVM for deep learning frameworks.

This is just off the top of my head and not an actual design goal or anything.


Thanks for your detailed feedback! The idea of extracting a computation graph and adapting it on various backends is indeed very important to extend OCaml computation on various platforms. Owl itself is built upon a core computation graph layer. We put some initial effort into that direction in this repo, the code in which perhaps might be helpful or can be reused. I also quite like the DRL idea. I think Owl has many components to support it, such as gradient descent, neural network, dense Ndarray to represent q-learning table, etc., but I think more is required for a functioning DRL module, and it would be very interesting to use. The graphic environment of gymnasium in OCaml would also be challenging and interesting.

Previously we have cut out many external functionalities from Owl into extra repos, so that the Owl core can be kept clean and compact, but you are very much welcome to working on these interesting ideas based on Owl.


For the DRL Gym Environment I recently came across This project from the Farama Foundation(it’s still in early development) which allows any language to use the gymnasium module. Beside this I think extending Owl with edge inference capabilities would be great. In future I think TinyML will be a big deal for smart IoT devices and all sorts of things. And with the introduction of webgpu serving it on the web will become viable, Tensorflowjs has a webgpu backend as well. Tensorflow is mostly dead and support for TinyML or edge in Pytorch 1 and 2 is not stable so it might give Owl an edge. As far as I know there are very few deep learning frameworks which support TinyML. Most of the effort these days is spend on model inference and that is where most new tools are focusing. I have some time on my hand and I will try to contribute as much as I can.

Unfortunately moving projects to ocaml-community does not increase maintenance of the projects there as evidenced by nearly all projects there which tend to see maintenance by rarely more than maybe 1 person.


The key thing is that people can maintain the projects if they wish to, including merging incoming PRs. It happens to be that the other projects there haven’t attracted so many maintainers.

Owl in my view is the closest thing our community has to numpy/scipy, and we need to do our best to keep it going in some form. Once the original authors have no time to maintain the project, they should move it on to someone who can at least merge contributions.


I agree with the feeling, it would be a real pity to let it die. FWIF I’d be happy to be more active in the repo and help maintaining it if it moves to ocaml-community.


Owl tries to cover a huge breadth. I wonder whether it is feasible to refactor Owl into mutually compatible chunks that each are more easily maintainable.

The core chunk would be the equivalent of numpy: a foundational matrix algebra and array library which any future numerical library would want to be compatible with in terms of types. Such a library would make a lot of sense to fund polishing and maintaining IMHO. (It might be that the best ‘numpy array’ equivalent for ocaml is not a raw bigarray but an indexed view into one)

The ‘scipy’ chunk would contain integration, ode solvers, optimization, probability distributions: classical numerical computing. Important but maybe not foundational.

The ‘pytorch’ chunk would encompass everything needed for machine learning on ocaml. A lot is present in owl but there is room for extending the scope and/or available backends. Ideally someone would pick up this part for active development?


This makes some sense but an eco-system of canned libraries is important for encouraging use. I would use Owl more if there were a wider range of libraries. I certainly hope Owl can be maintained in some form.


I even have the owl book on my desk (for supporting OCaml in general since there aren’t too many books).

I was intentionally keeping a distance from learning/AI things for years as a somewhat classical PL person. However, time changes recently. I started with ocaml-torch and just fixed tiny glitches. I haven’t found a good time to start to look at owl, sign. Actually, I asked about the status of owl on discord several months ago since it’s one of the suggested libraries for our OCaml courses.

Meanwhile, many learning frameworks rise and fall even they are funded by giant companies. I wonder how owl compares with other popular frameworks, whether from the architecture side or from the efficiency side?

I definitely believe a typed functional language can have benefits in modeling concepts and more reliable (less possible to have bug like F1 score in sklearn). For a broader adaptation, I agree with the idea of chunking, that people can use OCaml for their favorite part and still use other backends/middle-layer outsides.


I am rather new to OCaml, but one of the reasons to choose OCaml over other functional languages was precisly Owl. In other functional languages, i.e. Haskell, I was not able to find any library that can provide the same set of functions and functionality for scientific computing that Owl is given to users.

It is true that the python ecosystem on top of numpy is much wider (at this moment maybe only Julia and R are close). However, Owl gives a good framework to have a wide ecosystem (it is an impression as I am new to OCaml) and not only in the context of AI.

I hope Owl will have a kind of continuity given the huge effort that is invested to create it. I am happy to help within my current limitations in OCaml knowledge.


If you’ve got ideas, energy, or just curiosity about how you can help, Liang @ryanrhymes and I would be glad to hear it!

I don’t have ideas, but I’m curious to know how I might be able to help and I’m energized by the desire to keep this important package from falling into disrepair. Alas, I’m not much of a user of scientific computing tools. I have a lot of colleagues at my day job who are users of Eigen and PyTorch, so I’m adjacent to the community, I guess. I see that the build system for Owl is dune, which I’m slowly growing less uncomfortable about, but I still feel very unsure in my footing with it. I might be able to help with boring organizational maintenance tasks?

Anyway, I would hate to see Owl lose energy, and I’m interested to know about opportunities to help.


@mseri I would be interested in getting the MacOS ARM support merged and providing some maintenance time.


Refer to the recent update here Owl project restructured