blob: 1b4b2a9240031cfc1a91afa4bf512b3f777bb64b [file] [log] [blame]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="icon" type="image/png" href="../../favicon-196x196.png" sizes="196x196"> <meta name="application-name" content="Apache Hop (Incubating)"> <link rel="manifest" href="../../site.webmanifest"> <title>Preview Release 0.30 - Hop</title> <link rel="canonical" href="../../news/release-preview-0-30/"> <link rel="stylesheet" href="../../_/css/site-f389897e03.css"> </head> <body class="article"> <div id="cookies-eu-banner" style="display: none;"> <div id="cookies-eu-content"> By continuing to visit this site, you accept the use of <a href="/cookie-info/">cookies.</a> <button id="cookies-eu-accept">Accept</button> </div> <button id="cookies-eu-reject">Reject</button> </div> <header class="header"> <nav class="navbar"> <div class="navbar-brand"> <a class="nav-logo" href="../../" title="Hop"><span>Hop</span></a> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">Documentation</a> <div class="navbar-dropdown"> <a class="navbar-item" href="../../manual/latest/getting-started.html">Getting started</a> <a class="navbar-item" href="../../manual/latest/">User manual</a> <a class="navbar-item" href="../../tech-manual/latest/">Technical Documentation</a> <a class="navbar-item" href="../../dev-manual/latest/">Developer Documentation</a> <a class="navbar-item" href="../../docs/architecture/">Architecture</a> <a class="navbar-item" href="../../docs/roadmap/">Roadmap</a> <a class="navbar-item" href="../../docs/qa">Q&amp;A</a> </div> </div> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">Community</a> <div class="navbar-dropdown"> <a class="navbar-item" href="../../community/contributing/">Contributing</a> <a class="navbar-item" href="../../community/tools/">Tools</a> <a class="navbar-item" href="../../community/team/">Team</a> </div> </div> <a class="navbar-item" href="../../download/download/">Download</a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">About</a> <div class="navbar-dropdown"> <a class="navbar-item" href="https://www.apache.org/licenses/LICENSE-2.0">License</a> </div> </div> </div> </div> <div class="navbar-search"> <input id="search-input" type="text" placeholder="Search docs" class="ds-input" autocomplete="off" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-owns="algolia-autocomplete-listbox-0" dir="auto"> </div> <div class="navbar-tools"> <a href="https://chat.project-hop.org" title="Chat with us" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="m 23.399705,7.0517653 c -0.811583,-1.755522 -1.98643,-3.2324028 -3.542396,-4.4727237 0.04144,0.8420009 0.131904,2.6427217 0.131904,2.6427217 0,0 0.09696,0.1272 0.13632,0.182401 1.572478,2.199681 2.147037,4.6376017 1.623358,7.2857637 -1.050239,5.309843 -6.218105,8.549046 -11.455186,7.224805 C 5.6960779,18.752172 2.6254257,14.043529 3.4949926,9.3753663 4.1813918,5.6900843 6.3558852,3.2350424 9.8870488,1.9875216 l 0.1279682,-0.048 0.100416,-0.072 C 10.543401,1.2611208 10.961,0.6477608 11.406631,0 6.0547335,0.2656 0.67230798,4.5661633 0.05570071,11.107927 -0.54103457,17.438011 3.7200163,23.083134 9.8089048,24.321855 16.154114,25.612736 22.194522,21.863214 24.019864,15.86257 24.932631,12.862008 24.719032,9.9083263 23.399704,7.0542453 Z M 8.2979624,11.010647 c 0.267552,2.546882 2.4715176,4.282562 5.0209866,4.000322 2.504829,-0.2776 4.335931,-2.731601 3.861787,-5.2146427 -0.3696,-1.936001 -0.77808,-3.864402 -1.170046,-5.796084 -0.162144,-0.7991999 -0.326208,-1.5984007 -0.49824,-2.4414407 -0.06784,0.056 -0.09936,0.0848 -0.128064,0.1128 -0.858239,0.84272 -1.715997,1.6859209 -2.574236,2.5285617 -1.045056,1.02632 -2.08867,2.053921 -3.1362212,3.077522 -1.0506224,1.02664 -1.5288936,2.279601 -1.3760624,3.7327217 z"/></svg></a> <a href="https://twitter.com/projhop" title="Follow us on Twitter" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm6.5 8.778c-.441.196-.916.328-1.414.388.509-.305.898-.787 1.083-1.362-.476.282-1.003.487-1.564.597-.448-.479-1.089-.778-1.796-.778-1.59 0-2.758 1.483-2.399 3.023-2.045-.103-3.86-1.083-5.074-2.572-.645 1.106-.334 2.554.762 3.287-.403-.013-.782-.124-1.114-.308-.027 1.14.791 2.207 1.975 2.445-.346.094-.726.116-1.112.042.313.978 1.224 1.689 2.3 1.709-1.037.812-2.34 1.175-3.647 1.021 1.09.699 2.383 1.106 3.773 1.106 4.572 0 7.154-3.861 6.998-7.324.482-.346.899-.78 1.229-1.274z"/></svg></a> <a href="https://www.linkedin.com/company/hop-project/" title="Follow us on LinkedIn" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/></svg></a> <a href="https://www.youtube.com/channel/UCGlcYslwe03Y2zbZ1W6DAGA" title="Subscribe to our YouTube channel" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path fill-rule="evenodd" d="M4.652 0h1.44l.988 3.702.916-3.702h1.454l-1.665 5.505v3.757h-1.431v-3.757l-1.702-5.505zm6.594 2.373c-1.119 0-1.861.74-1.861 1.835v3.349c0 1.204.629 1.831 1.861 1.831 1.022 0 1.826-.683 1.826-1.831v-3.349c0-1.069-.797-1.835-1.826-1.835zm.531 5.127c0 .372-.19.646-.532.646-.351 0-.554-.287-.554-.646v-3.179c0-.374.172-.651.529-.651.39 0 .557.269.557.651v3.179zm4.729-5.07v5.186c-.155.194-.5.512-.747.512-.271 0-.338-.186-.338-.46v-5.238h-1.27v5.71c0 .675.206 1.22.887 1.22.384 0 .918-.2 1.468-.853v.754h1.27v-6.831h-1.27zm2.203 13.858c-.448 0-.541.315-.541.763v.659h1.069v-.66c.001-.44-.092-.762-.528-.762zm-4.703.04c-.084.043-.167.109-.25.198v4.055c.099.106.194.182.287.229.197.1.485.107.619-.067.07-.092.105-.241.105-.449v-3.359c0-.22-.043-.386-.129-.5-.147-.193-.42-.214-.632-.107zm4.827-5.195c-2.604-.177-11.066-.177-13.666 0-2.814.192-3.146 1.892-3.167 6.367.021 4.467.35 6.175 3.167 6.367 2.6.177 11.062.177 13.666 0 2.814-.192 3.146-1.893 3.167-6.367-.021-4.467-.35-6.175-3.167-6.367zm-12.324 10.686h-1.363v-7.54h-1.41v-1.28h4.182v1.28h-1.41v7.54zm4.846 0h-1.21v-.718c-.223.265-.455.467-.696.605-.652.374-1.547.365-1.547-.955v-5.438h1.209v4.988c0 .262.063.438.322.438.236 0 .564-.303.711-.487v-4.939h1.21v6.506zm4.657-1.348c0 .805-.301 1.431-1.106 1.431-.443 0-.812-.162-1.149-.583v.5h-1.221v-8.82h1.221v2.84c.273-.333.644-.608 1.076-.608.886 0 1.18.749 1.18 1.631v3.609zm4.471-1.752h-2.314v1.228c0 .488.042.91.528.91.511 0 .541-.344.541-.91v-.452h1.245v.489c0 1.253-.538 2.013-1.813 2.013-1.155 0-1.746-.842-1.746-2.013v-2.921c0-1.129.746-1.914 1.837-1.914 1.161 0 1.721.738 1.721 1.914v1.656z"/></svg></a> <a href="https://github.com/project-hop/" title="Collaborate on GitHub" target="_blank"><svg class="brand-icon" width="30" height="30" viewBox="0 0 30 30"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg></a> </div> <button class="navbar-burger" data-target="topbar-nav" type="button"> <span></span> <span></span> <span></span> </button> </div> </nav> </header> <div class="body"> <main role="main"> <article class="static doc"> <h1>Preview Release 0.30</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p>It has been about 2 months since our latest release, and a lot has happened!</p> </div> <div class="paragraph"> <p>We&#8217;re happy to announce to availability of our 0.30 preview release. Please take it for a spin. If you find a bug, please create a <a href="https://jira.project-hop.org">bug ticket</a>, if there&#8217;s functionality you&#8217;d like to see, please create a <a href="https://jira.project-hop.org">feature request</a>.</p> </div> <div class="paragraph"> <p><strong>Direct download <a href="https://artifactory.project-hop.org/artifactory/hop-releases-local/org/hop/hop-assemblies-client/0.30/hop-assemblies-client-0.30.zip">here</a></strong></p> </div> <div class="paragraph"> <p><strong><a href="../../manual/latest/getting-started.html">Getting Started Guide</a></strong></p> </div> <div class="paragraph"> <p>Release Notes: <strong><a href="https://project-hop.atlassian.net/secure/ReleaseNote.jspa?projectId=10002&amp;version=10003">0.30</a></strong></p> </div> <div class="paragraph"> <p>Over 100 tickets have been closed in this release, here we will discuss the major changes.</p> </div> </div> </div> <div class="sect1"> <h2 id="_what_is_project_hop">What is Project Hop</h2> <div class="sectionbody"> <div class="paragraph"> <p>Project Hop&#8217;s goal is to provide an easy, flexible and metadata-driven way of data processing and data orchestration. We want you to spend as little time as possible on technical details, so you can focus on processing your data and orchestrating your pipelines.</p> </div> <div class="paragraph"> <p>We used the Kettle (Pentaho Data Integration) 8.2.0.7 code base to start building our architecture, but that was just the start of our journey as a separate platform.<br> We&#8217;ve come a long way from that starting point: a lot of the code base has been removed or changed, we&#8217;ve implemented a lot of our architecture and a lot of new functionality has been added.</p> </div> <div class="paragraph"> <p>Let&#8217;s have a look at what to expect in this release.</p> </div> </div> </div> <div class="sect1"> <h2 id="_code_cleanup_refactoring">Code Cleanup, Refactoring</h2> <div class="sectionbody"> <div class="paragraph"> <p>We have continued what we started in release 0.10 and 0.21 and are now confident to inform you all that our API should be stable. No major refactoring will be done from this point forward, small tweaks are still a possibility but our focus will now be to provide you all with a 1.0 release as soon as possible.</p> </div> </div> </div> <div class="sect1"> <h2 id="_hop_concepts">Hop Concepts</h2> <div class="sectionbody"> <div class="paragraph"> <p>After some discussion we noticed that the path we took in our previous releases was the correct path, but some additional tweaking was required.</p> </div> <div class="paragraph"> <p>The Hop Environments have been renamed and have a new purpose! We will soon update our concepts page to reflect the new structure and deepen in how it all functions.</p> </div> <div class="sect2"> <h3 id="_environments_projects_environments_and_purposes">Environments &#8594; Projects, Environments and Purposes</h3> <div class="paragraph"> <p>The environments system, introduced earlier this year, was significantly extended.</p> </div> <div class="ulist"> <ul> <li> <p>a <strong>project</strong> is a set of workflows and pipelines with their datasets, tests etc.</p> </li> <li> <p><strong>environments</strong> contain configurations for the environments you want to run a project&#8217;s workflows and pipelines. Each environment has a <strong>purpose</strong>: Development, Testing, Acceptance, Production, Continuous Integration or Common Build</p> </li> </ul> </div> <div class="paragraph"> <p>Projects and environments inherit variables and configuration from higher levels, but can can also have their own.</p> </div> <div class="paragraph"> <p>All functionality to list, create, edit and delete projects, environments and their purpose is available in the <code>hop-config</code> command line tool as well.</p> </div> <div class="paragraph"> <p><span class="image"><a class="image" href="../../img/Roundup-2020-06/hop-config.png"><img src="../../img/Roundup-2020-06/hop-config.png" alt="Hop Config" width="65%"></a></span></p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_plugins">Plugins</h2> <div class="sectionbody"> <div class="paragraph"> <p>We want to make Hop as robust and flexible as possible. We&#8217;ve done a lot of work to move Hop to a kernel-based architecture. To get there, we&#8217;ve moved all non-essential functionality out of the Hop engine and into plugins. Going forward, every single piece of functionality will be supported by the engine, but implemented as a plugin.</p> </div> <div class="paragraph"> <p>The current status of functionality that has been ported from the engine to plugins is:</p> </div> <div class="ulist"> <ul> <li> <p>Database plugins: all done</p> </li> <li> <p>Workflow actions: all done</p> </li> <li> <p>Transform actions: Around 20 remaining, but all core transforms have been done. Most of these are now being ported on request.</p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_apache_beam_support">Apache Beam Support</h2> <div class="sectionbody"> <div class="paragraph"> <p>We now have integrated support for <a href="https://beam.apache.org/">Apache Beam</a>. Beam is an advanced unified programming model that lets you implement batch and streaming data processing jobs that run on any execution engine.</p> </div> <div class="paragraph"> <p>The Beam integration comes with a number of additional transforms:</p> </div> <div class="ulist"> <ul> <li> <p><strong>BigQuery input and output</strong>: read from and write to Google BigQuery tables</p> </li> <li> <p><strong>GCP PubSub subscribe and publish</strong>: read from and write to Google Cloud PubSub</p> </li> <li> <p><strong>Kafka Consume/Produce</strong>: read from and write to Kafka streams</p> </li> <li> <p><strong>Beam Input/Output</strong>: define where Beam should read files from or write files to</p> </li> <li> <p><strong>Beam Timestamp</strong>: add timestamps to a bounded data source</p> </li> <li> <p><strong>Beam Window</strong>: create a Beam window</p> </li> </ul> </div> <div class="paragraph"> <p><span class="image"><a class="image" href="../../img/Roundup-2020-05/beam-transforms.png"><img src="../../img/Roundup-2020-05/beam-transforms.png" alt="Beam Transforms" width="65%"></a></span></p> </div> <div class="paragraph"> <p>Beam adds 4 additional pipeline run configurations:</p> </div> <div class="ulist"> <ul> <li> <p><strong>Beam DataFlow pipeline engine</strong>: run pipelines on Google DataFlow</p> </li> <li> <p><strong>Beam Direct pipeline engine</strong>: a local pipeline engine provided by the Apache Beam community as a way of testing pipelines</p> </li> <li> <p><strong>Beam Spark pipeline engine</strong>: run pipelines on Apache Spark</p> </li> <li> <p><strong>Beam Flink pipeline engine</strong>: run pipelines on Apache Flink</p> </li> </ul> </div> <div class="paragraph"> <p>The support for these 4 additional engines brings us closer to the "design once, run anywhere" goal we share with Apache Beam. With Hop&#8217;s native local and remote pipeline run configurations, we now have 6 supported engines to run your pipelines on.</p> </div> <div class="paragraph"> <p><span class="image"><a class="image" href="../../img/Roundup-2020-05/beam-runconfigurations.png"><img src="../../img/Roundup-2020-05/beam-runconfigurations.png" alt="Beam Run Configurations" width="65%"></a></span></p> </div> </div> </div> <div class="sect1"> <h2 id="_containers">Containers</h2> <div class="sectionbody"> <div class="paragraph"> <p><a href="https://twitter.com/diethardsteiner">Diethard Steiner</a>, a long time Kettle and now Hop community member and famous blogger wrotes posts about running Hop on <a href="https://diethardsteiner.github.io/hop/2020/04/27/Hop-on-Docker.html">Docker</a> and <a href="https://diethardsteiner.github.io/hop/2020/04/29/Hop-on-Kubernetes.html">Kubernetes</a>.</p> </div> <div class="paragraph"> <p>The goal of the hop-docker project is to allow Hop to run in both short and long-lived containers.</p> </div> <div class="paragraph"> <p>Diethard and other community members (<a href="https://twitter.com/hans_va">Hans</a>, <a href="https://twitter.com/blijblijblij">Rogier</a>, <a href="https://twitter.com/uweeegeee">Uwe</a>) worked together and contributed their efforts to Project Hop.</p> </div> <div class="paragraph"> <p>Check this project out:</p> </div> <div class="ulist"> <ul> <li> <p>GitHub repository: <a href="https://github.com/project-hop/hop-docker" class="bare">https://github.com/project-hop/hop-docker</a></p> </li> <li> <p>Docker Hub: <a href="https://hub.docker.com/r/projecthop/hop" class="bare">https://hub.docker.com/r/projecthop/hop</a></p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_ui">UI</h2> <div class="sectionbody"> <div class="paragraph"> <p>A new file dialog has been introduced replacing the default file system dialogs, this was done to optimally implement VFS support and to include a web based version of Hop (WebHop) in future releases.</p> </div> <div class="paragraph"> <p>We focused on implementing the core functionality first, in the next releases we will focus on User eXperience. Some of the dialogs still need a finishing touch and some cleaning up, but overall we are really pleased with the results and we hope you love the UI as much as we do.</p> </div> <div class="paragraph"> <p>For those that have not yet heard of Web Hop:</p> </div> <div class="sect2"> <h3 id="_webhop">WebHop</h3> <div class="paragraph"> <p><span class="image"><a class="image" href="../../img/Roundup-2020-06/hop-web.png"><img src="../../img/Roundup-2020-06/hop-web.png" alt="Hop Web" width="65%"></a></span></p> </div> <div class="paragraph"> <p>WebHop is the ability to open/edit and create workflows and pipelines using your browser. The code originally started as a fork created by <a href="https://twitter.com/HiromuHota">Hiromu</a>, his fork now has a branch in the Hop code base and we are working on creating a single code base to distribute both version.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_metastore_hop_metadata">Metastore &#8594; Hop Metadata</h2> <div class="sectionbody"> <div class="paragraph"> <p>While reviewing our licensing in preparation for the Apache incubation process, we found the Metastore to be LGPL-licensed.</p> </div> <div class="paragraph"> <p>This LGPL module created a licensing conflict (as is still the case in Kettle) with the rest of the (APL2.0 licensed) Hop code.</p> </div> <div class="paragraph"> <p>As we&#8217;ve gotten used to turn problems into opportunities, we decided to get rid of the Metastore entirely.</p> </div> <div class="paragraph"> <p>Exit Metastore, enter Hop Metadata, a much more lightweight and flexible serialization component for all Hop metadata objects. All Hop Metadata objects are now plugins, serialized in JSON.</p> </div> </div> </div> <div class="sect1"> <h2 id="_documentation">Documentation</h2> <div class="sectionbody"> <div class="paragraph"> <p>As stated with the previous release, our documentation is a work in progress&#8230;&#8203; Now all Transforms and Actions have documentation available in the <a href="../../manual/latest/">user manual</a>. We would like to thank the community members that took the effort to check the documentation and create tickets when noticing errors or missing documentation.</p> </div> <div class="paragraph"> <p>Now that the bulk of the API work is finished and we are comfortable with the concepts we have introduced in the past months, we can start documenting and explaining all buttons and features in Hop.</p> </div> </div> </div> <div class="sect1"> <h2 id="_future">Future</h2> <div class="sectionbody"> <div class="paragraph"> <p>With this release we are comfortable to start the Apache Incubator process, most of the licencing issues have been resolved. The code base has had it&#8217;s first big cleanup. The new core concepts and features are in place. Our focus will now be user experience, documentation and working towards a first production ready release.</p> </div> </div> </div> <div class="sect1"> <h2 id="_call_for_contributors">Call For Contributors</h2> <div class="sectionbody"> <div class="paragraph"> <p>Project Hop is a team effort, we need your help to make this a success!</p> </div> <div class="paragraph"> <p>Contributing is much more than writing code. A couple of ways you can help out are</p> </div> <div class="ulist"> <ul> <li> <p>testing and creating <a href="https://jira.project-hop.org">bug tickets</a></p> </li> <li> <p>create <a href="https://jira.project-hop.org">feature requests</a></p> </li> <li> <p>write documentation</p> </li> <li> <p>spreading the word</p> </li> </ul> </div> <div class="paragraph"> <p>Check out the <a href="../../community/contributing/">Contribution Guide</a> to find out how you can contribute.</p> </div> <div class="paragraph"> <p>Contributions in any shape or form are greatly appreciated!</p> </div> </div> </div> </article> </main> </div> <div class="edit"><a title="We would love your help &hearts;&hearts;&hearts;" href="https://github.com/apache/incubator-hop-website/edit/master/content/news/release-preview-0-30.adoc">Edit this Page</a></div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../download/">Download</a></dd> <dd><a href="../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a href="../../community/team/">Team</a></dd> </dl> <dl> <dt>About</dt> <dd><a target="_blank" href="https://www.apache.org/licenses/" title="License">License</a></dd> </dl> <p> &copy; 2019-2020 The Hop Team.<br> All marks mentioned may be trademarks or registered trademarks of their respective owners. </p> </div> </footer> <script src="../../_/js/site-09ed3b68f0.js"></script> <script src="../../_/js/vendor/highlight-d2e825a26a.js"></script> <script src="../../_/js/vendor/cookies-eu-banner-d4a1518c50.js"></script> <script> new CookiesEuBanner(function () {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
ga('send', 'pageview');
}, true, false); </script> <script src="../../_/js/vendor/docsearch-00d66d525e.min.js"></script> <script> var search = docsearch({
appId: 'IEDZCR8JT4',
apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
indexName: 'hop-doc',
inputSelector: '#search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
algoliaOptions: { hitsPerPage: 10 }
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
function focusSearchInput () { document.querySelector('#search-input').focus() }
if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script type="application/ld+json"> {
"@context": "http://schema.org",
"@type": "Organization",
"name": "Hop",
"url": "https:\/\/hop.apache.org\/"
, "sameAs": ["https://twitter.com/projhop"]
, "logo": "\/img\/hop-logo.svg"
, "description": "Hop"
} </script> <script type="application/ld+json"> {
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1 ,
"item": {
"@id": "https://hop.apache.org/",
"name": "Hop"
}
},{
"@type": "ListItem",
"position": 2 ,
"item": {
"@id": "https://hop.apache.org/news/",
"name": "news"
}
},{
"@type": "ListItem",
"position": 3 ,
"item": {
"@id": "https://hop.apache.org/news/release-preview-0-30/",
"name": "release-preview-0-30"
}
}]
} </script> </body> </html>