http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/community/contribute-documentation/index.html
----------------------------------------------------------------------
diff --git a/community/contribute-documentation/index.html 
b/community/contribute-documentation/index.html
deleted file mode 100644
index f58b85d..0000000
--- a/community/contribute-documentation/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html><html><head><title>Contribute Documentation</title><meta 
charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Contribute Documentation"/><link 
rel="canonical" 
href="https://predictionio.incubator.apache.org/community/contribute-documentation/"/><link
 href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3a3867f7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><script
 src="
 
//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
 src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}catch(e){}</script></head><body><div id="global"><header><div 
class="container" id="header-wrapper"><div class="row"><div 
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a 
href="#"></a><a href="http://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="pill-wrapper"><a class="pill left" 
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right" 
href="//github.com/apache/incubator-predictionio/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" 
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div 
id="search-bar-row-wrapper"><div class="container-fluid" 
id="search-bar-row"><div class="row"><div class="col-md-9 col-sm
 -11 col-xs-11"><div class="hidden-md hidden-lg" 
id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Contribute 
Documentation</h4></div><h4 class="hidden-sm hidden-xs">PredictionIO 
Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 hidden-md hidden-lg"><img 
id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div 
class="mobile-left-menu-toggler hidden-md 
hidden-lg"></div></div></div></div><div id="page" class="container-fluid"><div 
class="row"><div id
 ="left-menu-wrapper" class="col-md-3"><nav id="nav-main"><ul><li 
class="level-1"><a class="expandible" href="/"><span>Apache PredictionIO 
(incubating) Documentation</span></a><ul><li class="level-2"><a class="final" 
href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li class="level-2"><a class="final" 
href="/start/customize/"><span>Customizing the 
Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Integratin
 g with Your App</span></a><ul><li class="level-2"><a class="final" 
href="/appintegration/"><span>App Integration Overview</span></a></li><li 
class="level-2"><a class="expandible" href="/sdk/"><span>List of 
SDKs</span></a><ul><li class="level-3"><a class="final" 
href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web 
Service</span></a></li><li class="level-2"><a class="final" 
href="/batchpredict/"><span>Batch Predictions</span></a></li><li cl
 ass="level-2"><a class="final" href="/deploy/monitoring/"><span>Monitoring 
Engine</span></a></li><li class="level-2"><a class="final" 
href="/deploy/engineparams/"><span>Setting Engine Parameters</span></a></li><li 
class="level-2"><a class="final" href="/deploy/enginevariants/"><span>Deploying 
Multiple Engine Variants</span></a></li><li class="level-2"><a class="final" 
href="/deploy/plugin/"><span>Engine Server Plugin</span></a></li></ul></li><li 
class="level-1"><a class="expandible" href="#"><span>Customizing an 
Engine</span></a><ul><li class="level-2"><a class="final" 
href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a 
class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li 
class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a clas
 s="expandible" href="#"><span>Collecting and Analyzing Data</span></a><ul><li 
class="level-2"><a class="final" href="/datacollection/"><span>Event Server 
Overview</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventapi/"><span>Collecting Data with 
REST/SDKs</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
Webhooks</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/channel/"><span>Channel</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/batchimport/"><span>Importing Data in 
Batch</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/analytics/"><span>Using Analytics 
Tools</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/plugin/"><span>Event Server 
Plugin</span></a></li></ul></li><li cla
 ss="level-1"><a class="expandible" href="#"><span>Choosing an 
Algorithm(s)</span></a><ul><li class="level-2"><a class="final" 
href="/algorithm/"><span>Built-in Algorithm Libraries</span></a></li><li 
class="level-2"><a class="final" href="/algorithm/switch/"><span>Switching to 
Another Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a class="final"
  href="/evaluation/metricchoose/"><span>Choosing Evaluation 
Metrics</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>PredictionIO Official 
Templates</span></a><ul><li class="level-2"><a class="final" 
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a 
class="expandible" href="#"><span>Recommendation</span></a><ul><li 
class="level-3"><a class="final" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/dase/"><span>DASE
 </span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/evaluation/"><span>Evaluation 
Explained</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/recommendation/reading-custom-events/"><span>Read Custom 
Events</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-data-prep/"><span>Customize Data 
Preparator</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-serving/"><span>Customize 
Serving</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/training-with-implicit-preference/"><span>Train 
with Implicit Preference</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended 
Items by Blacklist in Query</span></a></li><li class="level-3"><a class="final" 
hre
 f="/templates/recommendation/batch-evaluator/"><span>Batch Persistable 
Evaluator</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>E-Commerce Recommendation</span></a><ul><li class="level-3"><a 
class="final" href="/templates/ecommercerecommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
 class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train 
with Rate Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust 
Score</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>Similar Product</span></a><ul><li class="level-3"><a 
class="final" href="/templates/similarproduct/quicks
 tart/"><span>Quick Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple 
Events and Multiple Algorithms</span></a></li><li class="level-3"><a 
class="final" 
href="/templates/similarproduct/return-item-properties/"><span>Returns Item 
Properties</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate 
Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events 
for Users</span></a></li><li class="level-3"><a class="final" 
href="/templates/similarproduct/recommended-user/"><span>Recommend 
Users</span></a></li></ul></li><li class="level-2"><a class="expandible" h
 ref="#"><span>Classification</span></a><ul><li class="level-3"><a 
