We welcome contributions, idea submissions, and improvements. In fact we may already have open issues labeled Accepting Merge Requests if you don't know where to start. Please see the contribution guidelines below for source code related contributions.

# Clone the Meltano repogit clone git@gitlab.com:meltano/meltano.git
# Change directory into the Meltano projectcd meltano
# Optional, but it's best to have the latest pip
pip install --upgrade pip
# Optional, but it's best to have the latest setuptools
pip install --upgrade setuptools
# Optional, but it's recommended to create a virtual environment# in order to minimize side effects from unknown environment variable
python -m venv ~/virtualenvs/meltano-development
# Activate your virtual environmentsource ~/virtualenvs/meltano-development/bin/activate
# Install all the dependencies
pip install -r requirements.txt
# Install dev dependencies with the edit flag on to detect changes# Note: you may have to escape the .`[dev]` argument on some shells, like zsh
pip install -e .[dev]# Bundle the Meltano UI into the `meltano` packagemake bundle

In the event you are contributing to Meltano UI and want to work with all of the frontend tooling (i.e., hot module reloading, etc.), you will need to run the following commands:

# Navigate to a Meltano project that has already been initialized# Start the Meltano API and a production build of Meltano UI that you can ignore
meltano ui
# Open a new terminal tab and go to your meltano directory# Install frontend infrastructure at the root directory
yarn
# Change directory to webapp source codecd src/webapp
# Install dependencies
yarn
# Start local development environment
yarn serve

The developement build of the Meltano UI will be available at [http://localhost:8080/]

Meltano API and CLI are both supported by a database that is managed using Alembic migrations.

Note

Alembic is a full featured database migration working on top of SQLAlchemy.

Migrations for the system database are located inside the meltano.migrations module.

To create a new migration, use the alembic revision -m "message" command, then edit the created file with the necessary database changes. Make sure to implement both upgrade and downgrade, so the migration is reversible, as this will be used in migration tests in the future.

Each migration should be isolated from the meltano module, so don't import any model definition inside a migration.

WARNING

Meltano doesn't currently support auto-generating migration from the models definition.

Within each aforementioned depth level is an interactive color hierarchy that further organizes content while communicating an order of importance for interactive elements. This interactive color hierarchy subtly influences the user's attention and nudges their focus.

Primary - $interactive-primary

Core interactive elements (typically buttons) for achieving the primary task(s) in the UI

Fill - Most important

Stroke - Important

Secondary - $interactive-secondary

Supporting interactive elements (various controls) that assist the primary task(s) in the UI

Fill - Hover only

Stroke - Denotes the states of selected, active, and/or valid

Grey represents the opposites: unselected, inactive, and/or invalid

Tertiary - Greyscale

Typically white buttons and other useful controls that aren't core or are in support of the primary task(s) in the UI

A contributor can ask for a review on any merge request, without this merge request being done and/or ready to merge.

Asking for a review is asking for feedback on the implementation, not approval of the merge request. It is also the perfect time to familiarize yourself with the code base. If you don’t understand why a certain code path would solve a particular problem, that should be sent as feedback: it most probably means the code is cryptic/complex or that the problem is bigger than anticipated.

Merge conflicts, failing tests and/or missing checkboxes should not be used as ground for sending back a merge request without feedback, unless specified by the reviewer.

Meltano uses tags to create its artifacts. Pushing a new tag to the repository will publish it as docker images and a PyPI package.

Meltano has a number of dependencies for the release toolchain that are required when performing a release. If you haven't already, please navigate to your meltano install and run the following command to install all development dependencies:

In order to run applications, you need to run multiple sessions and have to do a lot of repetitive tasks (like sourcing your virtual environments). So we have created a way for you to start and track everything in its appropriate panes with a single command.