mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-04 11:19:39 -06:00
56 lines
3.0 KiB
Markdown
56 lines
3.0 KiB
Markdown
---
|
|
title: "Getting Started"
|
|
date: 2020-07-07T20:35:00+01:00
|
|
weight: 15
|
|
geekdocRepo: https://github.com/owncloud/ocis
|
|
geekdocEditPath: edit/master/docs/ocis/development
|
|
geekdocFilePath: getting-started.md
|
|
---
|
|
|
|
{{< toc >}}
|
|
|
|
## Requirements
|
|
|
|
We want contribution to oCIS and the creation of extensions to be as easy as possible.
|
|
So we are trying to reflect this in the tooling. It should be kept simple and quick to be set up.
|
|
|
|
Besides standard development tools like git and a text editor, you need the following software for development:
|
|
|
|
- Go >= v1.22 ([install instructions](https://golang.org/doc/install))
|
|
- pnpm ([install instructions](https://pnpm.io/installation))
|
|
- docker ([install instructions](https://docs.docker.com/get-docker/))
|
|
- docker-compose ([install instructions](https://docs.docker.com/compose/install/))
|
|
|
|
If you find tools needed besides the mentioned above, please feel free to open an issue or open a PR.
|
|
|
|
## Repository structure
|
|
|
|
oCIS consists of multiple microservices, also called extensions. We started by having standalone repositories for each of them, but quickly noticed that this adds a time-consuming overhead for developers. So we ended up with a monorepo housing all the extensions in one repository.
|
|
|
|
Each extension lives in a subfolder (e.g. `accounts` or `settings`) within this repository as an independent Go module, following the [golang-standard project-layout](https://github.com/golang-standards/project-layout). They have common Makefile targets and can be used to change, build and run individual extensions. This allows us to version and release each extension independently.
|
|
|
|
The `ocis` folder contains our [go-micro](https://github.com/asim/go-micro/) and [suture](https://github.com/thejerf/suture) based runtime. It is used to import all extensions and implements commands to manage them, similar to a small orchestrator. With the resulting oCIS binary you can start single extensions or even all extensions at the same time.
|
|
|
|
The `docs` folder contains the source for the [oCIS documentation]({{< ref "../" >}}).
|
|
|
|
The `deployments` folder contains documented deployment configurations and templates. On a single node, running a single ocis runtime is a resource efficient way to deploy ocis. For multiple nodes docker compose or helm charts for kubernetes examples can be found here.
|
|
|
|
The `scripts` folder contains scripts to perform various build, install, analysis, etc. operations.
|
|
|
|
## Starting points
|
|
|
|
Depending on what you want to develop there are different starting points. These will be described below.
|
|
|
|
### Developing oCIS
|
|
|
|
If you want to contribute to oCIS:
|
|
|
|
- see [contribution guidelines](https://github.com/owncloud/ocis#contributing)
|
|
- make sure the tooling is set up by [building oCIS]({{< ref "build" >}}) and [building the docs]({{< ref "build-docs" >}})
|
|
- create or pick an [open issue](https://github.com/owncloud/ocis/issues) to develop on and mention in the issue that you are working on it
|
|
- open a PR and get things done
|
|
|
|
### Developing extensions
|
|
|
|
If you want to develop an extension, start here: [Extensions]({{< ref "extensions">}})
|