http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-code/index.html
----------------------------------------------------------------------
diff --git a/community/contribute-code/index.html 
b/community/contribute-code/index.html
new file mode 100644
index 0000000..97adb7e
--- /dev/null
+++ b/community/contribute-code/index.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html><html><head><title>Contribute Code</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 Code"/><link 
rel="canonical" 
href="https://docs.prediction.io/community/contribute-code/"/><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.j
 s?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 hidde
 n-lg" id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Contribute 
Code</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="/cli/#engine-commands"><span>Engine Command-line 
Interface</span></a></li><li class="level-2"><a class="final" h
 ref="/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></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>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="/cli/#event-server-commands"><span>Event Server 
 >Command-line Interface</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></ul></li><li class="level-1"><a class="expandible" 
 >href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="level-2"><a 
 >cl
 ass="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="f
 inal" 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>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/"><sp
 an>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 active" 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" 
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="/resou
 rces/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="/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></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 
Code</span></li></ul></div><div id="page-title"><h1>Contribute 
Code</h1></div></div><div id="table-of-content-wrapper"><h5>On this 
page</h5><aside id="table-of-contents"><ul> <li> <a 
 href="#areas-in-need-of-help">Areas in Need of Help</a> </li> <li> <a 
href="#how-to-report-an-issue">How to Report an Issue</a> </li> <li> <a 
href="#how-to-help-resolve-existing-issues">How to Help Resolve Existing 
Issues</a> </li> <li> <a href="#how-to-add-propose-a-new-feature">How to Add / 
Propose a New Feature</a> </li> <li> <a href="#how-to-issue-a-pull-request">How 
to Issue a Pull Request</a> </li> <li> <a href="#getting-started">Getting 
Started</a> </li> <li> <a 
href="#anatomy-of-apache-predictionio-incubating-code-tree">Anatomy of Apache 
PredictionIO (incubating) Code Tree</a> </li> </ul> </aside><hr/><a 
id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/community/contribute-code.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 
Code</span></li></ul></div><div id="page-title"><h1>Contribute 
Code</h1></div></div><div class="content"><p>Thank you for your interest in 
contributing to Apache PredictionIO (incubating). Our mission is to enable 
developers to build scalable machine learning applications easily. Here is how 
you can help with the project development. If you have any question regarding 
development at anytime, please free to <a 
href="mailto:[email protected]";>subscribe</a> and 
post to the <a 
href="mailto:[email protected]";>Development 
Mailing List</a>.</p><h2 id='areas-in-need-of-help' 
class='header-anchors'>Areas in Need of Help</h2><p>We accept contributions of 
all kinds at any time. We are compiling this list to show features that are 
highly sought after by the community.</p> <ul> <li>Tests and CI</li> <li>Engine 
template, tutorials, and samples</li> <li>Client SDKs</li> <li>Buildi
 ng engines in Java (updating the Java controller API)</li> <li>Code clean up 
and refactoring</li> <li>Code and data pipeline optimization</li> <li>Developer 
experience (UX) improvement</li> </ul> <h2 id='how-to-report-an-issue' 
class='header-anchors'>How to Report an Issue</h2><p>If you wish to report an 
issue you found, you can do so on <a 
href="https://issues.apache.org/jira/browse/PIO";>Apache PredictionIO 
(incubating) JIRA</a>.</p><h2 id='how-to-help-resolve-existing-issues' 
class='header-anchors'>How to Help Resolve Existing Issues</h2><p>In general, 
bug fixes should be done the same way as new features, but critical bug fixes 
will follow a different path.</p><h2 id='how-to-add-/-propose-a-new-feature' 
class='header-anchors'>How to Add / Propose a New Feature</h2> <ol> <li>To 
propose a new feature, simply <a 
href="mailto:[email protected]";>subscribe</a> and 
post your proposal to <a 
href="mailto:[email protected]";>Apache Predictio
 nIO (incubating) Development Mailing List</a>.</li> <li>Discuss with the 