class="final" href="/templates/classification/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/classification/add-algorithm/"><span>Use Alternative 
Algorithm</span></a></li><li class="level-3"><a class="final" 
href="/templates/classification/reading-custom-properties/"><span>Read Custom 
Properties</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
class="level-2"><a class="final" 
href="/gallery/template-gallery/"><span>Browse</span></a></li><li 
class="level-2"><a class="final" 
href="/community/submit-template/"><span>Submit your Engine as a 
Template</span></a></li></ul></li><li clas
 s="level-1"><a class="expandible" href="#"><span>Demo 
Tutorials</span></a><ul><li class="level-2"><a class="final" 
href="/demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li 
class="level-2"><a class="final" href="/demo/community/"><span>Community 
Contributed Demo</span></a></li><li class="level-2"><a class="final" 
href="/demo/textclassification/"><span>Text Classification Engine 
Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a 
class="final" href="/community/contribute-code/"><span>Contribute 
Code</span></a></li><li class="level-2"><a class="final active" 
href="/community/contribute-documentation/"><span>Contribute 
Documentation</span></a></li><li class="level-2"><a class="final" 
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-webhook/"><span>Contribute a Webhook</span></a></li
 ><li class="level-2"><a class="final" 
 >href="/community/projects/"><span>Community 
 >Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" 
 >href="#"><span>Getting Help</span></a><ul><li class="level-2"><a 
 >class="final" href="/resources/faq/"><span>FAQs</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/support/"><span>Support</span></a></li></ul></li><li 
 >class="level-1"><a class="expandible" 
 >href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
 >href="/cli/"><span>Command-line Interface</span></a></li><li 
 >class="level-2"><a class="final" href="/resources/release/"><span>Release 
 >Cadence</span></a></li><li class="level-2"><a class="final" 
 >href="/resources/intellij/"><span>Developing Engines with IntelliJ 
 >IDEA</span></a></li><li class="level-2"><a class="final" 
 >href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/resources/glossary/"><span>Glossary</span></a></li></ul></li><li cla
 ss="level-1"><a class="expandible" href="#"><span>Apache Software 
Foundation</span></a><ul><li class="level-2"><a class="final" 
href="https://www.apache.org/";><span>Apache Homepage</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/licenses/";><span>License</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/foundation/sponsorship.html";><span>Sponsorship</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/foundation/thanks.html";><span>Thanks</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/security/";><span>Security</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="/community/">Getting Involved</a><span 
class="spacer">&gt;</span></li><li><span class="last">Contribute 
Documentation</span></li></ul></div><div id="page-title"><h1>Con
 tribute Documentation</h1></div></div><div 
id="table-of-content-wrapper"><h5>On this page</h5><aside 
id="table-of-contents"><ul> <li> <a href="#how-to-write-documentation">How to 
Write Documentation</a> </li> <li> <a href="#branching">Branching</a> </li> 
<li> <a href="#installing-locally">Installing Locally</a> </li> <li> <a 
href="#starting-the-server">Starting the Server</a> </li> <li> <a 
href="#building-the-site">Building the Site</a> </li> <li> <a 
href="#styleguide">Styleguide</a> </li> <li> <a 
href="#important-files">Important Files</a> </li> <li> <a 
href="#going-live">Going Live</a> </li> <li> <a 
href="#checking-the-site">Checking the Site</a> </li> <li> <a 
href="#license">License</a> </li> </ul> </aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/community/contribute-documentation.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-
 xs"><div id="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="/community/">Getting Involved</a><span 
class="spacer">&gt;</span></li><li><span class="last">Contribute 
Documentation</span></li></ul></div><div id="page-title"><h1>Contribute 
Documentation</h1></div></div><div class="content"> <h2 
id='how-to-write-documentation' class='header-anchors'>How to Write 
Documentation</h2><p>You can help improve the Apache PredictionIO (incubating) 
documentation by submitting tutorials, writing how-tos, fixing errors, and 
adding missing information. You can edit any page live on <a 
href="https://github.com/apache/incubator-predictionio";>GitHub</a> by clicking 
the pencil icon on any page or open a <a 
href="https://help.github.com/articles/creating-a-pull-request/";>Pull 
Request</a>.</p><h2 id='branching' class='header-anchors'>Branching</h2><p>Use 
the <code>livedoc</code> branch if you want to update the current 
documentation.</p><p>Use the <code>develop</code> branch if you want to writ
 e documentation for the next release.</p><h2 id='installing-locally' 
class='header-anchors'>Installing Locally</h2><p>Apache PredictionIO 
(incubating) documentation uses <a 
href="http://middlemanapp.com/";>Middleman</a> and is hosted on Apache.</p><p><a 
href="http://rubygems.org/";>Gems</a> are managed with <a 
href="http://bundler.io/";>Bundler</a>. Front end code with <a 
href="http://bower.io/";>Bower</a>.</p><p>Requires <a 
href="https://www.ruby-lang.org/en/";>Ruby</a> 2.1 or greater. We recommend <a 
href="http://rvm.io/";>RVM</a> or <a 
href="https://github.com/sstephenson/rbenv";>rbenv</a>.</p><div 
class="alert-message warning"><p><strong>OS X</strong> users you will need to 
install <a href="https://developer.apple.com/xcode/downloads/";>Xcode Command 
Line Tools</a> with: <code>$ xcode-select --install</code> 
first.</p></div><p>You can install everything with the following 
commands:</p><div class="highlight shell"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="t
 ext-align: right"><pre class="lineno">1
