Preparation
Before contributing, it’s necessary to make some preparations to learn more about MatrixOne and other revalant information, which can improve developing and reviewing efficiency.
Thanks for understanding that English is used as a shared language in this repository. Maintainers do not use machine translation to avoid miscommunication due to errors in translation. If descriptions of issue / PR are written in non-English languages, those may be closed. If English is not your native language and you aren’t sure about any of these, don’t hesitate to ask for help in your pull request!
What is MatrixOne
Basic Information
You can see MatrixOne Introduction for key features of MatrixOne, MatrixOne Architecture for MatrixOne architecture and operational logic. For our distributed framework, see MatrixCube Tech Design.
Besides, you can browse SQL Reference and Custom Functions to know more about our interactive details.
These introductions will help you go through you the key concepts and user details to understand the project.
Roadmap
MatrixOne v0.3.0 has been released, you can see Release Notes to know more information.
Currently, we are working at v0.4.0 and v0.5.0 releases, the job tasks of these releases are listed in the Github milestones 0.4.0.
For the long-term project roadmap, please refer to MatrixOne roadmap for a more general overview.
What Contributions Can I Make
Contributions to MatrixOne are not limited to writing code. What follows are different ways to participate in the MatrixOne project and engage with our vibrant open-source community. See Types of Contributions for more details.
- To report a bug or a problem with documentation, please file an issue providing the details of the problem. Don’t forget to add a proper label for your issue, and follow the issue templates.
- To propose a new feature, please file a new feature request. Describe the intended feature and discuss the design and implementation with the team and community. Once the team agrees on the plan, you can follow the Contribution Workflow to implement it.
- To implement a feature or bug-fix for an existing outstanding issue, follow the Contribution workflow. If you need more context on a particular issue, comment on the issue to let people know.
Working Directories and Files
For contributing code, matrixone is the main repository you’ll be working on. The main working directories are listed below:
Directory | Working Files |
---|---|
/LICENSES | The license of dependant libraries |
/cmd | The binary entry of Go executables |
optools | The test and deployment utilities |
pkg | The main codebase of MatrixOne project |
For different technical modules, a code structure under /pkg
is as following table. Please refer to MatrixOne tech design for a better overview.
Directory | Modules |
---|---|
frontend/ | SQL Frontend |
sql/parser | SQL Parser |
sql/ | MPP SQL Execution |
sql/vectorize | Vectorization of SQL Execution |
catalog/ | Catalog for storing metadata |
github.com/matrixorigin/matrixcube | MatrixCube |
vm/engine | Storage engine |
vm/engine/aoe | Analytics Optimized Engine |
vm/engine/tpe | Transaction Processing Engine |
buildin/ | System builtin functions |
For contributing documentation, matrixone, matrixorigin.io and artwork are all the main repositories you’ll be working on. For more details, please refer to Contribute Documentation.
Directory | Working Files |
---|---|
matrixone/docs/en/MatrixOne | The content files of MatrixOne documentation website |
matrixone/docs/rfcs | The design docs of MatrixOne project |
matrixorigin.io/mkdocs.yml | The configuration file of documentation website |
artwork/docs | The images, screenshots and diagrams of documentation webstie |
Set up your Development Environment
Go Environment
MatrixOne is written in Go. Before you start contributing code to MatrixOne, you need to set up your GO development environment.
- Install
Go
version 1.17 or above. You can see How to Write Go Code for more information. - Define
GOPATH
environment variable and modifyPATH
to access your Go binaries. A common setup is as follows. You could always specify it based on your own flavor.
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Note
MatrixOne uses Go Modules to manage dependencies.
Github & Git
MatrixOne is an open-source project built on Github, providing project maintainers and contributors with a platform to work together. Thus in order to start working with MatrixOne repository, you will need a GitHub account and learn basic git commands.
If you don’t have a Github account, please register at https://github.com. In case you do not have SSH keys, you should generate them and then upload them on GitHub. It is required for sending over your patches. It is also possible to use the same SSH keys that you use with any other SSH servers - probably you already have those.
For detailed information about Github, you can see Github Docs.
To work with git repositories, please install git. And you can learn how to use it throuth following introduction:
Install and Run MatrixOne
See Install Standalone MatrixOne for more details.