community and the core development team on what needs to be done, and lay down 
concrete plans on deliverables.</li> <li>Once solid plans are made, start 
creating tickets in the <a 
href="https://issues.apache.org/jira/browse/PIO";>issue tracker</a>.</li> 
<li>Work side by side with other developers using Apache PredictionIO 
(incubating) Development Mailing List as primary mode of communication. You 
never know if someone else has a better idea. ;)</li> </ol> <h2 
id='how-to-issue-a-pull-request' class='header-anchors'>How to Issue a Pull 
Request</h2><p>When you have finished your code, you can <a 
href="https://help.github.com/articles/creating-a-pull-request/";>create a pull 
request</a> against the <strong>develop</strong> branch.</p> <ul> <li>The title 
must contain a tag associating with an existing JIRA ticket. You must create a 
ticket so that the infrastructure can correctly track issues across Apache JIRA 
and Git
 Hub. If your ticket is <code>PIO-789</code>, your title must look something 
like <code>[PIO-789] Some short description</code>.</li> <li>Please also, in 
your commit message summary, include the JIRA ticket number similar to 
above.</li> <li>Make sure the title and description are clear and concise. For 
more details on writing a good commit message, check out <a 
href="http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html";>this
 guide</a>.</li> <li>If the change is visual, make sure to include a screenshot 
or GIF.</li> <li>Make sure it is being opened into the right branch.</li> 
<li>Make sure it has been rebased on top of that branch.</li> </ul> <div 
class="alert-message note"><p>When it is close to a release, and if there are 
major development ongoing, a release branch will be forked from the develop 
branch to stabilize the code for binary release. Please refer to the <em>git 
flow</em> methodology page for more information.</p></div><h2 
id='getting-started' class='header
 -anchors'>Getting Started</h2><p>Apache PredictionIO (incubating) relies 
heavily on the <a 
href="http://nvie.com/posts/a-successful-git-branching-model/";>git flow 
methodology</a>. Please make sure you read and understand it before you start 
your development. By default, cloning Apache PredictionIO (incubating) will put 
you in the <em>develop</em> branch, which in most cases is where all the latest 
development go to.</p><div class="alert-message note"><p>For core development, 
please follow the <a href="http://docs.scala-lang.org/style/";>Scala Style 
Guide</a>.</p></div><h3 
id='create-a-fork-of-the-apache-predictionio-(incubating)-repository' 
class='header-anchors'>Create a Fork of the Apache PredictionIO (incubating) 
Repository</h3> <ol> <li>Start by creating a GitHub account if you do not 
already have one.</li> <li>Go to <a 
href="https://github.com/PredictionIO/PredictionIO";>Apache PredictionIO 
(incubating)’s GitHub mirror</a> and fork it to your own account.</li> 
<li>Clone your fo
 rk to your local machine.</li> </ol> <p>If you need additional help, please 
refer to <a 
href="https://help.github.com/articles/fork-a-repo/";>https://help.github.com/articles/fork-a-repo/</a>.</p><h3
 id='building-apache-predictionio-(incubating)-from-source' 
class='header-anchors'>Building Apache PredictionIO (incubating) from 
Source</h3><p>After the previous section, you should have a copy of Apache 
PredictionIO (incubating) in your local machine ready to be built.</p> <ol> 
<li>Make sure you are on the <em>develop</em> branch. You can double check by 
<code>git status</code> or simply <code>git checkout develop</code>.</li> 
<li>At the root of the repository, do <code>./make-distribution.sh</code> to 
build PredictionIO.</li> </ol> <h3 id='setting-up-the-environment' 
class='header-anchors'>Setting Up the Environment</h3><p>Apache PredictionIO 
(incubating) relies on 3rd party software to perform its tasks. To set them up, 
simply follow this <a href="http://docs.prediction.io/install/ins
 tall-sourcecode/#installing-dependencies">documentation</a>.</p><h3 
id='start-hacking' class='header-anchors'>Start Hacking</h3><p>You should have 
a Apache PredictionIO (incubating) development environment by now. Happy 
hacking!</p><h2 id='anatomy-of-apache-predictionio-(incubating)-code-tree' 
class='header-anchors'>Anatomy of Apache PredictionIO (incubating) Code 
Tree</h2><p>The following describes each directory’s purpose.</p><h3 id='bin' 
class='header-anchors'>bin</h3><p>Shell scripts and any relevant components to 
go into the binary distribution. Utility shell scripts can also be included 
here.</p><h3 id='conf' class='header-anchors'>conf</h3><p>Configuration files 
that are used by both a source tree and binary distribution.</p><h3 id='core' 
class='header-anchors'>core</h3><p>Core Apache PredictionIO (incubating) code 
that provides the DASE controller API, core data structures, and workflow 
creation and management code.</p><h3 id='data' 
class='header-anchors'>data</h3><p>Apach
 e PredictionIO (incubating) Event Server, and backend-agnostic storage layer 
