| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | --- | 
					
						
							| 
									
										
										
										
											2025-06-20 19:46:38 +05:30
										 |  |  | title: Prerequisites | OpenMetadata Developer Setup Requirements | 
					
						
							| 
									
										
										
										
											2025-07-21 12:50:54 +05:30
										 |  |  | description: Complete prerequisite steps for contributing code including environment, dependencies, and access setup. | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | slug: /developers/contribute/build-code-and-run-tests/prerequisites | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Prerequisites
 | 
					
						
							|  |  |  | This guide will help you set up all prerequisites to develop on OpenMetadata. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | OpenMetadata being a full stack project, we use the following for development: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - [Docker 20 or higher](https://docs.docker.com/engine/install/) | 
					
						
							| 
									
										
										
										
											2025-06-20 17:48:35 +05:30
										 |  |  | - [Java JDK 21](https://docs.oracle.com/en/java/javase/21/install/overview-jdk-installation.html) | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | - [Antlr 4.9.2](https://www.antlr.org/) - `sudo make install_antlr_cli` | 
					
						
							|  |  |  | - [JQ](https://jqlang.github.io/jq/) - `brew install jq` (osx)  `apt-get install jq` (Ubuntu) | 
					
						
							|  |  |  | - [Maven 3.5.x or higher](https://maven.apache.org/install.html) - (with Java JDK 11) | 
					
						
							| 
									
										
										
										
											2025-04-09 10:42:36 +05:30
										 |  |  | - [Python 3.9 to 3.11](https://www.python.org/downloads/) | 
					
						
							| 
									
										
										
										
											2024-07-25 13:45:04 +05:30
										 |  |  | - [Node 18.x](https://nodejs.org/en/download/) | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | - [Yarn ^1.22.0](https://classic.yarnpkg.com/lang/en/docs/install/) | 
					
						
							|  |  |  | - [Rpm (Optional, only to run RPM profile with maven)](https://macappstore.org/rpm/) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To validate the installation of the above tools, you can run:  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```shell | 
					
						
							|  |  |  | make prerequisites | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Example Snapshot on a Macbook
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```shell | 
					
						
							|  |  |  | > docker --version
 | 
					
						
							|  |  |  | Docker version 20.10.8, build 3967b7d | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > java -version
 | 
					
						
							| 
									
										
										
										
											2025-06-17 12:16:52 +05:30
										 |  |  | openjdk version "21.0.7" 2025-04-15 | 
					
						
							|  |  |  | OpenJDK Runtime Environment Homebrew (build 21.0.7) | 
					
						
							|  |  |  | OpenJDK 64-Bit Server VM Homebrew (build 21.0.7, mixed mode, sharing) | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | > antlr4
 | 
					
						
							|  |  |  | ANTLR Parser Generator  Version 4.9.2 | 
					
						
							|  |  |  |  -o ___              specify output directory where all output is generated | 
					
						
							|  |  |  |  -lib ___            specify location of grammars, tokens files | 
					
						
							|  |  |  |  -atn                generate rule augmented transition network diagrams | 
					
						
							|  |  |  |  -encoding ___       specify grammar file encoding; e.g., euc-jp | 
					
						
							|  |  |  |  -message-format ___ specify output style for messages in antlr, gnu, vs2005 | 
					
						
							|  |  |  |  -long-messages      show exception details when available for errors and warnings | 
					
						
							|  |  |  |  -listener           generate parse tree listener (default) | 
					
						
							|  |  |  |  -no-listener        don\'t generate parse tree listener | 
					
						
							|  |  |  |  -visitor            generate parse tree visitor | 
					
						
							|  |  |  |  -no-visitor         don\'t generate parse tree visitor (default) | 
					
						
							|  |  |  |  -package ___        specify a package/namespace for the generated code | 
					
						
							|  |  |  |  -depend             generate file dependencies | 
					
						
							|  |  |  |  -D<option>=value    set/override a grammar-level option | 
					
						
							|  |  |  |  -Werror             treat warnings as errors | 
					
						
							|  |  |  |  -XdbgST             launch StringTemplate visualizer on generated code | 
					
						
							|  |  |  |  -XdbgSTWait         wait for STViz to close before continuing | 
					
						
							|  |  |  |  -Xforce-atn         use the ATN simulator for all predictions | 
					
						
							|  |  |  |  -Xlog               dump lots of logging info to antlr-timestamp.log | 
					
						
							|  |  |  |  -Xexact-output-dir  all output goes into -o dir regardless of paths/package | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > mvn -version
 | 
					
						
							| 
									
										
										
										
											2025-06-17 12:16:52 +05:30
										 |  |  | Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) | 
					
						
							|  |  |  | Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec | 
					
						
							|  |  |  | Java version: 23.0.2, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home | 
					
						
							|  |  |  | Default locale: en_IN, platform encoding: UTF-8 | 
					
						
							|  |  |  | OS name: "mac os x", version: "15.5", arch: "aarch64", family: "mac" | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | >  make -version
 | 
					
						
							|  |  |  | GNU Make 3.81 | 
					
						
							|  |  |  | Copyright (C) 2006  Free Software Foundation, Inc. | 
					
						
							|  |  |  | This is free software; see the source for copying conditions. | 
					
						
							|  |  |  | There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A | 
					
						
							|  |  |  | PARTICULAR PURPOSE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This program built for i386-apple-darwin11.3.0 | 
					
						
							|  |  |  | > python --version
 | 
					
						
							| 
									
										
										
										
											2025-06-20 17:48:35 +05:30
										 |  |  | Python 3.10.17 | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | > node --version
 | 
					
						
							| 
									
										
										
										
											2025-06-20 17:48:35 +05:30
										 |  |  | v20.19.2 | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | > yarn --version
 | 
					
						
							| 
									
										
										
										
											2025-06-20 17:48:35 +05:30
										 |  |  | 1.22.22 | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | > rpm --version
 | 
					
						
							|  |  |  | RPM version 4.17.0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > jq --version                                                                                       
 | 
					
						
							| 
									
										
										
										
											2025-06-20 17:48:35 +05:30
										 |  |  | jq-1.7.1 | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Install pre-commit hooks
 | 
					
						
							|  |  |  | We use pre-commit hooks to run checkstyle for Java and Python and format it as per our coding style. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Please install the following to format the code during the git commit process | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```shell | 
					
						
							|  |  |  | git clone https://github.com/open-metadata/OpenMetadata | 
					
						
							|  |  |  | cd openmetadata | 
					
						
							|  |  |  | python3 -m venv env | 
					
						
							|  |  |  | source env/bin/activate | 
					
						
							|  |  |  | pip install pre-commit | 
					
						
							|  |  |  | make install_dev | 
					
						
							|  |  |  | make install_test precommit_install | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### OpenMetadata API Backend
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We use Java for developing OpenMetadata backend server. Following are the key technologies that we use for the backend: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - [jsonschema2pojo](https://www.jsonschema2pojo.org/) for Java code generation | 
					
						
							|  |  |  | - [Dropwizard](https://www.dropwizard.io/en/latest/) for the web service application | 
					
						
							|  |  |  | - [JDBI3](http://jdbi.org/) for database access |