-2
-3
-4
-5</pre></td><td class="code"><pre><span class="gp">$ </span><span 
class="nb">cd </span>docs/manual
-<span class="gp">$ </span>gem install bundler
-<span class="gp">$ </span>bundle install
-<span class="gp">$ </span>npm install -g bower
-<span class="gp">$ </span>bower install
-</pre></td></tr></tbody></table> </div> <h2 id='starting-the-server' 
class='header-anchors'>Starting the Server</h2><p>Start the server 
with:</p><div class="highlight shell"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre 
class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ 
</span>bundle <span class="nb">exec </span>middleman server
-</pre></td></tr></tbody></table> </div> <p>This will start the local web 
server at <a href="http://localhost:4567/";>localhost:4567</a>.</p><h2 
id='building-the-site' class='header-anchors'>Building the Site</h2><p>Build 
the site with:</p><div class="highlight shell"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre 
class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ 
</span>bundle <span class="nb">exec </span>middleman build
-</pre></td></tr></tbody></table> </div> <h2 id='styleguide' 
class='header-anchors'>Styleguide</h2><p>Please follow this styleguide for any 
documentation contributions.</p><h3 id='text' 
class='header-anchors'>Text</h3><p>View our <a href="/samples/">Sample 
Typography</a> page for all posible styles.</p><h3 id='headings' 
class='header-anchors'>Headings</h3><p>The main heading <code>h1</code> is 
derived from the title data attribute:</p><div class="highlight shell"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1
-2
-3</pre></td><td class="code"><pre>---
-title: Page Title
----
-</pre></td></tr></tbody></table> </div> <p>Start other headings with 
<code>h2</code>. Prefer the <code>## Heading</code> format in Markdown.</p><h3 
id='links' class='header-anchors'>Links</h3><p>Internal links:</p> <ul> 
<li>Should start with / (relative to root).</li> <li>Should end with / (S3 
requirement).</li> <li>Should <strong>not</strong> end with .html.</li> </ul> 
<p>Following these rules helps keep everything consistent and allows our 
version parser to correctly version links. Middleman is configured for 
directory indexes. Linking to a file in <code>sources/samples/index.html</code> 
should be done with <code>[Title](/sample/)</code>.</p><div class="highlight 
markdown"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6</pre></td><td class="code"><pre><span class="p">[</span><span 
class="nv">Good</span><span class="p">](</span><span 
class="sx">/path/to/page/</span><span class="p">)</span>
-
-<span class="p">[</span><span class="nv">Bad</span><span 
class="p">](</span><span class="sx">../page</span><span class="p">)</span> Not 
relative to root!
-<span class="p">[</span><span class="nv">Bad</span><span 
class="p">](</span><span class="sx">page.html</span><span class="p">)</span> Do 
not use the .html extension!
-<span class="p">[</span><span class="nv">Bad</span><span 
class="p">](</span><span class="sx">/path/to/page</span><span 
class="p">)</span> Does not end with a /.
-
-</pre></td></tr></tbody></table> </div> <h3 id='images' 
class='header-anchors'>Images</h3><p>Images should be exactly 900px wide. <a 
href="https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonfh";>Chrome
 Window Resizer</a> is an excellent extension for browser resizing.</p><div 
class="alert-message warning"><p><strong>OS X</strong> users please <a 
href="http://www.idownloadblog.com/2014/08/03/how-to-remove-the-shadow-window-screenshots-on-mac-os-x/";>Disable
 Shadows</a> before taking a screenshot.</p></div><p>Images should only show 
the relevant tab/terminal. Hide any additional toolbars.</p><p>Images will 
<strong>automatically scale</strong> by default. If you want an image to remain 
a set size you can use a raw HTML tag like this:</p><div class="highlight 
shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1</pre></td><td 
class="code"><pre>&lt;img <span class="nv">src</span><span cla
 ss="o">=</span><span class="s2">"/images/path/to/image.png"</span> <span 
