---
title: Apache Hop
description: Apache Hop - The Hop Orchestration Platform aims to facilitate all aspects of data and metadata orchestration.
---

{{< section "frontpage columns apache demo" >}}

# Apache Hop

{{< div "split demo" >}}

<h2 style="text-align: left">See Apache Hop in action</h2>

Seeing is believing! Check out Apache Hop Web in the demo servers below. 

<p><a class="button-dark" href="http://demo.hop.apache.org/ui" target="_blank">Hop Web (Latest release)</a></p>

<p><a class="button-dark" href="http://demo.hop.apache.org:8080/ui" target="_blank">Hop Web (Development version)</a></p>

<p>Both demo servers are publicly available and are reset every 30 minutes.</p>

{{< /div >}}

{{< div "split demo" >}}

<div id="democontainer">
<iframe id="demoiframe" src="http://demo.hop.apache.org:8080/ui" style="  width: 100%;
  height: 100%;
  overflow: scroll;
  border: 0;
  transform: scale(0.3);
  position: absolute; 
  transform-origin: 0 0;  "  ></iframe>
</div>

{{< /div >}}

{{< /section >}}







{{< section "frontpage columns functionalities" >}}

{{< div "box right" >}}

{{< div "content" >}}

## Metadata Driven

Hop is entirely metadata driven. Every object type in Hop describes how data is read, manipulated or written, or how workflows and pipelines need to be orchestrated.</br>
Metadata is what drives Hop internally as well. Hop uses a kernel architecture with a robust engine. Plugins add functionality to the engine through their own metadata.

<!--p><a class="button-dark" href="/link/to/doc/page/on/metadata">Read more on Hop Metadata</a></p-->

{{< /div >}}

{{< div "icon" >}}

<img src="./img/GenericTransform.svg" alt="Driven By Metadata"/>

{{< /div >}}

{{< /div >}}


{{< div "box left" >}}

{{< div "icon" >}}

<img src="./img/beam-logo.svg" alt="Driven By Metadata"/>

{{< /div >}}

{{< div "content" >}}

## Design Once, Run Anywhere

Hop workflows and pipelines are definitions of how data needs to be processed. </br>Once designed, a pipeline can be executed on any supported runtime.
Hop has built-in support to run pipelines locally and remotely in the native Hop runtime, or on <a href="https://spark.apache.org" target="blank">Apache Spark</a>, <a href="https://flink.apache.org" target="blank">Apache Flink</a> or <a href="https://cloud.google.com/dataflow" target="blank">Google Dataflow</a> through the <a href="https://beam.apache.org" target="blank">Apache Beam</a> runtimes.

<!--p><a class="button-dark" href="/components/latest/eips/enterprise-integration-patterns.html">Read more on runtimes</a></p-->

{{< /div >}}

{{< /div >}}

{{< div "box right" >}}

{{< div "content" >}}

## Visual Development

Hop workflows and pipelines are developed visually through an intuitive drag and drop interface. </br>
Visual development allows data developers and data engineers to keep focus on the business logic that needs to be implemented, on <i>what</i> needs to be done instead of <i>how</i> it needs to be done.

<!--p><a class="button-dark" href="/components/latest/eips/enterprise-integration-patterns.html">Read more on Hop Gui</a></p-->

{{< /div >}}

{{< div "icon" >}}

<img src="./img/eyeglasses.svg" alt="Driven By Metadata"/>

{{< /div >}}

{{< /div >}}


{{< div "box left" >}}

{{< div "icon" >}}

<img src="./img/cycle.svg" alt="Driven By Metadata"/>

{{< /div >}}

{{< div "content" >}}

## Built-in Life Cycle Management

Managing, testing and deploying workflows and pipelines can be a daunting task.</br>
Developers and engineers can manage the entire project life cycle from the Hop Gui: switch between projects, environments, runtime configurations, manage git versions etc.

<!--p><a class="button-dark" href="/components/latest/eips/enterprise-integration-patterns.html">Read more on LCM</a></p-->

{{< /div >}}

{{< /div >}}


{{< /section >}}

{{< section "frontpage columns apache" >}}

# Apache &amp; Open Source

{{< div "split" >}}
![20 years of Apache Software foundation](/img/apache-20.png)
{{< /div >}}

{{< div "split" >}}

**Hop is your project!**

Hop is an [Apache Software Foundation](https://www.apache.org) project, available under the [Apache v2 license](https://apache.org/licenses/LICENSE-2.0). It's a complete open community, always listening to proposals and comments.

[Sources](./community/sources/), [mailing lists](./community/mailing-list/), [issue tracker](./community/support/): it's fully open, you can access directly.

We also love contributions: don't hesitate to [contribute](./community/contributing/). You can contribute by <a href="https://github.com/apache/hop-website/edit/master/content/_index.md">editing this page</a>!

[Be Involved In The Community](./community/contributing/)

{{< /div >}}

{{< /section >}}




