Skip to content

Commit d7701dd

Browse files
Maestro Dev Documentation (#277)
1 parent de71846 commit d7701dd

23 files changed

+990
-760
lines changed

CONTRIBUTING.md

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Contributing to Overture
2+
3+
We appreciate your interest in contributing to the Overture project. We are the Genome Informatics Software Engineering team from Ontario Institute for Cancer Research. At OICR we develop new software, databases and other necessary components to store, organize and compute over the large and complex datasets being generated by our cancer research programs. Embodying OICR's values of collaboration and community, we are firm believers in open-source and open-science. As such we strongly believe in the collective power of expertise and shared resources.
4+
5+
## Code of Conduct
6+
7+
By participating in this project, you are expected to abide by our [Code of Conduct](https://docs.overture.bio/community/code-of-conduct). Please take the time to read it carefully before contributing.
8+
9+
## Get Involved
10+
11+
**Getting Started:** Our primary platform for community support, feature requests, and general discussions is GitHub Discussions. This allows us to keep all conversations in one place and make them easily searchable for future reference.
12+
13+
14+
**Community Support:** Our primary platform for community support, feature requests, and general discussions is [GitHub Discussions](https://github.com/overture-stack/docs/discussions). This allows us to keep all conversations in one place and make them easily searchable for future reference.
15+
16+
- **Getting Help:** If you need assistance with Overture, please create a [new discussion in our support category](https://github.com/overture-stack/docs/discussions/categories/support).
17+
- Before creating a new discussion, please search existing discussions to see if your question has already been answered.
18+
- **Feature Requests & Proposals:** We love hearing your ideas for improving Overture! Before making a feature request, please check our [**feature roadmap**](https://github.com/orgs/overture-stack/projects/11/views/1) to see if your idea is already planned.
19+
- If your idea isn't on the roadmap, feel free to [**submit a feature request**](https://github.com/overture-stack/docs/discussions/categories/ideas) by creating a new discussion in our Ideas category
20+
- **Report a Potential Bug:** We use GitHub Issues primarily for tracking confirmed bugs and ticketing development tasks. If you come across a potential bug or issue, please first post it to our [**GitHub support discussion forum**](https://github.com/overture-stack/docs/discussions/categories/support).
21+
- This allows us to confirm the issue and gather more information if needed. If we determine that further development is required, we will create and tag you into a GitHub Issue from your discussion post.
22+
23+
## Our Development Process
24+
25+
We use GitHub issues and pull requests for communication related to code changes.
26+
27+
### Branch Organization
28+
29+
We use the following standard branches:
30+
31+
- `main` is for stable production code
32+
- `develop` is the integration branch for new features
33+
- `feature/<name>` for feature branches
34+
- `release/v<version>` for release branches
35+
- `hotfix/<name>` for hotfix branches
36+
37+
## Pull Requests
38+
39+
### Submitting a Pull Request
40+
41+
We welcome and encourage pull requests from the community. To submit a pull request, please follow these steps:
42+
43+
1. **Fork the Repository**: Fork the Overture repository on GitHub.
44+
2. **Clone Your Fork**: Clone your forked repository to your local machine.
45+
3. **Create a New Branch**: Create a new branch for your changes. Use lowercase and hyphens (e.g., `feature/user-authentication`). Include ticket/issue numbers when applicable (e.g., `feature/PROJ-123-user-authentication`).
46+
4. **Make Your Changes**: Implement your changes and commit them to your branch. Write clear, concise commit messages in present tense (e.g., "Add feature" not "Added feature"). Reference issue numbers in commits when applicable.
47+
5. **Push Your Changes**: Push your changes to your forked repository.
48+
6. **Submit a Pull Request**: Open a pull request against the main repository.
49+
50+
### Best Practices
51+
52+
1. **Keep PRs as small as possible:** Focus on one feature or bug fix per pull request. Break large changes into smaller, more manageable pieces making it easier for reviewers to understand and approve your changes.
53+
54+
2. **Use descriptive titles:** Start with a verb (e.g., "Add", "Fix", "Update", "Refactor"), briefly summarize the main purpose of the PR and include the issue number if applicable (e.g., "Fix user authentication bug (#123)").
55+
56+
3. **Describe how you tested it:** Explain the testing process you followed and mention any new automated tests you've added.
57+
58+
4. **Provide a clear description:** Explain the purpose of your changes and list the main modifications you've made. Mention any potential side effects or areas that might need extra attention.
59+
60+
5. **Link related issues:** Reference any related issues or pull requests. Use GitHub keywords to automatically link issues (e.g., "Closes #123", "Fixes #456").
61+
6. **Keep the PR's branch up-to-date:** Regularly rebase your branch on the latest main branch and resolve any merge conflicts promptly.
62+
63+
7. **Respond to feedback:** Be open to suggestions and willing to make changes. Address all comments from reviewers. If you disagree with a suggestion, explain your reasoning politely.
64+
65+
8. **Include documentation updates:** If your changes affect user-facing features, update or create and issue detailing the relevant changes need to the documentation. Where appropriate include inline comments for complex code sections.
66+
67+
10. **Be patient:** Reviewers will likely be unable to respond immediately. However, feel free to follow up politely if you haven't received feedback after a reasonable time.
68+
69+
### Using Draft Pull Requests
70+
71+
Draft Pull Requests are an excellent way to document work in progress and facilitate early feedback. Use them to:
72+
73+
- Organize your thoughts and process
74+
- Share early work and ideas with the team
75+
- Get feedback on implementation approaches before finalizing code
76+
- Track progress on long-running features
77+
78+
Guidelines for Draft Pull Requests:
79+
80+
1. **Creation**:
81+
- Open a pull request and select "Create draft pull request"
82+
- Clearly mark the title with [WIP] or [DRAFT] prefix
83+
2. **Description**:
84+
- Outline the current state of the work
85+
- List planned tasks or improvements
86+
- Highlight areas where feedback is specifically needed
87+
3. **Updates**:
88+
- Regularly update the description or provide comments following commits with progress notes
89+
- Use task lists (using `- [ ]` in Markdown) to track completion of sub-tasks
90+
4. **Collaboration**:
91+
- Encourage early feedback and discussion
92+
- Use the pull request comments for design discussions
93+
5. **Finalization**:
94+
- Complete all planned work and address feedback
95+
- Update tests and documentation
96+
- Click "Ready for review" to move out of draft state
97+
98+
### Merging a Pull Request
99+
100+
- Ensure all CI checks pass
101+
- Obtain the required number of approvals
102+
- Use the project's specified merge strategy (Typically squash and merge)
103+
- Delete the source branch after merging if no longer needed

README.md

+56-116
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,56 @@
1-
<h1 align="center">Maestro</h1>
2-
<p align="center">Organize geographically distributed data stored in Song and Score, with a single, configurable index.</p>
3-
<p align="center">
4-
<a href="https://github.com/overture-stack/maestro">
5-
<img alt="Under Development"
6-
title="Under Development"
7-
src="http://www.overture.bio/img/progress-horizontal-RC.svg" width="320" />
8-
</a>
9-
</p>
10-
11-
[![Documentation Status](https://readthedocs.org/projects/maestro-overture/badge/?version=latest)](https://maestro-overture.readthedocs.io/en/latest/?badge=latest)
12-
[![Slack](http://slack.overture.bio/badge.svg)](http://slack.overture.bio)
13-
14-
## Documentation:
15-
Documentation is hosted on :
16-
- github pages: https://overture-stack.github.io/maestro/
17-
- read the docs: https://maestro-overture.readthedocs.io/en/latest/ (using mkdocs https://docs.readthedocs.io/en/stable/intro/getting-started-with-mkdocs.html)
18-
19-
## Introduction
20-
Meastro was created to enable genomic researchers to enhance their Overture SONGs by building indexes, elastic search
21-
by default, that makes searching Analyses and Studies much more powerful and easier.
22-
23-
## TLDR;
24-
Skip down to the How to section it has the steps to get started.
25-
26-
### Features:
27-
- Supports indexing from multiple metadata repositories (SONG).
28-
- Multiple indexing requests: analysis, study, full repository.
29-
- Event driven indexing.
30-
- Integration with SONG to index published analysis and delete suppressed / unpublished analyses
31-
- Ability to Exclude analysis based on different Ids: Study, Analysis, Donor, Sample Or file.
32-
- Slack web hook integration
33-
34-
### Design Goals:
35-
- Reactive
36-
- Event driven
37-
- Elastic
38-
- Resiliency & Fault tolerance
39-
- Failure audit
40-
- Dead letters queue for faulty messages to be retried later and reviewed.
41-
- Human readable Error log
42-
- Runtime configurability
43-
- Extendable: separate domain from infrastructure & configuration
44-
45-
## Technologies & libraries:
46-
- Java 11 - OpenJDK 11
47-
- Maven 3 (YOU NEED MAVEN 3.5+, if you don't want to use the wrapper or your IDE points to older version)
48-
- lombok
49-
- Spring boot 2
50-
- Spring webflux & project reactor
51-
- Spring retry
52-
- Spring Cloud
53-
- Streams (for Kafak integration)
54-
- config client
55-
- Spring boot admin + client
56-
- Elasticsearch 7+
57-
- Apache Kafka
58-
- resilience4j:
59-
- retry module
60-
- vavr
61-
- Testing libraries:
62-
- Junit 5
63-
- Mockito 2
64-
- testcontainers
65-
- Spring cloud contract wiremock
66-
67-
## Structure
68-
The project is following the ports/adapters architecture, where the domain is completely isolated from external infrastructure
69-
and frameworks.
70-
- Two maven modules:
71-
- maestro domain
72-
- the core features and framework independent logic that is portable and contains the main indexing, rules, notifications
73-
logic as specified by the business features. Has packages like:
74-
- entities : contains POJOs and entities
75-
- api: the logic that fulfills the business features
76-
- ports: contains the interfaces needed by the api to communicate with anything outside the indexing context.
77-
78-
- maestro app:
79-
- The main runnable (spring boot app)
80-
- Contains the infrastructure and adapters (ports implementations) that is needed to connect the domain
81-
with the outside world like elastic search, song web clients, configuration files etc.
82-
It also has the Spring framework configurations here to keep technologies outside of the domain.
83-
84-
# Dependencies:
85-
To Successfully run Maestro (as is) you need the following services to be deployed and configure it to use them:
86-
- [Elasticsearch](https://www.elastic.co/products/elasticsearch)
87-
- [Apache Kafka](https://kafka.apache.org/)
88-
- [SONG](https://github.com/overture-stack/SONG)
89-
90-
you can check the sample docker compose files under `./run/docker-compose` for containerized versions of elastic & kafka.
91-
for SONG please check the SONG github repo [here](https://github.com/overture-stack/SONG/tree/develop/dev)
92-
on how to run it with docker. Or you can run it as jar.
93-
94-
## How to:
95-
- Swagger API access:
96-
- localhost:11235/api-docs
97-
98-
Note: if you don't/can't use the Makefile, look inside it for the shell commands and replicate them.
99-
- Compile: `make`
100-
- Test: `make test`
101-
- Package: `make package`
102-
- Run:
103-
- Source:
104-
- Development:
105-
1. `make docker-start-dev` starts the infrastructure containers
106-
- kafka
107-
- elastic search
108-
- other helper tools if you want like kafka rest proxy
109-
2. `make run` OR start maestro (Maestro.java) from the IDE/cmd as a java application
110-
- Docker:
111-
- Repository: https://hub.docker.com/r/overture/maestro
112-
- `make docker-start` starts maestro from a docker image along with all needed infrastructure
113-
- helm:
114-
- Repository: https://overture-stack.github.io/charts-server/
115-
- see : https://github.com/overture-stack/helm-charts for instructions and the maestro folder for examples
116-
1+
# Maestro
2+
3+
Maestro enables researchers to enhance their Overture SONG deployments by building powerful search indexes for Analyses and Studies. It organizes geographically distributed data stored in Song and Score into a single, configurable index.
4+
5+
</br>
6+
7+
>
8+
> <div>
9+
> <img align="left" src="ov-logo.png" height="60"/>
10+
> </div>
11+
>
12+
> *Maestro is part of [Overture](https://www.overture.bio/), a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.*
13+
>
14+
>
15+
16+
## Documentation
17+
18+
Technical resources for those working with or contributing to the project are available from our official documentation site, the following content can also be read and updated within the `/docs` folder of this repository.
19+
20+
- **[Maestro Overview](https://docs.overture.bio/docs/core-software/Maestro/overview)**
21+
- [**Setting up the Development Enviornment**](https://docs.overture.bio/docs/core-software/Maestro/setup)
22+
- [**Common Usage Docs**](https://docs.overture.bio/docs/core-software/Maestro/setup)
23+
24+
## Development Environment
25+
26+
- [Java 11 (OpenJDK)](https://openjdk.java.net/projects/jdk/11/)
27+
- [Maven 3.5+](https://maven.apache.org/) (or use provided wrapper)
28+
- [VS Code](https://code.visualstudio.com/) or preferred Java IDE
29+
- [Docker](https://www.docker.com/) Container platform
30+
31+
## Support & Contributions
32+
33+
- For support, feature requests, and bug reports, please see our [Support Guide](https://docs.overture.bio/community/support).
34+
- For detailed information on how to contribute to this project, please see our [Contributing Guide](https://docs.overture.bio/docs/contribution).
35+
36+
## Related Software
37+
38+
The Overture Platform includes the following Overture Components:
39+
40+
</br>
41+
42+
|Software|Description|
43+
|---|---|
44+
|[Score](https://github.com/overture-stack/score/)| Transfer data to and from any cloud-based storage system |
45+
|[Song](https://github.com/overture-stack/song/)| Catalog and manage metadata associated to file data spread across cloud storage systems |
46+
|[Maestro](https://github.com/overture-stack/maestro/)| Organizing your distributed data into a centralized Elasticsearch index |
47+
|[Arranger](https://github.com/overture-stack/arranger/)| A search API with reusable search UI components |
48+
|[Stage](https://github.com/overture-stack/stage)| A React-based web portal scaffolding |
49+
|[Lyric](https://github.com/overture-stack/lyric)| A model-agnostic, tabular data submission system |
50+
|[Lectern](https://github.com/overture-stack/lectern)| Schema Manager, designed to validate, store, and manage collections of data dictionaries. |
51+
52+
If you'd like to get started using our platform [check out our quickstart guides](https://docs.overture.bio/guides/getting-started)
53+
54+
## Funding Acknowledgement
55+
56+
Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

docs/_config.yml

-1
This file was deleted.

docs/assets/index-analysis.png

167 KB
Loading

docs/assets/index-repo2.png

135 KB
Loading

docs/assets/index-study.png

95.8 KB
Loading

docs/assets/maestroDev.svg

+1
Loading

docs/features.md

-99
This file was deleted.

0 commit comments

Comments
 (0)