class="nv">alt</span><span class="o">=</span><span class="s2">"Image"</span> 
<span class="nv">class</span><span class="o">=</span><span 
class="s2">"static"</span> /&gt;
-</pre></td></tr></tbody></table> </div> <h3 id='code-blocks' 
class='header-anchors'>Code Blocks</h3><p>Fenced code blocks are created using 
the <code>&#96;&#96;&#96;language</code> format.</p><p>A example of each 
language is available on our <a href="/samples/languages">Language Samples</a> 
page.</p><h3 id='code-tabs' class='header-anchors'>Code Tabs</h3><p>Code tabs 
use the following HTML format:</p><div class="highlight html"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1
-2
-3
-4
-5
-6
-7
-8</pre></td><td class="code"><pre><span class="nt">&lt;div</span> <span 
class="na">class=</span><span class="s">"tabs"</span><span 
class="nt">&gt;</span>
-  <span class="nt">&lt;div</span> <span class="na">data-tab=</span><span 
class="s">"Tab Title"</span> <span class="na">data-lang=</span><span 
class="s">"language"</span><span class="nt">&gt;</span>
-    Markdown, code blocks, or HTML is OK inside a tab.
-  <span class="nt">&lt;/div&gt;</span>
-  <span class="nt">&lt;div</span> <span class="na">data-tab=</span><span 
class="s">"Second Tab"</span> <span class="na">data-lang=</span><span 
class="s">"optional"</span><span class="nt">&gt;</span>
-    ...
-  <span class="nt">&lt;/div&gt;</span>
-<span class="nt">&lt;/div&gt;</span>
-</pre></td></tr></tbody></table> </div> <p>You can see an example of this on 
our <a href="/samples/tabs/">Tab Samples</a> page.</p><h3 id='seo' 
class='header-anchors'>SEO</h3><p>You can hide a page from the 
<code>sitemap.xml</code> file by setting the pages <a 
href="http://middlemanapp.com/basics/frontmatter/";>Frontmater</a> like 
this:</p><div class="highlight markdown"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre 
class="lineno">1
-2
-3
-4</pre></td><td class="code"><pre><span class="nn">---</span>
-<span class="s">title</span><span class="pi">:</span> <span class="s">Secret 
Page</span>
-<span class="s">hidden</span><span class="pi">:</span> <span 
class="s">true</span>
-<span class="nn">---</span>
-</pre></td></tr></tbody></table> </div> <h2 id='important-files' 
class='header-anchors'>Important Files</h2> <table><thead> <tr> 
<th>Description</th> <th>File</th> </tr> </thead><tbody> <tr> <td>Left side 
navigation.</td> <td><code>data/nav/main.yml</code></td> </tr> <tr> <td>Main 
site layout.</td> <td><code>source/layouts/layout.html.slim</code></td> </tr> 
<tr> <td>Custom Markdown renderer based on <a 
href="https://github.com/vmg/redcarpet";>Redcarpet</a>.</td> 
<td><code>lib/custom_renderer.rb</code></td> </tr> <tr> <td>Custom TOC 
helper.</td> <td><code>helpers/table_of_contents_helpers.rb</code></td> </tr> 
</tbody></table> <h3 id='versions' 
class='header-anchors'>Versions</h3><p>Various site wide versions are defined 
in <code>data/versions.yml</code> and embedded with ERB like <code>&lt;%= 
data.versions.pio %&gt;</code>.</p><div class="alert-message note"><p>Files 
must end with a <code>.erb</code> extension to be processed as 
ERB.</p></div><h2 id='going-live' class='header-anchors'
 >Going Live</h2><p>Pushing to the <code>livedoc</code> branch will update <a 
 >href="http://predictionio.incubator.apache.org";>http://predictionio.incubator.apache.org</a>
 > in about 5 minutes.</p><p>You can check the progress of each build on <a 
 >href="https://builds.apache.org/";>Apache&#39;s Jenkins</a>.</p><div 
 >class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td 
 >class="gutter gl" style="text-align: right"><pre 
 >class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ 
 ></span>git push origin livedoc
-</pre></td></tr></tbody></table> </div> <h2 id='checking-the-site' 
class='header-anchors'>Checking the Site</h2><div class="alert-message 
warning"><p>The check rake task is still in <strong>beta</strong> however it is 
extremely useful for catching accidental errors.</p></div><div class="highlight 
shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2</pre></td><td class="code"><pre><span class="gp">$ </span>bundle <span 
class="nb">exec </span>middleman build
-<span class="gp">$ </span>bundle <span class="nb">exec </span>rake check
-</pre></td></tr></tbody></table> </div> <p>The <code>rake check</code> task 
parses each HTML page in the <code>build</code> folder and checks it for common 
errors including 404s.</p><h2 id='license' 
class='header-anchors'>License</h2><p>Documentation is under a <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache License Version 
2.0</a>.</p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//predictionio.incubator.apache.org/install/" 
target="blank">Download</a></li><li><a 
href="//predictionio.incubator.apache.org/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictionio" 
target="blank">GitHub</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" t
 arget="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache.org/community/contribute-code/" 
target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-predictionio" target="blank">Source 
Code</a></li><li><a href="//issues.apache.org/jira/browse/PIO" 
target="blank">Bug Tracker</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div><div class="row"><div class="col-md-12 
footer-link-column"><a class="pull-right" 
href="http://incubator.apache.org/projects/predictionio.html";><img alt="Apache 
Incubator" src="/images/logos/apache_incubator-6954bd16.png"/></a><span>Apache 
PredictionIO is an effort undergoing incubation at The Apache Software 
Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of 
all newly acce
 pted projects until a further review indicates that the infrastructure, 
communications, and decision making process have stabilized in a manner 
consistent with other successful ASF projects. While incubation status is not 
necessarily a reflection of the completeness or stability of the code, it does 
indicate that the project has yet to be fully endorsed by the 
ASF.</span></div></div></div><div id="footer-bottom"><div 
class="container"><div class="row"><div class="col-md-12"><div 
id="footer-logo-wrapper"><img alt="PredictionIO" 
src="/images/logos/logo-white-d1e9c6e6.png"/></div><div 
id="social-icons-wrapper"><a class="github-button" 
href="https://github.com/apache/incubator-predictionio"; data-style="mega" 
data-count-href="/apache/incubator-predictionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
apache/incubator-predictionio on GitHub">Star</a> <a class="github-button" 
href="https:/
 /github.com/apache/incubator-predictionio/fork" data-icon="octicon-git-branch" 
