Skip to content

Preparation

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

Basic Information

You can see MatrixOne Introduction for key features of MatrixOne, MatrixOne Architecture for MatrixOne architecture, and operational logic.

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 v24.1.2.4 has been released, you can see Release Notes know more information.

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:

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 shown in the following table.

Directory Modules
frontend/ SQL Frontend
sql/ MPP SQL Execution
sql/parser SQL Parser
sql/vectorize Vectorization of SQL Execution
catalog/ Catalog for storing metadata
vm/engine Storage engine
vm/engine/aoe Analytics Optimized Engine
vm/engine/tpe Transaction Processing Engine
buildin/ System builtin functions

For contributing documentation, matrixorigin.io , matrixorigin.io.cn 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/rfcs The design docs of MatrixOne project
matrixorigin.io/docs/MatrixOne The content files of the English MatrixOne documentation website
matrixorigin.io.cn/docs/MatrixOne The content files of the Chinese MatrixOne documentation website
matrixorigin.io/mkdocs.yml The configuration file of the English documentation website
matrixorigin.io.cn/mkdocs.yml The configuration file of the Chinese 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.

  1. Install Go version 1.19. You can see How to Write Go Code for more information.
  2. Define GOPATH environment variable and modify PATH 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:

  • A brief manual can be found here.
  • A detailed manual can be found here.

Install and Run MatrixOne

See Install Standalone MatrixOne for more details.