for event store and metadata store.</p><h3 id='docs' 
class='header-anchors'>docs</h3><p>Source code for <a 
href="http://predictionio.incubator.apache.org";>http://predictionio.incubator.apache.org</a>
 site, and any other documentation support files.</p><h3 id='engines' 
class='header-anchors'>engines</h3><p>Obsolete built-in engines. To be 
removed.</p><h3 id='examples' class='header-anchors'>examples</h3><p>Complete 
code examples showing Apache PredictionIO (incubating)&#39;s 
application.</p><h3 id='sbt' class='header-anchors'>sbt</h3><p>Embedded SBT 
(Simple Build Tool) launcher.</p><h3 id='templates' 
class='header-anchors'>templates</h3><p>Starting point of building your custom 
engine.</p><h3 id='tools' class='header-anchors'>tools</h3><p>Tools for running 
Apache PredictionIO (incubating). Contains primarily the CLI (command-line 
interface) and its supporting code, and the experimental evaluation dashboard.<
 /p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-6 col-xs-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" 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 
col-xs-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><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="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="//twitter.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-f819cf19.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-code/index.html.gz
----------------------------------------------------------------------
diff --git a/community/contribute-code/index.html.gz 
b/community/contribute-code/index.html.gz
new file mode 100644
index 0000000..0748a7d
Binary files /dev/null and b/community/contribute-code/index.html.gz differ

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-documentation/index.html
----------------------------------------------------------------------
diff --git a/community/contribute-documentation/index.html 
b/community/contribute-documentation/index.html
new file mode 100644
index 0000000..05973ca
--- /dev/null
+++ b/community/contribute-documentation/index.html
@@ -0,0 +1,60 @@
+<!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://docs.prediction.io/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.o
 rg/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-wra
 pper" 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="/cli/#engine-commands"><span>Engine Command-line 
Interface</span></a></li><l
 i class="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></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>Collecting and Analyzing Data</span></a><ul><li 
class="level-2"><a c
 lass="final" href="/datacollection/"><span>Event Server 
Overview</span></a></li><li class="level-2"><a class="final" 
href="/cli/#event-server-commands"><span>Event Server Command-line 
Interface</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></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Choosing an Algorithm(s)</sp
 an></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>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 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="le
 vel-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="/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></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>Contribute 
Documentation</h1></div></div><div id="table-of-content-wrapper"><h5>On thi
 s 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 write documentation for the next 
 >release.</p><h2 id='installing-locally' class='header-a
 nchors'>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="text-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 col-xs-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" 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">Stackov
 erflow</a></li></ul></div></div><div class="col-md-6 col-xs-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><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/apac
 he/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="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="//twitter.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-f819cf19.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-documentation/index.html.gz
----------------------------------------------------------------------
diff --git a/community/contribute-documentation/index.html.gz 
b/community/contribute-documentation/index.html.gz
new file mode 100644
index 0000000..1c1b5c1
Binary files /dev/null and b/community/contribute-documentation/index.html.gz 
differ

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-sdk/index.html
----------------------------------------------------------------------
diff --git a/community/contribute-sdk/index.html 
b/community/contribute-sdk/index.html
new file mode 100644
index 0000000..086f35d
--- /dev/null
+++ b/community/contribute-sdk/index.html
@@ -0,0 +1,130 @@
+<!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://docs.prediction.io/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 hidd
 en-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="na
 v-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="/cli/#engine-commands"><span>Engine Command-line 
 >Interface</span></a></li><li class="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></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>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="/cli/#event-server-commands"><span>Event Server 
Command-line Interface</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></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>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="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="/res
 ources/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="/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></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="table-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 recommendations from the ML Engines. Therefore, a SDK typically has 
2 corresponding clients: <co
 de>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://docs.prediction.io/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://docs.prediction.io/datacollection/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 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">"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://docs.prediction.io/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:8000/queries.jso
 n">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 col-xs-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictioni
 o" 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 
col-xs-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><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-w
 hite-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="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/><
 /a> <a href="//twitter.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-f819cf19.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/921d6861/community/contribute-sdk/index.html.gz
----------------------------------------------------------------------
diff --git a/community/contribute-sdk/index.html.gz 
b/community/contribute-sdk/index.html.gz
new file mode 100644
index 0000000..d7547df
Binary files /dev/null and b/community/contribute-sdk/index.html.gz differ

Reply via email to