data-style="mega" data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-predictionio#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
apache/incubator-predictionio on GitHub">Fork</a> <script id="github-bjs" 
async="" defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="https://twitter.com/predictionio"; target="blank"><img alt="PredictionIO 
on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="https://www.facebook.com/predictionio"; target="blank"><img 
alt="PredictionIO on Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
-(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
-e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
-})(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
-
-_st('install','HaUfpXXV87xoB_zzCQ45');</script><script 
src="/javascripts/application-3058a372.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/community/contribute-documentation/index.html.gz
----------------------------------------------------------------------
diff --git a/community/contribute-documentation/index.html.gz 
b/community/contribute-documentation/index.html.gz
deleted file mode 100644
index 1318a47..0000000
Binary files a/community/contribute-documentation/index.html.gz and /dev/null 
differ

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/community/contribute-sdk/index.html
----------------------------------------------------------------------
diff --git a/community/contribute-sdk/index.html 
b/community/contribute-sdk/index.html
deleted file mode 100644
index 74943e3..0000000
--- a/community/contribute-sdk/index.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html><html><head><title>Contribute a SDK</title><meta 
charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Contribute a SDK"/><link 
rel="canonical" 
href="https://predictionio.incubator.apache.org/community/contribute-sdk/"/><link
 href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3a3867f7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><script
 src="//cdn.mathjax.org/mathjax/
 latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script 
src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}catch(e){}</script></head><body><div id="global"><header><div 
class="container" id="header-wrapper"><div class="row"><div 
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a 
href="#"></a><a href="http://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="pill-wrapper"><a class="pill left" 
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right" 
href="//github.com/apache/incubator-predictionio/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" 
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div 
id="search-bar-row-wrapper"><div class="container-fluid" 
id="search-bar-row"><div class="row"><div class="col-md-9 col-sm-11 
col-xs-11"><div class=
 "hidden-md hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO 
Docs</p><h4>Contribute a SDK</h4></div><h4 class="hidden-sm 
hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 
hidden-md hidden-lg"><img id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div 
class="mobile-left-menu-toggler hidden-md 
hidden-lg"></div></div></div></div><div id="page" class="container-fluid"><div 
class="row"><div id="left-menu-wrapper" class="col-md
 -3"><nav id="nav-main"><ul><li class="level-1"><a class="expandible" 
href="/"><span>Apache PredictionIO (incubating) Documentation</span></a><ul><li 
class="level-2"><a class="final" href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li class="level-2"><a class="final" 
href="/start/customize/"><span>Customizing the 
Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Integrating with Your App</span></a><ul><li 
 class="level-2"><a class="final" href="/appintegration/"><span>App Integration 
Overview</span></a></li><li class="level-2"><a class="expandible" 
href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a 
class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web 
Service</span></a></li><li class="level-2"><a class="final" 
href="/batchpredict/"><span>Batch Predictions</span></a></li><li 
class="level-2"><a class="final" hre
 f="/deploy/monitoring/"><span>Monitoring Engine</span></a></li><li 
class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting 
Engine Parameters</span></a></li><li class="level-2"><a class="final" 
href="/deploy/enginevariants/"><span>Deploying Multiple Engine 
Variants</span></a></li><li class="level-2"><a class="final" 
href="/deploy/plugin/"><span>Engine Server Plugin</span></a></li></ul></li><li 
class="level-1"><a class="expandible" href="#"><span>Customizing an 
Engine</span></a><ul><li class="level-2"><a class="final" 
href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a 
class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li 
class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Coll
 ecting and Analyzing Data</span></a><ul><li class="level-2"><a class="final" 
href="/datacollection/"><span>Event Server Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/eventapi/"><span>Collecting Data with 
REST/SDKs</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
Webhooks</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/channel/"><span>Channel</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/batchimport/"><span>Importing Data in 
Batch</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/analytics/"><span>Using Analytics 
Tools</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/plugin/"><span>Event Server 
Plugin</span></a></li></ul></li><li class="level-1"><a class="expandible"
  href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="level-2"><a 
class="final" href="/algorithm/"><span>Built-in Algorithm 
Libraries</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/switch/"><span>Switching to Another 
Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricchoose/">
 <span>Choosing Evaluation Metrics</span></a></li><li class="level-2"><a 
class="final" href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>PredictionIO Official 
Templates</span></a><ul><li class="level-2"><a class="final" 
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a 
class="expandible" href="#"><span>Recommendation</span></a><ul><li 
class="level-3"><a class="final" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/dase/"><span>DASE</span></a></li><li 
class="level-3
 "><a class="final" 
href="/templates/recommendation/evaluation/"><span>Evaluation 
Explained</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/recommendation/reading-custom-events/"><span>Read Custom 
Events</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-data-prep/"><span>Customize Data 
Preparator</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/customize-serving/"><span>Customize 
Serving</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/training-with-implicit-preference/"><span>Train 
with Implicit Preference</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended 
Items by Blacklist in Query</span></a></li><li class="level-3"><a class="final" 
href="/templates/recommendation/batch
 -evaluator/"><span>Batch Persistable Evaluator</span></a></li></ul></li><li 
class="level-2"><a class="expandible" href="#"><span>E-Commerce 
Recommendation</span></a><ul><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li 
class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
 class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train 
