Before contributing, it's necessary to make some preparations to learn more about MatrixOne and other prerevalant information which can improve developing and reviewing efficiency.
Thanks for understanding that this repository uses English as a shared language. Maintainers do not use machine translation to avoid miscommunication due to errors in translation. If the description of an issue / PR is written in non-English languages, it 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
These introductions will help you go through you the key concepts and user details to understand the project.
MatrixOne v0.3.0 has been released, you can see Release Notes know more information.
Currently, we are working on 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 the 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:
|/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 shown in the following table.
|sql/||MPP SQL Execution|
|sql/vectorize||Vectorization of SQL Execution|
|catalog/||Catalog for storing metadata|
|vm/engine/aoe||Analytics Optimized Engine|
|vm/engine/tpe||Transaction Processing Engine|
|buildin/||System builtin functions|
|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 the documentation website|
|artwork/docs||The images, screenshots and diagrams of documentation webstie|
Set up your Development Environment
MatrixOne is written in Go. Before you start contributing code to MatrixOne, you need to set up your GO development environment.
Goversion 1.18. You can see How to Write Go Code for more information.
GOPATHenvironment variable and modify
PATHto 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
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.