

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Apache Submarine Release 0.4.0</title>
    <meta name="description" content="">
    <meta name="author" content="The Apache Software Foundation">

    <!-- Enable responsive viewport -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link href="/assets/themes/submarine/bootstrap/css/bootstrap.css" rel="stylesheet">
    <link href="/assets/themes/submarine/css/style.css?body=1" rel="stylesheet" type="text/css">
    <link href="/assets/themes/submarine/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" /> 
    <!-- Le fav and touch icons -->
    <!-- Update these with your own images
    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
    -->
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/themes/submarine/img/favicon/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/themes/submarine/img/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/themes/submarine/img/favicon/favicon-16x16.png">
    <link rel="icon" type="image/png" href="/assets/themes/submarine/img/favicon/favicon.ico">
    <link rel="manifest" href="/assets/themes/submarine/img/favicon/manifest.json">
    <link rel="mask-icon" href="/assets/themes/submarine/img/favicon/safari-pinned-tab.svg" color="#438bc9">
    <meta name="theme-color" content="#ffffff">

    <!-- Js -->
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
    <script src="/assets/themes/submarine/bootstrap/js/bootstrap.min.js"></script>
    <script src="/assets/themes/submarine/js/docs.js"></script>
    <script src="/assets/themes/submarine/js/anchor.min.js"></script>
    <script src="/assets/themes/submarine/js/moment.min.js"></script>
    <script src="/assets/themes/submarine/js/helium.controller.js"></script>
    <script src="/assets/themes/submarine/js/medium.controller.js"></script>

    <!-- atom & rss feed -->
    <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
    <link href="/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
  </head>

  <body>
    
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="/">
        <img src="/assets/themes/submarine/img/submarine_white_logo.png" style="margin-top: -6px;" width="80" alt="I'm submarine">
        <span style="margin-left: 0px;"> Apache Submarine </span>
        <!-- <span style="margin-left: 4px; font-size: 16px; font-family: Arial;">0.4.0</span> -->
      </a>
    </div>

    <nav class="navbar-collapse collapse" role="navigation">
      <ul class="nav navbar-nav navbar-right">
        <!-- Quick Start -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Quick Start<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/yarn">Submarine on YARN</a></li>
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/k8s">Submarine on K8s</a></li>
          </ul>
        </li>

        <!-- Download -->
        <li><a href="/download.html">Download</a></li>

        <!-- Docs -->
        <li><a href="https://github.com/apache/submarine/tree/master/docs">Docs</a></li>

        <!-- GitHub -->
        <li>
          <a href="https://github.com/apache/submarine">GitHub</a>
        </li>

        <!-- Community -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="/community/contributors.html">Contributors</a></li>
            <li><a href="/community/member.html">Member</a></li>
          </ul>
        </li>

        <!-- Apache -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html">Apache Software Foundation</a></li>
            <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="/assets.html">Assets</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
          </ul>
        </li>
      </ul>
    </nav>
  </div>
</div>




    <div class="content">
      

<!--<div class="hero-unit Apache Submarine Release 0.4.0">
  <h1></h1>
</div>
-->

<div class="row">
  <div class="col-md-12">
    <!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<h2>Apache Submarine Release 0.4.0</h2>

<p>The Apache Submarine Community is pleased to announce the availability of the 0.4.0 release.</p>

<p>The community put significant effort into improving Apache Submarine since the last release.
175 patches for improvements and bug fixes. The highlighted features are as follows:</p>

<ul>
<li>Submarine Experiments: Refactor the Job to experiment and redefined the experiment spec</li>
<li>Submarine Helm Charts: Provides one command to install the submarine into the Kubernetes cluster</li>
<li>PySubmarine: Submarine Python SDK</li>
</ul>

<p>We encourage to <a href="../../download.html">download</a> the latest release. Feedback through the <a href="../../community/contributors.html#mailing-list">mailing lists</a> is very welcome.</p>

<p><br />
You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&version=12346621">issue tracker</a> for full list of issues that are resolved.</p>

<p><br /></p>

  </div>
</div>


    </div>

    


    
    <footer>
      <!-- <p>&copy; 2020 The Apache Software Foundation</p>-->
    </footer>
  </body>
</html>