with Rate Event</span></a></li><li class="level-3"><a class="final" 
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust 
Score</span></a></li></ul></li><li class="level-2"><a class="expandible" 
href="#"><span>Similar Product</span></a><ul><li class="level-3"><a 
class="final" href="/templates/similarproduct/quickstart/"><span>Quick 
Start</span></a
 ></li><li class="level-3"><a class="final" 
 >href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li 
 >class="level-3"><a class="final" 
 >href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li 
 >class="level-3"><a class="final" 
 >href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple 
 >Events and Multiple Algorithms</span></a></li><li class="level-3"><a 
 >class="final" 
 >href="/templates/similarproduct/return-item-properties/"><span>Returns Item 
 >Properties</span></a></li><li class="level-3"><a class="final" 
 >href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate 
 >Event</span></a></li><li class="level-3"><a class="final" 
 >href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events 
 >for Users</span></a></li><li class="level-3"><a class="final" 
 >href="/templates/similarproduct/recommended-user/"><span>Recommend 
 >Users</span></a></li></ul></li><li class="level-2"><a class="expandible" 
 >href="#"><span>Classification</span
 ></a><ul><li class="level-3"><a class="final" 
 >href="/templates/classification/quickstart/"><span>Quick 
 >Start</span></a></li><li class="level-3"><a class="final" 
 >href="/templates/classification/dase/"><span>DASE</span></a></li><li 
 >class="level-3"><a class="final" 
 >href="/templates/classification/how-to/"><span>How-To</span></a></li><li 
 >class="level-3"><a class="final" 
 >href="/templates/classification/add-algorithm/"><span>Use Alternative 
 >Algorithm</span></a></li><li class="level-3"><a class="final" 
 >href="/templates/classification/reading-custom-properties/"><span>Read Custom 
 >Properties</span></a></li></ul></li></ul></li><li class="level-1"><a 
 >class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
 >class="level-2"><a class="final" 
 >href="/gallery/template-gallery/"><span>Browse</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/community/submit-template/"><span>Submit your Engine as a 
 >Template</span></a></li></ul></li><li class="level-1"><a class="expandible" 
 href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a 
class="final" href="/demo/tapster/"><span>Comics Recommendation 
Demo</span></a></li><li class="level-2"><a class="final" 
href="/demo/community/"><span>Community Contributed Demo</span></a></li><li 
class="level-2"><a class="final" href="/demo/textclassification/"><span>Text 
Classification Engine Tutorial</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="/community/"><span>Getting Involved</span></a><ul><li 
class="level-2"><a class="final" 
href="/community/contribute-code/"><span>Contribute Code</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-documentation/"><span>Contribute 
Documentation</span></a></li><li class="level-2"><a class="final active" 
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-webhook/"><span>Contribute a 
Webhook</span></a></li><li class="level-2"><a class="fin
 al" href="/community/projects/"><span>Community 
Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final" 
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>Support</span></a></li></ul></li><li 
class="level-1"><a class="expandible" 
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
href="/cli/"><span>Command-line Interface</span></a></li><li class="level-2"><a 
class="final" href="/resources/release/"><span>Release 
Cadence</span></a></li><li class="level-2"><a class="final" 
href="/resources/intellij/"><span>Developing Engines with IntelliJ 
IDEA</span></a></li><li class="level-2"><a class="final" 
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
class="level-2"><a class="final" 
href="/resources/glossary/"><span>Glossary</span></a></li></ul></li><li 
class="level-1"><a class="expandible"
  href="#"><span>Apache Software Foundation</span></a><ul><li 
class="level-2"><a class="final" href="https://www.apache.org/";><span>Apache 
Homepage</span></a></li><li class="level-2"><a class="final" 
href="https://www.apache.org/licenses/";><span>License</span></a></li><li 
class="level-2"><a class="final" 
href="https://www.apache.org/foundation/sponsorship.html";><span>Sponsorship</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/foundation/thanks.html";><span>Thanks</span></a></li><li
 class="level-2"><a class="final" 
href="https://www.apache.org/security/";><span>Security</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="/community/">Getting Involved</a><span 
class="spacer">&gt;</span></li><li><span class="last">Contribute a 
SDK</span></li></ul></div><div id="page-title"><h1>Contribute a 
SDK</h1></div></div><div id="tab
 le-of-content-wrapper"><h5>On this page</h5><aside id="table-of-contents"><ul> 
<li> <a href="#event-client">Event Client</a> </li> <li> <a 
href="#engine-client">Engine Client</a> </li> <li> <a 
href="#testing-your-sdk">Testing Your SDK</a> </li> </ul> </aside><hr/><a 
id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/community/contribute-sdk.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div id="breadcrumbs" 
class="hidden-sm hidden xs"><ul><li><a href="/community/">Getting 
Involved</a><span class="spacer">&gt;</span></li><li><span 
class="last">Contribute a SDK</span></li></ul></div><div 
id="page-title"><h1>Contribute a SDK</h1></div></div><div class="content"> <p>A 
SDK should provide convenient methods for client applications to easily record 
users&#39; behaviors in Apache PredictionIO (incubating)&#39;s Event Server and 
also query recommendati
 ons from the ML Engines. Therefore, a SDK typically has 2 corresponding 
clients: <code>Event Client</code> and <code>Engine Client</code>.</p><p>The 
following guideline bases on the REST API provided by Apache PredictionIO 
(incubating)&#39;s Event Client which details can be found <a 
href="http://predictionio.incubator.apache.org/datacollection/eventapi/";>here</a>.</p><h2
 id='event-client' class='header-anchors'>Event Client</h2><p>Because the Event 
