Skip to content

Commit 9655642

Browse files
authored
Add docker automatic build based on Dockerfiles (#686)
* add automatic docker build via Action * revise documentation
1 parent 14ebd98 commit 9655642

File tree

5 files changed

+91
-98
lines changed

5 files changed

+91
-98
lines changed

.github/workflows/deploy_docker.yml

+30-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
name: Deploy docker (arm64v8)
1+
name: Build and Push dockers
22

33
on:
44
push:
55
branches:
6-
#- 'main'
7-
- 'abc'
6+
- 'main'
87

98
jobs:
109
docker:
@@ -14,7 +13,8 @@ jobs:
1413
contents: read
1514

1615
steps:
17-
- uses: actions/checkout@main
16+
- name: Checkout code
17+
uses: actions/checkout@v3
1818

1919
- name: Set up QEMU
2020
uses: docker/setup-qemu-action@v3
@@ -28,10 +28,34 @@ jobs:
2828
username: ${{ secrets.DOCKERHUB_USERNAME }}
2929
password: ${{ secrets.DOCKERHUB_TOKEN }}
3030

31-
- name: Build and push
31+
- name: Build ubuntu image
3232
uses: docker/build-push-action@v5
3333
with:
3434
context: .
3535
file: ./Dockerfile
3636
push: true
37-
tags: ${{ secrets.DOCKERHUB_USERNAME }}/owl-arm64v8:latest
37+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/owl:main
38+
39+
- name: Build debian image
40+
uses: docker/build-push-action@v5
41+
with:
42+
context: .
43+
file: ./docker/Dockerfile.debian
44+
push: true
45+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/owl:debian
46+
47+
- name: Build fedora image
48+
uses: docker/build-push-action@v5
49+
with:
50+
context: .
51+
file: ./docker/Dockerfile.fedora
52+
push: true
53+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/owl:fedora
54+
55+
- name: Build archlinux image
56+
uses: docker/build-push-action@v5
57+
with:
58+
context: .
59+
file: ./docker/Dockerfile.archlinux
60+
push: true
61+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/owl:archlinux

CONTRIBUTING.md

+27-20
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,34 @@
11
# How to Contribute
22

33
Owl is a large open source project, to guarantee quality of the software and sustainable development, we enforce the following rules in day-to-day research, development, and project management.
4-
54
Besides coding, there are many other ways you can contribute. Bug reporting, typo fix, asking/answering questions, and improvement of existing documents are all well welcome.
65

6+
## Owl Team
7+
8+
To achieve our mission, we are assembling an *Owl Team*. Anyone who can potentially give sufficient contributions recognized by the community can request to be a team member.
9+
A team member is expected to make several valuable and significant contributions to the project in both quality and quantity.
10+
Typically a committer focuses on one specific aspect of the project and is a domain expert.
11+
We hope but cannot guarantee that the team members can cover all aspects of the code base.
12+
13+
14+
Emphasis are put on the responsibility of each team member.
15+
Each one should take responsibility of certain aspects of the code base, e.g. a module or maintenance for a specific OS platform.
16+
Team members, together with their domain aspects and responsibilities, will be listed here and also on the [Owl website](https://ocaml.xyz/).
17+
18+
For anyone who is willing to contribute, some good starting points could be:
19+
- Participate in discussion in issues, and help to fix them
20+
- Fix [documentations](https://ocaml.xyz/docs/), mainly by changing the `.mli` files in the source code, based on which the documentations are generated
21+
- Fix [tutorials](https://ocaml.xyz/tutorial/); the code could be not runnable, or the content could not display properly
22+
- Add more examples and tests
23+
- Fix issues listed in the [TODO list](https://github.com/orgs/owlbarn/projects/2/views/2)
24+
- Propose to fix/improve anything that interests you during using Owl
25+
- ...
26+
27+
**Current team member:**
28+
29+
- [@jzstark](https://github.com/jzstark): Project leader. Manage overall architecture, roadmap,and tech vision. Community communication. Set research agenda.
30+
- [@ryanrhymes](https://github.com/ryanrhymes): Potential commercialization, business opportunity & funding seeking.
31+
732

833
## Coding Style
934

@@ -86,22 +111,4 @@ By making a contribution to this project, I certify that:
86111
personal information I submit with it, including my sign-off) is
87112
maintained indefinitely and may be redistributed consistent with
88113
this project or the open source license(s) involved.
89-
```
90-
91-
92-
## Becoming A Team Member
93-
94-
Owl Team is open and always welcomes new members to join. If you are enthusiastic about scientific computing and numerical algorithms, you can be one of us. As a team member, you need to be aware of the following things.
95-
96-
- You will be included in the [owlbarn organisation](https://github.com/owlbarn).
97-
98-
- You will have access to Team Channel on Slack and join the R&D discussion. Your opinions matter in Owl's future roadmap.
99-
100-
- You need to be responsible for one aspect (or one or multiple related modules) in Owl and lead its development.
101-
102-
- You need to review the pull requests related to the area you are specialised in.
103-
104-
- We value persistence. Being a team member requires you actively get involved in maintaining Owl and contributing to its code base. The team membership becomes invalidated automatically if your contributions cease.
105-
106-
- Team membership is considered after you have made some significant contributions to Owl's code base or its ecosystem. You can always drop [me]([email protected]) a line to discuss.
107-
114+
```

README.OLD.md

-31
This file was deleted.

README.md

+32-40
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,29 @@
33
[![build](https://github.com/owlbarn/owl/actions/workflows/deploy_docker.yml/badge.svg)](https://github.com/owlbarn/owl/actions/workflows/deploy_docker.yml)
44
[![build](https://github.com/owlbarn/owl/actions/workflows/os.yml/badge.svg)](https://github.com/owlbarn/owl/actions/workflows/os.yml)
55

6-
Owl is a dedicated system for scientific and engineering computing. The system is developed in OCaml and licensed under MIT. The project is originated by [Liang Wang](https://liang.ocaml.xyz) and currently led by [Jianxin Zhao](https://jianxin.ocaml.xyz). The history of the project is on the [Wikipedia](https://en.wikipedia.org/wiki/Owl_Scientific_Computing).
6+
Owl is a dedicated system for scientific and engineering computing. The system is developed in OCaml and licensed under MIT. The project is originated by [Liang Wang](https://liang.ocaml.xyz) and currently led by [Jianxin Zhao](https://jianxin.ocaml.xyz). The history of the project can be seen on the [Wikipedia](https://en.wikipedia.org/wiki/Owl_Scientific_Computing) page.
7+
8+
## Functionalities
9+
10+
Owl provides a wide range of scientific computing functionalities:
11+
12+
- mathematical function, from the basic `log`, `sin` etc., to special functions such as the Beta and Gamma functions
13+
- integration; interpolation and extrapolation
14+
- statistics and probability; e.g. generation of random number and various distributions
15+
- various computation on n-dimensional arrays (tensors), including advanced slicing and broadcasting
16+
- linear algebra
17+
- ordinary differential equations
18+
- discrete Fourier Transform algorithms for signal processing
19+
- algorithmic differentiation, or automatic differentiation
20+
- various optimization algorithms
21+
- regression algorithms
22+
- deep neural network and natural language processing with the optional support of computation graph optimization
23+
- dataframe processing
24+
- visualization (with the help of external package `owl-plot`)
725

826
## Installation
927

10-
Please follow the [tutorial](https://ocaml.xyz/tutorial/chapters/introduction.html) about installing Owl.
28+
Please follow the [tutorial](https://ocaml.xyz/tutorial/chapters/introduction.html) about installing Owl. You can also start by trying the [docker images](https://hub.docker.com/r/matrixanger/owl).
1129

1230
## Mission
1331

@@ -17,31 +35,24 @@ Owl is the de-facto scientific computing library in OCaml. Currently we aim to a
1735
The current code base is designed to be concise and self-contained.
1836
We encourage anyone who would like to build up their own tools based on Owl to create new repositories in the [Owlbarn](https://github.com/owlbarn) organization.
1937

20-
## Owl Team
38+
## Owl Code Structure
39+
40+
To help potential developers to understand the structure of Owl, here we briefly describe its overall design. More detailed description can be found in the [documentation](https://ocaml.xyz/docs/) and the Owl [books](https://ocaml.xyz/).
41+
42+
![Owl architecture 1](examples/owl-structure1.svg)
2143

22-
To achieve this mission, we are assembling an *Owl Team*. Anyone who can potentially give sufficient contributions recognized by the community can request to be a team member.
23-
A team member is expected to make several valuable and significant contributions to the project in both quality and quantity.
24-
Typically a committer focuses on one specific aspect of the project and is a domain expert.
25-
We hope but cannot guarantee that the team members can cover all aspects of the code base.
44+
Owl provides a basic data structure for modern numerical computing: n-dimensional array (Ndarray). It is based on the mathematics, linear algebra, and statistics functions, which are built on both OCaml and C functions and libraries.
2645

46+
![Owl architecture 2](examples/owl-structure2.svg)
2747

28-
Emphasis are put on the responsibility of each team member.
29-
Each one should take responsibility of certain aspects of the code base, e.g. a module or maintenance for a specific OS platform.
30-
Team members, together with their domain aspects and responsibilities, will be listed here and also on the [Owl website](https://ocaml.xyz/).
48+
Sharing the same set of interface with Ndarray is the `base` system data architecture, which is implemented in pure OCaml. It is also based on modules that are implemented in OCaml. However, though it is sufficient for daily use for normal computing, the base version Ndarray does not implement some advanced functions as in the previous Owl version Ndarray, and its performance is understandably much slower.
3149

32-
For anyone who is willing to contribute, some good starting points could be:
33-
- Participate in discussion in issues, and help to fix them
34-
- Fix [documentations](https://ocaml.xyz/docs/), mainly by changing the `.mli` files in the source code, based on which the documentations are generated
35-
- Fix [tutorials](https://ocaml.xyz/tutorial/); the code could be not runnable, or the content could not display properly
36-
- Add more examples and tests
37-
- Fix issues listed in the [TODO list](https://github.com/orgs/owlbarn/projects/2/views/2)
38-
- Propose to fix/improve anything that interests you during using Owl
39-
- ...
50+
![Owl architecture 3](examples/owl-structure3.svg)
4051

41-
**Current team member:**
52+
Besides these two types of Ndarray, another type is CGraph-Ndarray, which can be used to support symbolic style computing like TensorFlow v1. It facilitate building computation graph and computation optimization.
53+
The CGraph-Ndarray can be built up by wrapping up either of the previous two types of Ndarray, which are used for actual execution of computing.
54+
All three types of Ndarray can be used to support advanced computing modules, including algorithmic differentiation, optimization, and neural networks.
4255

43-
- [@jzstark](https://github.com/jzstark): Project leader. Manage overall architecture, roadmap,and tech vision. Community communication. Set research agenda.
44-
- [@ryanrhymes](https://github.com/ryanrhymes): Potential commercialization, business opportunity & funding seeking.
4556

4657
## Code of Contributing
4758

@@ -58,22 +69,3 @@ Please check the full [contributing rules](CONTRIBUTING.md) and [code of conduct
5869
## Community
5970

6071
The Owl community is based on the [OCaml Discourse](https://discuss.ocaml.org/) and [Owl Slack channel](https://owl-dev-team.slack.com/). All participants in the community are encouraged to provide support for new users within the project management infrastructure. Those seeking technical support should also recognize that all support activities within the project is voluntary and is therefore provided as and when time permits.
61-
62-
63-
## Owl Code Structure
64-
65-
To help potential developers to understand the structure of Owl, here we briefly describe its overall design. More detailed description can be found in the [documentation](https://ocaml.xyz/docs/) and the Owl [books](https://ocaml.xyz/).
66-
67-
![Owl architecture 1](examples/owl-structure1.svg)
68-
69-
Owl provides a basic data structure for modern numerical computing: n-dimensional array (Ndarray). It is based on the mathematics, linear algebra, and statistics functions, which are built on both OCaml and C functions and libraries.
70-
71-
![Owl architecture 2](examples/owl-structure2.svg)
72-
73-
Sharing the same set of interface with Ndarray is the `base` system data architecture, which is implemented in pure OCaml. It is also based on modules that are implemented in OCaml. However, though it is sufficient for daily use for normal computing, the base version Ndarray does not implement some advanced functions as in the previous Owl version Ndarray, and its performance is understandably much slower.
74-
75-
![Owl architecture 3](examples/owl-structure3.svg)
76-
77-
Besides these two types of Ndarray, another type is CGraph-Ndarray, which can be used to support symbolic style computing like TensorFlow v1. It facilitate building computation graph and computation optimization.
78-
The CGraph-Ndarray can be built up by wrapping up either of the previous two types of Ndarray, which are used for actual execution of computing.
79-
All three types of Ndarray can be used to support advanced computing modules, including algorithmic differentiation, optimization, and neural networks.

docker/Dockerfile.archlinux

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ FROM ocaml/opam:archlinux-ocaml-5.1
88

99
##################### PREREQUISITES ########################
1010

11-
RUN sudo pacman -S --noconfirm base-devel wget zlib shapelib
11+
# RUN sudo pacman -S --noconfirm base-devel wget zlib shapelib
12+
RUN sudo pacman -Syu --noconfirm && sudo pacman -S --noconfirm base-devel wget zlib shapelib
1213
RUN sudo pacman -S --noconfirm lapack cblas lapacke openblas
1314
RUN opam install -y dune ocaml-compiler-libs ctypes alcotest utop conf-openblas dune-configurator stdio npy
1415

0 commit comments

Comments
 (0)