<!DOCTYPE html>
<html lang="en">
<head>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You 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.
-->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/bootstrap-theme.min.css" rel="stylesheet">
<link href="/css/dataTables.bootstrap.css" rel="stylesheet">
<link href="/css/pirk.css" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">

<title>Roadmap</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/jquery.dataTables.min.js"></script>
<script src="/js/dataTables.bootstrap.js"></script>
<script>
  // show location of canonical site if not currently on the canonical site
  $(function() {
    var host = window.location.host;
    if (typeof host !== 'undefined' && host !== 'pirk.incubator.apache.org') {
      $('#non-canonical').show();
    }
  });

  
  // decorate menu with currently navigated page
  $(function() {
    $("#nav_roadmap").addClass("active");
  });
  

  $(function() {
    // decorate section headers with anchors
    return $("h2, h3, h4, h5, h6").each(function(i, el) {
      var $el, icon, id;
      $el = $(el);
      id = $el.attr('id');
      icon = '<i class="fa fa-link"></i>';
      if (id) {
        return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon));
      }
    });
  });

  // configure Google Analytics
  (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','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-81114308-1', 'auto');
  ga('send', 'pageview');
  
</script>
</head>
<body style="padding-top: 100px">

  <nav class="navbar navbar-default navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
    </div>
    <div class="collapse navbar-collapse" id="navbar-items">
      <ul class="nav navbar-nav">
        <li class="nav-link"><a href="/downloads">Download</a></li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_users"><a href="/for_users">For Users</a></li>
          <li id="nav_developers"><a href="/for_developers">For Developers</a></li>
          <li id="nav_developers"><a href="/cloud_instructions">Cloud instructions</a></li>
          <li id="nav_papers"><a href="/papers">Papers &amp Presentations</a></li>
          <li class="nav_faq"><a href="/faq">FAQ</a></li>
          <li class="divider"></li>
           <li><a href="/javadocs">Javadocs</a></li>     
        </ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_getinvolvedpirk"><a href="/get_involved_pirk">Get Involved</a></li>
          <li id="nav_listspirk"><a href="/mailing_list_pirk">Mailing Lists</a></li>
          <li id="nav_peoplepirk"><a href="/people_pirk">People</a></li>
       	</ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Development<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_releasing"><a href="/how_to_contribute">How to Contribute</a></li>
          <li id="nav_releasing"><a href="/releasing">Making Releases</a></li>
          <li id="nav_nav_verify_release"><a href="/verifying_releases">Verifying Releases</a></li>
          <li id="nav_update_website"><a href="/website_updates">Website Updates</a></li>
          <hr>
          <li><a href="https://issues.apache.org/jira/browse/PIRK ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://builds.apache.org/job/pirk/">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://travis-ci.org/apache/incubator-pirk">Travis CI Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://github.com/apache/incubator-pirk"> Pirk Github Mirror <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        <li class="nav-link"><a href="/roadmap">Roadmap</a></li>
       <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        </ul>
        </ul>
    </div> 
  </div>  
</nav>


  <div class="container">
    <div class="row">
      <div class="col-md-12">
        <div id="content">
          
          <h1 class="title">Roadmap</h1>
          
          <p>The Pirk roadmap includes both implementation and algorithmic components.</p>

<h2 id="implementation-roadmap">Implementation Roadmap</h2>

<h3 id="input-adaptors">Input Adaptors</h3>
<ul>
  <li><a href="https://hbase.apache.org/">HBase</a></li>
  <li><a href="https://accumulo.apache.org/">Accumulo</a></li>
  <li><a href="http://kafka.apache.org/">Kafka</a></li>
  <li><a href="https://nifi.apache.org/">NiFi</a></li>
</ul>

<h3 id="streaming-wideskies-implementations">Streaming Wideskies Implementations</h3>
<ul>
  <li><a href="http://storm.apache.org/">Storm</a></li>
  <li><a href="https://github.com/twitter/heron">Heron</a></li>
  <li><a href="http://spark.apache.org/streaming/">Spark Streaming</a></li>
  <li><a href="https://flink.apache.org/">Flink</a></li>
</ul>

<h3 id="batch-wideskies-implementations">Batch Wideskies Implementations</h3>
<ul>
  <li><a href="https://flink.apache.org/">Flink</a></li>
</ul>

<h2 id="algorithmic-roadmap">Algorithmic Roadmap</h2>

<ul>
  <li>Secure Multi Party Computation</li>
  <li>Secure/Private PIR Analytics</li>
  <li>Fully Homomorphic Encryption</li>
</ul>

<p>Improvements to Pirk’s documentation as well as it’s build and testing environments and optimizations to existing code/algorithms are also a component of the Pirk roadmap.</p>


        </div>

        
<footer>

  <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>

  <p>Copyright © 2016-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>

</footer>


      </div>
    </div>
  </div>
</body>
</html>