Server has only 1 connection point, the <code>Event Client</code> needs to 
implement this core request first. The core request has the following 
rules.</p> <ul> <li><p><strong>URL</strong>: <code>&lt;base 
URL&gt;/events.json?accessKey=&lt;your access key&gt;</code> (e.g. <a 
href="http://localhost:7070/events.json?accessKey=1234567890";>http://localhost:7070/events.json?accessKey=1234567890</a>)</p></li>
 <li><p><strong>Request</strong>: <code>POST</code> + JSON data. Please refer 
to the <a href="http://predictionio.incubator.apache.org/dat
 acollection/eventapi/">Event Creation API</a> for the details on the fields of 
the JSON data object.</p></li> <li><p><strong>Response</strong>:</p> <ul> 
<li><strong>Success</strong>: status code <code>201</code> with a JSON result 
containing the <code>eventId</code>.</li> <li><strong>Failure</strong>: a JSON 
result containing a <code>message</code> field describing the error. <ul> 
<li>Status code <code>401</code>: invalid access key.</li> <li>Status code 
<code>400</code>: fail to parse the JSON request e.g. missing required fields 
like <code>event</code>, or invalid <code>eventTime</code> format.</li> 
</ul></li> </ul></li> </ul> <p>Other convenient methods are just shortcut. They 
could simply build the event&#39;s parameters and call the core request. 
<code>Event Client</code> should support the following 7 shorthand 
operations:</p> <ul> <li><p><strong>User entities</strong></p> <ul> 
<li><p><strong>Sets properties of a user</strong>: with the JSON object</p><div 
class="highlight jso
 n"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$set"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;user_ID&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"properties"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;properties&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> <li><p><strong>Unsets some 
properties of a user</strong>: with the JSON object</p><div class="highlight 
json"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$unset"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;user_ID&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"properties"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;properties&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> <li><p><strong>Delete a 
user</strong>: with the JSON object</p><div class="highlight json"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1
-2
-3
-4
-5</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$delete"</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;user_ID&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> </ul></li> 
<li><p><strong>Item entities</strong></p> <ul> <li><p><strong>Sets properties 
of an item</strong>: with the JSON object</p><div class="highlight json"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1
-2
-3
-4
-5
-6</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$set"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"item"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;item_ID&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"properties"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;properties&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> <li><p><strong>Unsets some 
properties of an item</strong>: with the JSON object</p><div class="highlight 
json"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$unset"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"item"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;item_ID&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"properties"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;properties&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> <li><p><strong>Delete an 
item</strong>: with the JSON object</p><div class="highlight json"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1
-2
-3
-4
-5</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"$delete"</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"item"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;item_ID&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> </ul></li> 
<li><p><strong>Others</strong></p> <ul> <li><p><strong>Record a user&#39;s 
action on some item</strong>: with the JSON object</p><div class="highlight 
json"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6
-7
-8</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"event"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;event_name&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"entityType"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"user"</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"entityId"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;user_ID&gt;</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"targetEntityType"</span><span 
class="p">:</span><span class="w"> </span><span class="s2">"item"</span><span 
class="p">,</span><span class="w">
-    </span><span class="s2">"targetEntityId"</span><span 
class="p">:</span><span class="w"> </span><span 
class="err">&lt;item_ID&gt;</span><span class="p">,</span><span class="w">
-    </span><span class="s2">"properties"</span><span class="p">:</span><span 
class="w"> </span><span class="err">&lt;properties&gt;</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> </ul></li> </ul> <p>Again, 
please refer to the <a 
href="http://predictionio.incubator.apache.org/datacollection/eventapi/";>API 
documentation</a> for explanations on the reversed events like 
<code>$set</code>, <code>$unset</code> or <code>$delete</code>.</p><div 
class="alert-message info"><p>The <code>eventTime</code> is optional but it is 
recommended that the client application should include time in the request. 
Therefore, it is best that the <code>Event Client</code> includes the time 
field if missing, before sending the event to the server.</p></div><h2 
id='engine-client' class='header-anchors'>Engine Client</h2><p><code>Engine 
Client</code>&#39;s main job is to retrieve recommendation or prediction 
results from Apache PredictionIO (incubating)&#39;s Engines. It has only a few 
rules on the request and response type.</p> <ul> <li><p><strong>URL</strong>: 
<code>&lt;base URL&gt;/queries.json</code> (e.g. <a href="http://localhost:8
 000/queries.json">http://localhost:8000/queries.json</a>)</p></li> 
<li><p><strong>Request</strong>: <code>POST</code> + JSON data. For 
example,</p><div class="highlight json"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre 
class="lineno">1
-2
-3
-4</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"user"</span><span class="p">:</span><span 
class="w"> </span><span class="mi">1</span><span class="p">,</span><span 
class="w">
-    </span><span class="s2">"num"</span><span class="p">:</span><span 
class="w"> </span><span class="mi">4</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> 
<li><p><strong>Response</strong>:</p> <ul> <li><p><strong>Success</strong>: 
status code <code>200</code> with a JSON result object. For example,</p><div 
class="highlight json"><table style="border-spacing: 0"><tbody><tr><td 
class="gutter gl" style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13</pre></td><td class="code"><pre><span class="p">{</span><span class="w">
-    </span><span class="s2">"itemScores"</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w">
-        </span><span class="p">{</span><span class="w">
-            </span><span class="s2">"item"</span><span class="p">:</span><span 
class="w"> </span><span class="mi">39</span><span class="p">,</span><span 
class="w">
-            </span><span class="s2">"score"</span><span 
class="p">:</span><span class="w"> </span><span 
class="s2">"6.177719297832409"</span><span class="w">
-        </span><span class="p">},</span><span class="w">
-        </span><span class="p">{</span><span class="w">
-            </span><span class="s2">"item"</span><span class="p">:</span><span 
class="w"> </span><span class="mi">79</span><span class="p">,</span><span 
class="w">
-            </span><span class="s2">"score"</span><span 
class="p">:</span><span class="w"> </span><span 
class="s2">"5.931687319083594"</span><span class="w">
-        </span><span class="p">},</span><span class="w">
-        </span><span class="err">...</span><span class="w">
-    </span><span class="p">]</span><span class="w">
-</span><span class="p">}</span><span class="w">
-</span></pre></td></tr></tbody></table> </div></li> 
<li><p><strong>Failure</strong>: status code <code>400</code> e.g. fail to 
parse the query.</p></li> </ul></li> </ul> <p>The formats of JSON objects in 
both the request and response must be defined by the Apache PredictionIO 
(incubating)&#39;s Engine and are different across applications. The above 
examples are taken from the Recommendation Engine template in which the query 
and prediction results are defined as following.</p><div class="highlight 
scala"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1
-2
-3
-4
-5
-6
-7
-8</pre></td><td class="code"><pre><span class="k">case</span> <span 
class="k">class</span> <span class="nc">Query</span><span class="o">(</span>
-  <span class="n">user</span><span class="k">:</span> <span 
class="kt">String</span><span class="o">,</span>
-  <span class="n">num</span><span class="k">:</span> <span 
class="kt">Int</span>
-<span class="o">)</span> <span class="k">extends</span> <span 
class="nc">Serializable</span>
-
-<span class="k">case</span> <span class="k">class</span> <span 
class="nc">PredictedResult</span><span class="o">(</span>
-  <span class="n">itemScores</span><span class="k">:</span> <span 
class="kt">Array</span><span class="o">[</span><span 
class="kt">ItemScore</span><span class="o">]</span>
-<span class="o">)</span> <span class="k">extends</span> <span 
class="nc">Serializable</span>
-</pre></td></tr></tbody></table> </div> <h2 id='testing-your-sdk' 
class='header-anchors'>Testing Your SDK</h2><p>You can set up a local host 
Apache PredictionIO (incubating) environment to test your SDK. However, it is 
hard to set it up online to test your SDK automatically using services like 
Travis CI. In that case, you should consider using these lightweight <a 
href="https://github.com/minhtule/PredictionIO-Mock-Server";>mock servers</a>. 
Please see the instructions in the repo how to use it. It takes less than 5 
minutes!</p><p>That&#39;s it! We are looking forward to see your 
SDK!</p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//predictionio.incubator.apache.org/install/" 
target="blank">Download</a></li><li><a 
href="//predictionio.incubator.apache.org/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/
 incubator-predictionio" target="blank">GitHub</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache.org/community/contribute-code/" 
target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-predictionio" target="blank">Source 
Code</a></li><li><a href="//issues.apache.org/jira/browse/PIO" 
target="blank">Bug Tracker</a></li><li><a 
href="mailto:[email protected]"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div><div class="row"><div class="col-md-12 
footer-link-column"><a class="pull-right" 
href="http://incubator.apache.org/projects/predictionio.html";><img alt="Apache 
 Incubator" src="/images/logos/apache_incubator-6954bd16.png"/></a><span>Apache 
PredictionIO is an effort undergoing incubation at The Apache Software 
Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of 
all newly accepted projects until a further review indicates that the 
infrastructure, communications, and decision making process have stabilized in 
a manner consistent with other successful ASF projects. While incubation status 
is not necessarily a reflection of the completeness or stability of the code, 
it does indicate that the project has yet to be fully endorsed by the 
ASF.</span></div></div></div><div id="footer-bottom"><div 
class="container"><div class="row"><div class="col-md-12"><div 
id="footer-logo-wrapper"><img alt="PredictionIO" 
src="/images/logos/logo-white-d1e9c6e6.png"/></div><div 
id="social-icons-wrapper"><a class="github-button" 
href="https://github.com/apache/incubator-predictionio"; data-style="mega" 
data-count-href="/apache/incubator-predi
 ctionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
apache/incubator-predictionio on GitHub">Star</a> <a class="github-button" 
href="https://github.com/apache/incubator-predictionio/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-predictionio#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
apache/incubator-predictionio on GitHub">Fork</a> <script id="github-bjs" 
async="" defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="https://twitter.com/predictionio"; target="blank"><img alt="PredictionIO 
on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="https://www.facebook.com/predictionio"; target="blank"><img 
alt="PredictionIO on Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div
 ><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
-(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
-e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
-})(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
-
-_st('install','HaUfpXXV87xoB_zzCQ45');</script><script 
src="/javascripts/application-3058a372.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/2e6db646/community/contribute-sdk/index.html.gz
----------------------------------------------------------------------
diff --git a/community/contribute-sdk/index.html.gz 
b/community/contribute-sdk/index.html.gz
deleted file mode 100644
index 744d436..0000000
Binary files a/community/contribute-sdk/index.html.gz and /dev/null differ

Reply via email to