predictionio-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From don...@apache.org
Subject [1/3] predictionio git commit: [PIO-167] Document Fixes and Archiving
Date Thu, 04 Oct 2018 06:37:24 GMT
Repository: predictionio
Updated Branches:
  refs/heads/develop 02377e8dc -> 19ad05e29


[PIO-167] Document Fixes and Archiving

Closes #472


Project: http://git-wip-us.apache.org/repos/asf/predictionio/repo
Commit: http://git-wip-us.apache.org/repos/asf/predictionio/commit/6016b719
Tree: http://git-wip-us.apache.org/repos/asf/predictionio/tree/6016b719
Diff: http://git-wip-us.apache.org/repos/asf/predictionio/diff/6016b719

Branch: refs/heads/develop
Commit: 6016b719daab185552045f76a75308963280d777
Parents: fc773ac
Author: Wei Chen <weichentaiwan@gmail.com>
Authored: Thu Sep 27 11:30:10 2018 -0700
Committer: Donald Szeto <donald@apache.org>
Committed: Thu Sep 27 11:32:08 2018 -0700

----------------------------------------------------------------------
 docs/manual/data/nav/main.yml                   |   7 +-
 docs/manual/source/archived/community.html.md   | 135 ++++++
 docs/manual/source/archived/index.html.md       |  24 ++
 .../source/archived/install-linux.html.md.erb   |  96 +++++
 .../source/archived/install-vagrant.html.md.erb | 134 ++++++
 .../source/archived/supervisedlearning.html.md  |  82 ++++
 docs/manual/source/archived/tapster.html.md     | 426 +++++++++++++++++++
 docs/manual/source/community/projects.html.md   |  76 +---
 docs/manual/source/demo/community.html.md       |  64 ---
 docs/manual/source/demo/index.html.md.erb       |   8 +-
 .../source/demo/supervisedlearning.html.md      |  82 ----
 docs/manual/source/demo/tapster.html.md         | 426 -------------------
 docs/manual/source/install/index.html.md.erb    |   2 +-
 .../source/install/install-linux.html.md.erb    | 115 -----
 .../source/install/install-vagrant.html.md.erb  | 134 ------
 docs/manual/source/sdk/community.html.md        |  80 ----
 docs/manual/source/sdk/index.html.md            |   2 +-
 docs/manual/source/start/index.html.md          |   2 +-
 18 files changed, 924 insertions(+), 971 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/data/nav/main.yml
----------------------------------------------------------------------
diff --git a/docs/manual/data/nav/main.yml b/docs/manual/data/nav/main.yml
index 846fea8..9491a8a 100644
--- a/docs/manual/data/nav/main.yml
+++ b/docs/manual/data/nav/main.yml
@@ -50,7 +50,7 @@ root:
             url: '/sdk/ruby/'
           -
             body: 'Community Powered SDKs'
-            url: '/sdk/community/'
+            url: '/community/projects.html#sdks'
   -
     body: 'Deploying an Engine'
     url: '#'
@@ -280,11 +280,8 @@ root:
     url: '#'
     children:
       -
-        body: 'Comics Recommendation Demo'
-        url: '/demo/tapster/'
-      -
         body: 'Community Contributed Demo'
-        url: '/demo/community/'
+        url: '/community/projects.html#demos'
       -
         body: 'Text Classification Engine Tutorial'
         url: '/demo/textclassification/'

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/community.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/community.html.md b/docs/manual/source/archived/community.html.md
new file mode 100644
index 0000000..5800ba4
--- /dev/null
+++ b/docs/manual/source/archived/community.html.md
@@ -0,0 +1,135 @@
+---
+title: Archived Community Projects
+---
+
+## SDKs
+
+### Node.js SDK for PredictionIO
+
+URL: https://github.com/asafyish/predictionio-driver and
+https://www.npmjs.org/package/predictionio-driver
+
+Node.js PredictionIO 0.8+ client supporting both callback syntax and promise
+syntax.
+
+- Core Author: Asaf Yishai
+
+- Status: It works with PredictionIO v0.8 - Under active development
+
+### C#/.NET SDK for PredictionIO
+
+URL: https://github.com/orbyone/Sensible.PredictionIO.NET
+
+C#/.NET library for PredictionIO 0.9.4, supporting both synchronous and
+asynchronous calls, for item recommendation and item ranking algorithms. Loosely
+based on the PredictionIO Java SDK API.
+
+- Core Author: Themos Piperakis
+
+- Status: It works with PredictionIO v0.9.4 - Under active development
+
+### .NET SDK for PredictionIO
+
+URL: https://github.com/ibrahimozgon/PredictionIO-.Net-SDK
+
+.NET SDK for PredictionIO
+
+- Core Author: Ibrahim Özgön
+
+- Status: It works with PredictionIO v0.9 - Under active development
+
+
+## Installations
+
+### Vagrant Installation for Apache PredictionIO®
+
+URL: https://github.com/PredictionIO/PredictionIO-Vagrant
+
+Bring Up PredictionIO 0.9.x VM with Vagrant.
+
+- Core Author: Raphael Mäder
+
+- Status: It works with PredictionIO v0.8 - Under active development
+
+### Another Docker Installation for Apache PredictionIO®
+
+URL: https://github.com/sphereio/docker-predictionio
+
+Docker container for PredictionIO-based machine learning services.
+
+- Core Author: Fabian M. Borschel
+
+- Status: It works with PredictionIO v0.9.3 - Under active development
+
+
+## Extensions
+
+### GraphX Parallel SimRank Algorithm
+
+URL: https://github.com/ZhouYii/PIO-Parallel-Simrank-Engine
+
+Implementation of Delta-Simrank algorithm using Spark's GraphX framework.
+
+- Core Author: Joey Zhou
+
+- Status: It works with PredictionIO v0.8 - Under active development
+
+### Magento Similar Products Extension
+
+URL: https://github.com/magento-hackathon/Predictionio
+
+Similar Products is a Magento extension that utilizes PredictionIO to create a more personalized suggestion of up-sell products on the Magento product page.
+
+- Core Author: Steven Richardson, Raphael Mäder & Damian Luszczymak
+
+- Status: It works with PredictionIO v0.8 - Under active development
+
+
+## Wrappers
+
+### Lavarel Wrapper for PredictionIO
+
+URL: https://github.com/michael-hopkins/PredictionIO-Laravel-Wrapper and https://packagist.org/packages/hopkins/predictionio-laravel-wrapper
+
+A Laravel wrapper for PredictionIO v0.8.
+
+- Core Author: Bruno Cabral & Michael Hopkins
+
+- Status: It works with PredictionIO v0.8 - Under active development
+
+### Magento 2 Personalised Products Module
+
+URL: https://github.com/richdynamix/personalised-products
+
+Personalised Products is a Magento 2 module that will serve realtime predicted suggestions for product upsells on the product page and complimentary suggestions for cross sells on the basket page. All powered by PredictionIO using the [Similar Product](/gallery/template-gallery/#recommender-systems "Similar Product") engine and the [Complementary Purchase](/gallery/template-gallery/#unsupervised-learning "Complementary Purchase") engine.
+
+- Core Author: Steven Richardson
+
+- Status: It works with PredictionIO v0.9.5 - Under active development
+
+
+## Demos
+
+### NoGoodGamez
+
+<img src="/images/showcase/nogoodgamez-158x70.png" alt="NoGoodGamez" class="static" />
+
+PS3/PS4 game Recommendation built by [pashadude](https://github.com/pashadude/)
+
+URL: http://nogoodgamez.com
+
+### OnTapp
+
+<img src="/images/showcase/on-tapp-70x70.png" alt="OnTapp" class="static" />
+
+Beer recommendation app built by [Victor Leung](https://twitter.com/victorleungtw).
+
+Writeup: https://medium.com/@victorleungtw/beer-recommendation-engine-using-predictionio-36488ea0c50d
+
+### Yelpio
+
+<img src="/images/showcase/yelpio-70x70.png" alt="OnTapp" class="static" />
+
+Business Recommendation built by [TRAN QUOC HOAN](https://twitter.com/k09ht), [Inhwan Lee](https://github.com/ihlee01), and 山本直人.
+
+URL: http://yelpio.hongo.wide.ad.jp/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/index.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/index.html.md b/docs/manual/source/archived/index.html.md
new file mode 100644
index 0000000..599a744
--- /dev/null
+++ b/docs/manual/source/archived/index.html.md
@@ -0,0 +1,24 @@
+---
+title: List of Archived Pages
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+## Archived Contribution
+
+Please help to move pages here if they are no-longer maintained

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/install-linux.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/install-linux.html.md.erb b/docs/manual/source/archived/install-linux.html.md.erb
new file mode 100644
index 0000000..59106ed
--- /dev/null
+++ b/docs/manual/source/archived/install-linux.html.md.erb
@@ -0,0 +1,96 @@
+---
+title: Installing Apache PredictionIO on Linux / Mac OS X
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+Follow the steps below to setup Apache PredictionIO and its
+dependencies. In these instructions we will assume you are in your home
+directory. Wherever you see `/home/abc`, replace it with your own home
+directory.
+
+### Java
+
+Ensure you have an appropriate Java version installed. For example:
+
+```
+$ java -version
+java version "1.8.0_40"
+Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
+Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
+```
+
+
+### Download Apache PredictionIO
+
+Download Apache PredictionIO and extract it.
+
+```
+$ cd
+$ pwd
+/home/abc
+$ wget http://download.prediction.io/PredictionIO-<%= data.versions.pio %>.tar.gz
+$ tar zxvf PredictionIO-<%= data.versions.pio %>.tar.gz
+```
+
+NOTE: Download instructions above apply to previous non-Apache releases only.
+Once we have made an Apache release, new instructions will be provided.
+
+### Installing Dependencies
+
+Let us install dependencies inside a subdirectory of the Apache PredictionIO
+installation. By following this convention, you can use
+PredictionIO's default configuration as is.
+
+```
+$ mkdir PredictionIO-<%= data.versions.pio %>/vendors
+```
+
+
+#### Spark Setup
+
+<%= partial 'shared/install/spark' %>
+
+
+#### Elasticsearch Setup
+
+WARNING: You may skip this section if you are using PostgreSQL or MySQL.
+
+<%= partial 'shared/install/elasticsearch' %>
+
+
+#### HBase Setup<a class="anchor" name="hbase">&nbsp;</a>
+
+WARNING: You may skip this section if you are using PostgreSQL or MySQL.
+
+<%= partial 'shared/install/hbase' %>
+
+
+In addition, you must set your environment variable `JAVA_HOME`. For example, in
+`/home/abc/.bashrc` add the following line:
+
+```
+export JAVA_HOME=/usr/lib/jvm/java-8-oracle
+```
+
+
+<%= partial 'shared/install/dependent_services' %>
+
+Now you have installed everything you need!
+
+<%= partial 'shared/install/proceed_template' %>

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/install-vagrant.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/install-vagrant.html.md.erb b/docs/manual/source/archived/install-vagrant.html.md.erb
new file mode 100644
index 0000000..9122d56
--- /dev/null
+++ b/docs/manual/source/archived/install-vagrant.html.md.erb
@@ -0,0 +1,134 @@
+---
+title: Installing PredictionIO with Vagrant (VirtualBox)
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+WARNING: Running PredictionIO with Vagrant is intended for the purposes of
+simple tests in an isolated environment. Due to resource limitation and overhead
+of virtual machine (VM), it runs much more slowly or may encounter memory issue.
+We recommend using Linux or Mac machine for serious usage.
+
+## Install VirtualBox
+
+If you don't have VirtualBox installed, please follow the instructions in the
+[VirtualBox site](https://www.virtualbox.org/wiki/Downloads) to download and
+install it. After installation is done, you don't need to setup anything in Virtual Box. Vagrant will do it for you later.
+
+## Install Vagrant
+
+If you don't have Vagrant installed, please follow the instructions in the the
+[Vagrant site](https://www.vagrantup.com/downloads.html) to download and install
+it.
+
+## Bring up PredictoinIO VM with Vagrant
+
+Get the latest vagrant setup from github and make sure in master branch:
+
+```
+$ git clone https://github.com/PredictionIO/PredictionIO-Vagrant.git
+$ cd PredictionIO-Vagrant/
+$ git checkout master
+```
+
+Inside the directory `PredictionIO-Vagrant/`, you will find a file named `Vagrantfile` which is the configuration file used by Vagrant to setup the VM. You may modify this file if you want to change the VM configuration.
+
+For example, if you want to change the memory of the VM, you can locate the following line in the `Vagrantfile` and change the value passed to the `memory` parameter (default is 2048MB):
+
+```
+  v.customize ["modifyvm", :id, "--cpuexecutioncap", "90", "--memory", "2048"]
+```
+
+In the directory `PredictionIO-Vagrant/`, bring up PredictionIO VM by running:
+
+```
+$ vagrant up
+```
+
+INFO: When you run `vagrant up` for the first time, it will download the base
+box ubuntu/trusty64 if you don't have it. Then it will also install all
+necessary libraries and setup PredictionIO in the virtual machine.
+
+When it finishes successfully, you should see something like the following:
+
+```
+==> default: Installation done!
+==> default: --------------------------------------------------------------------------------
+==> default: Installation of PredictionIO <%= data.versions.pio %> complete!
+==> default: IMPORTANT: You still have to start PredictionIO and dependencies manually:
+==> default: Run: 'pio-start-all'
+==> default: Check the status with: 'pio status'
+==> default: Use: 'pio [train|deploy|...]' commands
+==> default: Please report any problems to: dev@predictionio.apache.org
+==> default: Documentation at: http://predictionio.apache.org
+==> default: --------------------------------------------------------------------------------
+==> default: Finish PredictionIO installation.
+```
+
+That's it! Now you have a PredictionIO VM running!
+
+Please see the following notes regarding how to use PredictionIO VM with vagrant.
+
+## Using the PredictionIO VM
+
+### Login to the VM
+
+You could ssh to the VM by running the following from your host machine in the
+same directory where you run `vagrant up` (i.e. PredictionIO-Vagrant/)
+
+```
+$ vagrant ssh
+```
+
+Then your console prompt becomes something like the following, which means you have logged into the VM:
+
+```
+vagrant@vagrant-ubuntu-trusty-64:~$
+```
+
+One you've logged into the VM, you can proceed to [Choosing an Engine Template](/start/download) or continue the QuickStart of the Engine template you have chosen.
+
+### Shutdown and bring up PredictionIO VM again
+
+When you are not using PredictionIO VM, you should shut down VM properly, by running the following **in the host machine** (not inside VM):
+
+```
+$ vagrant halt
+```
+
+WARNING: If you didn't shut down VM properly or you ran `vagrant suspend`, the
+VM may go to suspend state. HBase may not be running properly next time when
+you run `vagrant up.` In this case, you can always run `vagrant halt` to do a
+clean shutdown first before run `vagrant up` again.
+
+Then you can run `vagrant up` again later to bring up the PredicitonIO VM again.
+
+```
+$ vagrant up
+```
+
+When it's ready, you should see the following:
+
+```
+==> default: --------------------------------------------------------------------------------
+==> default: PredictionIO VM is up!
+==> default: You could run 'pio status' inside VM ('vagrant ssh' to VM first) to confirm if PredictionIO is ready.
+==> default: IMPORTANT: You still have to start the eventserver manually (inside VM):
+==> default: Run: 'pio eventserver'
+==> default: --------------------------------------------------------------------------------
+```

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/supervisedlearning.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/supervisedlearning.html.md b/docs/manual/source/archived/supervisedlearning.html.md
new file mode 100644
index 0000000..7825ed9
--- /dev/null
+++ b/docs/manual/source/archived/supervisedlearning.html.md
@@ -0,0 +1,82 @@
+---
+title: Machine Learning With PredictionIO
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+This guide is designed to give developers a brief introduction to fundamental concepts in machine learning, as well as an explanation of how these concept tie into PredictionIO's engine development platform. This particular guide will largely deal with giving some
+
+## Introduction to Supervised Learning
+
+The first question we must ask is: what is machine learning? **Machine learning** is the field of study at the intersection of computer science, engineering, mathematics, and statistics which seeks to discover or infer patterns hidden within a set of observations, which we call our data. Some examples of problems that machine learning seeks to solve are:
+
+
+
+- Predict whether a patient has breast cancer based on their mammogram results.
+- Predict whether an e-mail is spam or not based on the e-mail's content.
+- Predict today's temperature based on climate variables collected for the previous week.
+
+### Thinking About Data
+
+In the latter examples, we are trying to predict an outcome \\(Y\\), or **response**, based on some recorded or observed variables \\(X\\), or **features**. For example: in the third problem each observation is a patient, the response variable \\(Y\\) is equal to 1 if this patient has breast cancer and 0 otherwise, and \\(X\\) represents the mammogram results.
+
+When we say we want to predict \\(Y\\) using \\(X\\), we are trying to answer the question: how does a response \\(Y\\) depend on a set of features \\(X\\) affect the response \\(Y\\)? To do this we need a set of observations, which we call our **training data**, consisting of observations for which we have observed both \\(Y\\) and \\(X\\), in order to make inference about this relationship.
+
+### Different Types of Supervised Learning Problems
+
+Note that  in the first two examples, the outcome \\(Y\\) can  only take on two values (1 : cancer/spam, 0: no cancer/ no spam). Whenever the outcome variable \\(Y\\) denotes a label associated to a particular group of observations (i.e. cancer group), the **supervised learning** problem is also called a **classification** problem. In the third example, however, \\(Y\\) can take on any numerical value since it denotes some temperature reading (i.e. 25.143, 25.14233, 32.0). These types of supervised learning problems are also called **regression** problems.
+
+### Training a Predictive Model
+
+A predictive model should be thought of as a function \\(f\\) that takes as input a set of features, and outputs a predicted outcome (i.e. \\(f(X) = Y\\)). The phrase **training a model** simply refers to the process of using the training data to estimate such a function.  
+
+## PredictionIO and Supervised Learning
+
+Machine learning methods generally assume that our observation responses and features are numeric vectors. We will say that observations in this format are in **standard form**. However, when you are working with real-life data this will often not be the case. The data will often be formatted in a manner that is specific to the application's needs. As an example, let's suppose our application is [StackOverFlow](http://stackoverflow.com). The data we want to analyze are questions, and we want to predict based on a question's content whether or not it is related to Scala.
+
+
+**Self-check:**   Is this a classification or regression problem?
+
+### Thinking About Data With PredictionIO
+
+PredictionIO's predictive engine development platform allows you to easily incorporate observations that are not in standard form. Continuing with our example, we can import the observations, or StackOverFlow questions, into [PredictionIO's Event Server](/datacollection/) as events with the following properties:
+
+
+`properties = {question : String, topic : String}`
+
+The value `question` is the actual question stored as a `String`, and topic is also a string equal to either `"Scala"` or `"Other"`. Our outcome here is `topic`, and `question` will provide a source for extracting features. That is, we will be using `question` to predict the outcome `topic`.
+
+Once the observations are loaded as events into the Event Server, the engine's [Data Source](/customize/) component is able to read them,  which allows you to treat them as objects in a Scala project. The engine's Preparator component is in charge of converting these observations into standard form. To do this, we can first map the topic values as follows:
+
+
+
+`Map("Other" -> 0, "Scala" -> 1)`.
+
+
+We can then vectorize the observation's associated question text to obtain a numeric feature vector for each of our observations. This text vectorization procedure is an example of a general concept in machine learning called **feature extraction**. After performing these transformations of our observations, they are now in standard form and can be used for training a large quantity of machine learning models.
+
+### Training the Model With PredictionIO
+
+The Algorithm engine component serves two purposes: outputting a predictive model \\(f\\) and using this to predict the outcome variable. Here \\(f\\) takes as input a vectorized question and outputs either 0 or 1. However, our `Query` input will be again a question, and our `PredictedResult` the topic associated to the predicted label (0 or 1):
+
+
+`Query = {question : String}`
+`PredictedResult = {topic : String}`
+
+
+With PredictionIO's engine development platform, you can easily automate the vectorization of the Query question, as well as mapping the predicted label to the appropriate topic output format.

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/archived/tapster.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/archived/tapster.html.md b/docs/manual/source/archived/tapster.html.md
new file mode 100644
index 0000000..7d3178b
--- /dev/null
+++ b/docs/manual/source/archived/tapster.html.md
@@ -0,0 +1,426 @@
+---
+title: Comics Recommendation Demo
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+## Introduction
+
+In this demo, we will show you how to build a Tinder-style web application (named "Tapster") recommending comics to users based on their likes/dislikes of episodes interactively.
+
+The demo will use [Similar Product Template](https://predictionio.apache.org/templates/similarproduct/quickstart/). Similar Product Template is a great choice if you want to make recommendations based on immediate user activities or for new users with limited history. It uses MLLib Alternating Least Squares (ALS) recommendation algorithm, a [Collaborative filtering](http://en.wikipedia.org/wiki/Recommender_system#Collaborative_filtering) (CF) algorithm commonly used for recommender systems. These techniques aim to fill in the missing entries of a user-item association matrix. Users and products are described by a small set of latent factors that can be used to predict missing entries. A layman's interpretation of Collaborative Filtering is "People who like this comic, also like these comics."
+
+All the code and data is on GitHub at: [github.com/PredictionIO/Demo-Tapster](https://github.com/PredictionIO/Demo-Tapster).
+
+### Data
+The source of the data is from [Tapastic](http://tapastic.com/). You can find the data files [here](https://github.com/PredictionIO/Demo-Tapster/tree/master/data).
+
+The data structure looks like this:
+
+[Episode List](https://github.com/PredictionIO/Demo-Tapster/blob/master/data/episode_list.csv) `data/episode_list.csv`
+
+**Fields:** episodeId | episodeTitle | episodeCategories | episodeUrl | episodeImageUrls
+
+1,000 rows. Each row represents one episode.
+
+[User Like Event List](https://github.com/PredictionIO/Demo-Tapster/blob/master/data/user_list.csv) `data/user_list.csv`
+
+**Fields:** userId | episodeId | likedTimestamp
+
+192,587 rows. Each row represents one user like for the given episode.
+
+The tutorial has four major steps:
+
+- Demo application setup
+- PredictionIO installation and setup
+- Import data into database and PredictionIO
+- Integrate demo application with PredictionIO
+
+## Tapster Demo Application
+The demo application is built using Rails.
+
+You can clone the existing application with:
+
+```
+$ git clone  https://github.com/PredictionIO/Demo-Tapster.git
+$ cd Demo-Tapster
+$ bundle install
+```
+You will need to edit `config/database.yml` to match your local database settings. We have provided some sensible defaults for PostgreSQL, MySQL, and SQLite.
+
+Setup the database with:
+
+```
+$ rake db:create
+$ rake db:migrate
+```
+
+At this point, you should have the demo application ready but with an empty database. Lets import the episodes data into our database. We will do this with: `$ rake import:episodes`. An "Episode" is a single [comic strip](http://en.wikipedia.org/wiki/Comic_strip).
+
+[View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/lib/tasks/import/episodes.rake)
+
+This script is pretty simple. It loops through the CSV file and creates a new episode for each line in the file in our local database.
+
+You can start the app and point your browser to [http://localhost:3000](http://localhost:3000)
+
+```
+$rails server
+```
+
+![Rails Server](/images/demo/tapster/rails-server.png)
+
+## Apache PredictionIO Setup
+
+### Install Apache PredictionIO
+Follow the installation instructions [here](http://predictionio.apache.org/install/) or simply run:
+
+```
+$ bash -c "$(curl -s https://raw.githubusercontent.com/apache/predictionio/master/bin/install.sh)"
+```
+
+![PIO Install](/images/demo/tapster/pio-install.png)
+
+
+### Create a New App
+You will need to create a new app on Apache PredictionIO to house
+the Tapster demo. You can do this with:
+
+```
+$ pio app new tapster
+```
+
+Take note of the App ID and Access Key.
+
+![PIO App New](/images/demo/tapster/pio-app-new.png)
+
+### Setup Engine
+
+We are going to copy the Similar Product Template into the PIO directory.
+
+```
+$ cd PredictionIO
+$ git clone https://github.com/apache/predictionio-template-similar-product.git tapster-episode-similar
+```
+
+Next we are going to update the App ID in the ‘engine.json’ file to match the App ID we just created.
+
+```
+$ cd tapster-episode-similar
+$ nano engine.json
+$ cd ..
+```
+
+![Engine Setup](/images/demo/tapster/pio-engine-setup.png)
+
+
+### Modify  Engine Template
+
+By the default, the engine template reads the “view” events. We can easily to change it to read “like” events.
+
+<!-- For more advanced example of how-to combine view and like/dislike events in one recommender, please see the multi-events-multi-algos.html -->
+
+Modify `readTraining()` in DataSource.scala:
+
+```scala
+
+  override
+  def readTraining(sc: SparkContext): TrainingData = {
+
+    ...
+
+    val viewEventsRDD: RDD[ViewEvent] = eventsDb.find(
+      appId = dsp.appId,
+      entityType = Some("user"),
+      eventNames = Some(List("like")), // MODIFIED
+      // targetEntityType is optional field of an event.
+      targetEntityType = Some(Some("item")))(sc)
+      // eventsDb.find() returns RDD[Event]
+      .map { event =>
+        val viewEvent = try {
+          event.event match {
+            case "like" => ViewEvent( // MODIFIED
+              user = event.entityId,
+              item = event.targetEntityId.get,
+              t = event.eventTime.getMillis)
+            case _ => throw new Exception(s"Unexpected event ${event} is read.")
+          }
+        } catch {
+          case e: Exception => {
+            logger.error(s"Cannot convert ${event} to ViewEvent." +
+              s" Exception: ${e}.")
+            throw e
+          }
+        }
+        viewEvent
+      }
+
+    ...
+  }
+}
+
+```
+
+Finally to build the engine we will run:
+
+```
+$ cd tapster-episode-similar
+$ pio build
+$ cd ..
+```
+
+![PIO Build](/images/demo/tapster/pio-build.png)
+
+## Import Data
+
+Once everything is installed, start the event server by running: `$ pio eventserver`
+
+![Event Server](/images/demo/tapster/pio-eventserver.png)
+
+INFO: You can check the status of Apache PredictionIO at any time
+by running: `$ pio status`
+
+ALERT: If your laptop goes to sleep you might manually need to restart HBase with:
+
+```
+$ cd PredictionIO/venders/hbase-0.98.6/bin
+$ ./stop-hbase.sh
+$ ./start-hbase.sh
+```
+
+The key event we are importing into Apache PredictionIO event
+server is the "Like" event (for example, user X likes episode Y).
+
+We will send this data to Apache PredictionIO by executing `$ rake
+import:predictionio` command.
+
+[View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/lib/tasks/import/predictionio.rake)
+
+This script is a little more complex. First we need to connect to the Event Server.
+
+```
+client = PredictionIO::EventClient.new(ENV['PIO_ACCESS_KEY'], ENV['PIO_EVENT_SERVER_URL'], THREADS)
+```
+
+You will need to create the environmental variables `PIO_ACCESS_KEY` and `PIO_EVENT_SERVER_URL`. The default Event Server URL is: http://localhost:7070.
+
+INFO: If you forget your **Access Key** you can always run: `$ pio app list`
+
+You can set these values in the `.env` file located in the application root directory and it will be automatically loaded into your environment each time Rails is run.
+
+The next part of the script loops through each line of the `data/user_list.csv`
+file and returns an array of unique user and episode IDs. Once we have those we
+can send the data to Apache PredictionIO like this.
+
+First the users:
+
+```
+user_ids.each_with_index do |id, i|
+  # Send unique user IDs to PredictionIO.
+  client.aset_user(id)
+  puts "Sent user ID #{id} to PredictionIO. Action #{i + 1} of #{user_count}"
+end
+```
+
+And now the episodes:
+
+```
+episode_ids.each_with_index do |id, i|
+  # Load episode from database - we will need this to include the categories!
+  episode = Episode.where(episode_id: id).take
+
+  if episode
+    # Send unique episode IDs to PredictionIO.
+    client.acreate_event(
+      '$set',
+      'item',
+      id,
+      properties: { categories: episode.categories }
+    )
+    puts "Sent episode ID #{id} to PredictionIO. Action #{i + 1} of #{episode_count}"
+  else
+    puts "Episode ID #{id} not found in database! Skipping!".color(:red)
+  end
+end
+```
+
+Finally we loop through the `data/user_list.csv` file a final time to send the like events:
+
+```
+CSV.foreach(USER_LIST, headers: true) do |row|
+  user_id = row[0] # userId
+  episode_id = row[1] # episodeId
+
+  # Send like to PredictionIO.
+  client.acreate_event(
+    'like',
+    'user',
+    user_id,
+    { 'targetEntityType' => 'item', 'targetEntityId' => episode_id }
+  )
+
+  puts "Sent user ID #{user_id} liked episode ID #{episode_id} to PredictionIO. Action #{$INPUT_LINE_NUMBER} of #{line_count}."
+end
+```
+
+In total the script takes about 4 minutes to run on a basic laptop. At this
+point all the data is now imported to Apache PredictionIO.
+
+![Import](/images/demo/tapster/pio-import-predictionio.png)
+
+### Engine Training
+
+We train the engine with the following command:
+
+```
+$ cd tapster-episode-similar
+$ pio train -- --driver-memory 4g
+```
+
+![PIO Train](/images/demo/tapster/pio-train.png)
+
+Using the --driver-memory option to limit the memory used by Apache PredictionIO.
+Without this Apache PredictionIO can consume too much memory leading to a crash.
+You can adjust the 4g up or down depending on your system specs.
+
+You can set up a job to periodically retrain the engine so the model is updated with the latest dataset.
+
+
+### Deploy Model
+
+You can deploy the model with: `$ pio deploy` from the `tapster-episode-similar` directory.
+
+At this point, you have an demo app with data and a Apache PredictionIO
+server with a trained model all setup. Next, we will connect the
+two so you can log the live interaction (likes) events into Apache PredictionIO
+event server and query the engine server for recommendation.
+
+
+## Connect Demo app with Apache PredictionIO
+
+### Overview
+On a high level the application keeps a record of each like and dislike. It uses jQuery to send an array of both likes and dislikes to the server on each click. The server then queries Apache PredictionIO for a similar episode which is relayed to jQuery and displayed to the user.
+
+Data flow:
+
+- The user likes an episode.
+- Tapster sends the "Like" event to Apache PredictionIO event
+  server.
+- Tapster queries Apache PredictionIO engine with all the episodes
+  the user has rated (likes and dislikes) in this session.
+- Apache PredictionIO returns 1 recommended episode.
+
+### JavaScript
+All the important code lives in `app/assets/javascripts/application.js` [View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/app/assets/javascripts/application.js)
+
+Most of this file is just handlers for click things, displaying the loading dialog and other such things.
+
+The most important function is to query the Rails server for results from Apache
+PredictionIO.
+
+```
+// Query the server for a comic based on previous likes. See episodes#query.
+queryPIO: function() {
+  var _this = this; // For closure.
+  $.ajax({
+    url: '/episodes/query',
+    type: 'POST',
+    data: {
+      likes: JSON.stringify(_this.likes),
+      dislikes: JSON.stringify(_this.dislikes),
+    }
+  }).done(function(data) {
+    _this.setComic(data);
+  });
+}
+```
+### Rails
+
+On the Rails side all the fun things happen in the episodes controller located at: `app/controllers/episodes_controller` [View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/app/controllers/episodes_controller.rb).
+
+```
+def query
+  # Create PredictionIO client.
+  client = PredictionIO::EngineClient.new(ENV['PIO_ENGINE_URL'])
+
+  # Get posted likes and dislikes.
+  likes = ActiveSupport::JSON.decode(params[:likes])
+  dislikes = ActiveSupport::JSON.decode(params[:dislikes])
+
+  if likes.empty?
+    # We can't query PredictionIO with no likes so
+    # we will return a random comic instead.
+    @episode = random_episode
+
+    render json: @episode
+    return
+  end
+
+  # Query PredictionIO.
+  # Here we black list the disliked items so they are not shown again!
+  response = client.send_query(items: likes, blackList: dislikes,  num: 1)
+
+  # With a real application you would want to do some
+  # better sanity checking of the response here!
+
+  # Get ID of response.
+  id = response['itemScores'][0]['item']
+
+  # Find episode in database.
+  @episode = Episode.where(episode_id: id).take
+
+  render json: @episode
+end
+```
+
+On the first line we make a connection to Apache PredictionIO. You
+will need to set the `PIO_ENGINE_URL`. This can be done in the `.env` file. The
+default URL is: http://localhost:8000.
+
+Next we decode the JSON sent from the browser.
+
+After that we check to see if the user has liked anything yet. If not we just return a random episode.
+
+If the user has likes then we can send that data to Apache PredictionIO event server.
+
+We also blacklist the dislikes so that they are not returned.
+
+With our response from Apache PredictionIO it’s just a matter of
+looking it up in the database and rendering that object as JSON.
+
+Once the response is sent to the browser JavaScript is used to replace the existing comic and hide the loading message.
+
+Thats it. You’re done! If Ruby is not your language of choice check out our other [SDKs](http://predictionio.apache.org/sdk/) and remember you can always interact with the Event Server though it’s native JSON API.
+
+## Links
+Source code is on GitHub at: [github.com/PredictionIO/Demo-Tapster](https://github.com/PredictionIO/Demo-Tapster)
+
+## Conclusion
+
+Love this tutorial and Apache PredictionIO? Both are open source
+(Apache 2 License). [Fork](https://github.com/PredictionIO/Demo-Tapster) this
+demo and build upon it. If you produce something cool shoot us an email and we
+will link to it from here.
+
+Found a typo? Think something should be explained better? This tutorial (and all
+our other documentation) live in the main repo
+[here](https://github.com/apache/predictionio/blob/livedoc/docs/manual/source/demo/tapster.html.md).
+Our documentation is in the `livedoc` branch. Find out how to contribute
+documentation at
+http://predictionio.apache.org/community/contribute-documentation/].
+
+We &hearts; pull requests!

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/community/projects.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/community/projects.html.md b/docs/manual/source/community/projects.html.md
index 5072fdc..971cc9c 100644
--- a/docs/manual/source/community/projects.html.md
+++ b/docs/manual/source/community/projects.html.md
@@ -20,7 +20,7 @@ limitations under the License.
 -->
 
 Here you will find great projects contributed by the Apache PredictionIO
-community. Stay tuned.
+community.
 
 INFO: If you have built a Apache PredictionIO-related project, we
 would love to showcase it to the community! Simply edit [this
@@ -29,79 +29,45 @@ and submit a pull request.
 
 ## SDKs
 
-Community-powered SDKs are [separately listed](/sdk/).
+### Swift SDK
 
-## Magento 2 Personalised Products Module
+ - Minh-Tu Le: https://github.com/minhtule/PredictionIO-Swift-SDK
 
-URL: https://github.com/richdynamix/personalised-products
 
-Personalised Products is a Magento 2 module that will serve realtime predicted suggestions for product upsells on the product page and complimentary suggestions for cross sells on the basket page. All powered by PredictionIO using the [Similar Product](/gallery/template-gallery/#recommender-systems "Similar Product") engine and the [Complementary Purchase](/gallery/template-gallery/#unsupervised-learning "Complementary Purchase") engine.
+## DEMOs
 
-- Core Author: Steven Richardson
+### Tapster iOS Demo
 
-- Status: It works with PredictionIO v0.9.5 - Under active development
+ - Minh-Tu Le: https://github.com/minhtule/Tapster-iOS-Demo
 
-## Vagrant Installation for Apache PredictionIO®
 
-URL: https://github.com/PredictionIO/PredictionIO-Vagrant
+## Template Maintainer
 
-Bring Up PredictionIO 0.9.x VM with Vagrant.
+ - Naoki Takezoe: https://github.com/takezoe/predictionio-templates-maintenance
 
-- Core Author: Raphael Mäder
 
-- Status: It works with PredictionIO v0.8 - Under active development
+## Universal Recommender
 
+ - ActionML: https://github.com/actionml/universal-recommender
 
-## Docker Installation for Apache PredictionIO®
 
-URL: https://github.com/mingfang/docker-predictionio
+## Docker Images
 
-Run PredictionIO inside Docker.
+ - Ming Fang: https://github.com/mingfang/docker-predictionio
 
-- Core Author: Ming Fang
+ - Steven Yan: https://github.com/steveny2k/docker-predictionio
 
-- Status: It works with PredictionIO v0.8 - Under active development
+ - Japan PredictionIO User Group: https://github.com/jpioug/predictionio-docker
 
+ - Inspectorio Inc: https://github.com/inspectorioinc/docker-prediction-io
 
-## Another Docker Installation for Apache PredictionIO®
 
-URL: https://github.com/sphereio/docker-predictionio
+## Archived Projects
 
-Docker container for PredictionIO-based machine learning services.
+Some community projects have not got any update for quite some time.
 
-- Core Author: Fabian M. Borschel
+These projects are listed in the [archived list](/archived/community/).
 
-- Status: It works with PredictionIO v0.9.3 - Under active development
-
-
-## Third Docker Installation for Apache PredictionIO®
-
-URL: https://github.com/steveny2k/docker-predictionio
-
-Docker container for PredictionIO-based machine learning services.
-
-- Maintainer: Steven Yan
-
-- Status: Runs latest stable version of PredictionIO v0.12.0 (as well as v0.10.0) - Under active development
-
-
-## GraphX Parallel SimRank Algorithm
-
-URL: https://github.com/ZhouYii/PIO-Parallel-Simrank-Engine
-
-Implementation of Delta-Simrank algorithm using Spark's GraphX framework.
-
-- Core Author: Joey Zhou
-
-- Status: It works with PredictionIO v0.8 - Under active development
-
-
-## Magento Similar Products Extension
-
-URL: https://github.com/magento-hackathon/Predictionio
-
-Similar Products is a Magento extension that utilizes PredictionIO to create a more personalized suggestion of up-sell products on the Magento product page.
-
-- Core Author: Steven Richardson, Raphael Mäder & Damian Luszczymak
-
-- Status: It works with PredictionIO v0.8 - Under active development
+If an archived project is updated, please edit [this
+page](https://github.com/apache/predictionio/blob/livedoc/docs/manual/source/community/projects.html.md)
+and submit a pull request to put your project back to this active projects list.

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/demo/community.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/demo/community.html.md b/docs/manual/source/demo/community.html.md
deleted file mode 100644
index afd2bac..0000000
--- a/docs/manual/source/demo/community.html.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: Demo Tutorials with Apache PredictionIO
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-Here is a list of demo tutorials for Apache PredictionIO.
-
-INFO: If you want to showcase your demo app here, simply edit [this
-page](https://github.com/apache/predictionio/blob/livedoc/docs/manual/source/community/showcase.html.md)
-and submit a pull request.
-
-
-## Tapster iOS Demo
-
-Similar product recommendation in an iOS Swift app built by [Minh-Tu Le](https://github.com/minhtule)
-
-URL: https://github.com/minhtule/Tapster-iOS-Demo
-
-Tutorial: https://github.com/minhtule/Tapster-iOS-Demo/blob/master/TUTORIAL.md
-
-
-## NoGoodGamez
-
-<img src="/images/showcase/nogoodgamez-158x70.png" alt="NoGoodGamez" class="static" />
-
-
-PS3/PS4 game Recommendation built by [pashadude](https://github.com/pashadude/)
-
-URL: http://nogoodgamez.com
-
-
-## OnTapp
-
-<img src="/images/showcase/on-tapp-70x70.png" alt="OnTapp" class="static" />
-
-Beer recommendation app built by [Victor Leung](https://twitter.com/victorleungtw).
-
-Writeup: https://medium.com/@victorleungtw/beer-recommendation-engine-using-predictionio-36488ea0c50d
-
-
-## Yelpio
-
-<img src="/images/showcase/yelpio-70x70.png" alt="OnTapp" class="static" />
-
-
-Business Recommendation built by [TRAN QUOC HOAN](https://twitter.com/k09ht), [Inhwan Lee](https://github.com/ihlee01), and 山本直人.
-
-URL: http://yelpio.hongo.wide.ad.jp/

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/demo/index.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/demo/index.html.md.erb b/docs/manual/source/demo/index.html.md.erb
index bb2a859..0c74dbe 100644
--- a/docs/manual/source/demo/index.html.md.erb
+++ b/docs/manual/source/demo/index.html.md.erb
@@ -21,10 +21,4 @@ limitations under the License.
 
 ## Current Demos
 
-[Tapster](/demo/tapster/) - A Tinder like Rails application using Apache
-PredictionIO.
-
-
-## Contribute
-
-Interested in writing a demo? Contact us at <%= mail_to 'dev@prediction.apache.org' %>.
+[Text Classification](/demo/textclassification/) - an official demo of Apache PredictionIO.

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/demo/supervisedlearning.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/demo/supervisedlearning.html.md b/docs/manual/source/demo/supervisedlearning.html.md
deleted file mode 100644
index 7825ed9..0000000
--- a/docs/manual/source/demo/supervisedlearning.html.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Machine Learning With PredictionIO
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-This guide is designed to give developers a brief introduction to fundamental concepts in machine learning, as well as an explanation of how these concept tie into PredictionIO's engine development platform. This particular guide will largely deal with giving some
-
-## Introduction to Supervised Learning
-
-The first question we must ask is: what is machine learning? **Machine learning** is the field of study at the intersection of computer science, engineering, mathematics, and statistics which seeks to discover or infer patterns hidden within a set of observations, which we call our data. Some examples of problems that machine learning seeks to solve are:
-
-
-
-- Predict whether a patient has breast cancer based on their mammogram results.
-- Predict whether an e-mail is spam or not based on the e-mail's content.
-- Predict today's temperature based on climate variables collected for the previous week.
-
-### Thinking About Data
-
-In the latter examples, we are trying to predict an outcome \\(Y\\), or **response**, based on some recorded or observed variables \\(X\\), or **features**. For example: in the third problem each observation is a patient, the response variable \\(Y\\) is equal to 1 if this patient has breast cancer and 0 otherwise, and \\(X\\) represents the mammogram results.
-
-When we say we want to predict \\(Y\\) using \\(X\\), we are trying to answer the question: how does a response \\(Y\\) depend on a set of features \\(X\\) affect the response \\(Y\\)? To do this we need a set of observations, which we call our **training data**, consisting of observations for which we have observed both \\(Y\\) and \\(X\\), in order to make inference about this relationship.
-
-### Different Types of Supervised Learning Problems
-
-Note that  in the first two examples, the outcome \\(Y\\) can  only take on two values (1 : cancer/spam, 0: no cancer/ no spam). Whenever the outcome variable \\(Y\\) denotes a label associated to a particular group of observations (i.e. cancer group), the **supervised learning** problem is also called a **classification** problem. In the third example, however, \\(Y\\) can take on any numerical value since it denotes some temperature reading (i.e. 25.143, 25.14233, 32.0). These types of supervised learning problems are also called **regression** problems.
-
-### Training a Predictive Model
-
-A predictive model should be thought of as a function \\(f\\) that takes as input a set of features, and outputs a predicted outcome (i.e. \\(f(X) = Y\\)). The phrase **training a model** simply refers to the process of using the training data to estimate such a function.  
-
-## PredictionIO and Supervised Learning
-
-Machine learning methods generally assume that our observation responses and features are numeric vectors. We will say that observations in this format are in **standard form**. However, when you are working with real-life data this will often not be the case. The data will often be formatted in a manner that is specific to the application's needs. As an example, let's suppose our application is [StackOverFlow](http://stackoverflow.com). The data we want to analyze are questions, and we want to predict based on a question's content whether or not it is related to Scala.
-
-
-**Self-check:**   Is this a classification or regression problem?
-
-### Thinking About Data With PredictionIO
-
-PredictionIO's predictive engine development platform allows you to easily incorporate observations that are not in standard form. Continuing with our example, we can import the observations, or StackOverFlow questions, into [PredictionIO's Event Server](/datacollection/) as events with the following properties:
-
-
-`properties = {question : String, topic : String}`
-
-The value `question` is the actual question stored as a `String`, and topic is also a string equal to either `"Scala"` or `"Other"`. Our outcome here is `topic`, and `question` will provide a source for extracting features. That is, we will be using `question` to predict the outcome `topic`.
-
-Once the observations are loaded as events into the Event Server, the engine's [Data Source](/customize/) component is able to read them,  which allows you to treat them as objects in a Scala project. The engine's Preparator component is in charge of converting these observations into standard form. To do this, we can first map the topic values as follows:
-
-
-
-`Map("Other" -> 0, "Scala" -> 1)`.
-
-
-We can then vectorize the observation's associated question text to obtain a numeric feature vector for each of our observations. This text vectorization procedure is an example of a general concept in machine learning called **feature extraction**. After performing these transformations of our observations, they are now in standard form and can be used for training a large quantity of machine learning models.
-
-### Training the Model With PredictionIO
-
-The Algorithm engine component serves two purposes: outputting a predictive model \\(f\\) and using this to predict the outcome variable. Here \\(f\\) takes as input a vectorized question and outputs either 0 or 1. However, our `Query` input will be again a question, and our `PredictedResult` the topic associated to the predicted label (0 or 1):
-
-
-`Query = {question : String}`
-`PredictedResult = {topic : String}`
-
-
-With PredictionIO's engine development platform, you can easily automate the vectorization of the Query question, as well as mapping the predicted label to the appropriate topic output format.

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/demo/tapster.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/demo/tapster.html.md b/docs/manual/source/demo/tapster.html.md
deleted file mode 100644
index 7d3178b..0000000
--- a/docs/manual/source/demo/tapster.html.md
+++ /dev/null
@@ -1,426 +0,0 @@
----
-title: Comics Recommendation Demo
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-## Introduction
-
-In this demo, we will show you how to build a Tinder-style web application (named "Tapster") recommending comics to users based on their likes/dislikes of episodes interactively.
-
-The demo will use [Similar Product Template](https://predictionio.apache.org/templates/similarproduct/quickstart/). Similar Product Template is a great choice if you want to make recommendations based on immediate user activities or for new users with limited history. It uses MLLib Alternating Least Squares (ALS) recommendation algorithm, a [Collaborative filtering](http://en.wikipedia.org/wiki/Recommender_system#Collaborative_filtering) (CF) algorithm commonly used for recommender systems. These techniques aim to fill in the missing entries of a user-item association matrix. Users and products are described by a small set of latent factors that can be used to predict missing entries. A layman's interpretation of Collaborative Filtering is "People who like this comic, also like these comics."
-
-All the code and data is on GitHub at: [github.com/PredictionIO/Demo-Tapster](https://github.com/PredictionIO/Demo-Tapster).
-
-### Data
-The source of the data is from [Tapastic](http://tapastic.com/). You can find the data files [here](https://github.com/PredictionIO/Demo-Tapster/tree/master/data).
-
-The data structure looks like this:
-
-[Episode List](https://github.com/PredictionIO/Demo-Tapster/blob/master/data/episode_list.csv) `data/episode_list.csv`
-
-**Fields:** episodeId | episodeTitle | episodeCategories | episodeUrl | episodeImageUrls
-
-1,000 rows. Each row represents one episode.
-
-[User Like Event List](https://github.com/PredictionIO/Demo-Tapster/blob/master/data/user_list.csv) `data/user_list.csv`
-
-**Fields:** userId | episodeId | likedTimestamp
-
-192,587 rows. Each row represents one user like for the given episode.
-
-The tutorial has four major steps:
-
-- Demo application setup
-- PredictionIO installation and setup
-- Import data into database and PredictionIO
-- Integrate demo application with PredictionIO
-
-## Tapster Demo Application
-The demo application is built using Rails.
-
-You can clone the existing application with:
-
-```
-$ git clone  https://github.com/PredictionIO/Demo-Tapster.git
-$ cd Demo-Tapster
-$ bundle install
-```
-You will need to edit `config/database.yml` to match your local database settings. We have provided some sensible defaults for PostgreSQL, MySQL, and SQLite.
-
-Setup the database with:
-
-```
-$ rake db:create
-$ rake db:migrate
-```
-
-At this point, you should have the demo application ready but with an empty database. Lets import the episodes data into our database. We will do this with: `$ rake import:episodes`. An "Episode" is a single [comic strip](http://en.wikipedia.org/wiki/Comic_strip).
-
-[View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/lib/tasks/import/episodes.rake)
-
-This script is pretty simple. It loops through the CSV file and creates a new episode for each line in the file in our local database.
-
-You can start the app and point your browser to [http://localhost:3000](http://localhost:3000)
-
-```
-$rails server
-```
-
-![Rails Server](/images/demo/tapster/rails-server.png)
-
-## Apache PredictionIO Setup
-
-### Install Apache PredictionIO
-Follow the installation instructions [here](http://predictionio.apache.org/install/) or simply run:
-
-```
-$ bash -c "$(curl -s https://raw.githubusercontent.com/apache/predictionio/master/bin/install.sh)"
-```
-
-![PIO Install](/images/demo/tapster/pio-install.png)
-
-
-### Create a New App
-You will need to create a new app on Apache PredictionIO to house
-the Tapster demo. You can do this with:
-
-```
-$ pio app new tapster
-```
-
-Take note of the App ID and Access Key.
-
-![PIO App New](/images/demo/tapster/pio-app-new.png)
-
-### Setup Engine
-
-We are going to copy the Similar Product Template into the PIO directory.
-
-```
-$ cd PredictionIO
-$ git clone https://github.com/apache/predictionio-template-similar-product.git tapster-episode-similar
-```
-
-Next we are going to update the App ID in the ‘engine.json’ file to match the App ID we just created.
-
-```
-$ cd tapster-episode-similar
-$ nano engine.json
-$ cd ..
-```
-
-![Engine Setup](/images/demo/tapster/pio-engine-setup.png)
-
-
-### Modify  Engine Template
-
-By the default, the engine template reads the “view” events. We can easily to change it to read “like” events.
-
-<!-- For more advanced example of how-to combine view and like/dislike events in one recommender, please see the multi-events-multi-algos.html -->
-
-Modify `readTraining()` in DataSource.scala:
-
-```scala
-
-  override
-  def readTraining(sc: SparkContext): TrainingData = {
-
-    ...
-
-    val viewEventsRDD: RDD[ViewEvent] = eventsDb.find(
-      appId = dsp.appId,
-      entityType = Some("user"),
-      eventNames = Some(List("like")), // MODIFIED
-      // targetEntityType is optional field of an event.
-      targetEntityType = Some(Some("item")))(sc)
-      // eventsDb.find() returns RDD[Event]
-      .map { event =>
-        val viewEvent = try {
-          event.event match {
-            case "like" => ViewEvent( // MODIFIED
-              user = event.entityId,
-              item = event.targetEntityId.get,
-              t = event.eventTime.getMillis)
-            case _ => throw new Exception(s"Unexpected event ${event} is read.")
-          }
-        } catch {
-          case e: Exception => {
-            logger.error(s"Cannot convert ${event} to ViewEvent." +
-              s" Exception: ${e}.")
-            throw e
-          }
-        }
-        viewEvent
-      }
-
-    ...
-  }
-}
-
-```
-
-Finally to build the engine we will run:
-
-```
-$ cd tapster-episode-similar
-$ pio build
-$ cd ..
-```
-
-![PIO Build](/images/demo/tapster/pio-build.png)
-
-## Import Data
-
-Once everything is installed, start the event server by running: `$ pio eventserver`
-
-![Event Server](/images/demo/tapster/pio-eventserver.png)
-
-INFO: You can check the status of Apache PredictionIO at any time
-by running: `$ pio status`
-
-ALERT: If your laptop goes to sleep you might manually need to restart HBase with:
-
-```
-$ cd PredictionIO/venders/hbase-0.98.6/bin
-$ ./stop-hbase.sh
-$ ./start-hbase.sh
-```
-
-The key event we are importing into Apache PredictionIO event
-server is the "Like" event (for example, user X likes episode Y).
-
-We will send this data to Apache PredictionIO by executing `$ rake
-import:predictionio` command.
-
-[View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/lib/tasks/import/predictionio.rake)
-
-This script is a little more complex. First we need to connect to the Event Server.
-
-```
-client = PredictionIO::EventClient.new(ENV['PIO_ACCESS_KEY'], ENV['PIO_EVENT_SERVER_URL'], THREADS)
-```
-
-You will need to create the environmental variables `PIO_ACCESS_KEY` and `PIO_EVENT_SERVER_URL`. The default Event Server URL is: http://localhost:7070.
-
-INFO: If you forget your **Access Key** you can always run: `$ pio app list`
-
-You can set these values in the `.env` file located in the application root directory and it will be automatically loaded into your environment each time Rails is run.
-
-The next part of the script loops through each line of the `data/user_list.csv`
-file and returns an array of unique user and episode IDs. Once we have those we
-can send the data to Apache PredictionIO like this.
-
-First the users:
-
-```
-user_ids.each_with_index do |id, i|
-  # Send unique user IDs to PredictionIO.
-  client.aset_user(id)
-  puts "Sent user ID #{id} to PredictionIO. Action #{i + 1} of #{user_count}"
-end
-```
-
-And now the episodes:
-
-```
-episode_ids.each_with_index do |id, i|
-  # Load episode from database - we will need this to include the categories!
-  episode = Episode.where(episode_id: id).take
-
-  if episode
-    # Send unique episode IDs to PredictionIO.
-    client.acreate_event(
-      '$set',
-      'item',
-      id,
-      properties: { categories: episode.categories }
-    )
-    puts "Sent episode ID #{id} to PredictionIO. Action #{i + 1} of #{episode_count}"
-  else
-    puts "Episode ID #{id} not found in database! Skipping!".color(:red)
-  end
-end
-```
-
-Finally we loop through the `data/user_list.csv` file a final time to send the like events:
-
-```
-CSV.foreach(USER_LIST, headers: true) do |row|
-  user_id = row[0] # userId
-  episode_id = row[1] # episodeId
-
-  # Send like to PredictionIO.
-  client.acreate_event(
-    'like',
-    'user',
-    user_id,
-    { 'targetEntityType' => 'item', 'targetEntityId' => episode_id }
-  )
-
-  puts "Sent user ID #{user_id} liked episode ID #{episode_id} to PredictionIO. Action #{$INPUT_LINE_NUMBER} of #{line_count}."
-end
-```
-
-In total the script takes about 4 minutes to run on a basic laptop. At this
-point all the data is now imported to Apache PredictionIO.
-
-![Import](/images/demo/tapster/pio-import-predictionio.png)
-
-### Engine Training
-
-We train the engine with the following command:
-
-```
-$ cd tapster-episode-similar
-$ pio train -- --driver-memory 4g
-```
-
-![PIO Train](/images/demo/tapster/pio-train.png)
-
-Using the --driver-memory option to limit the memory used by Apache PredictionIO.
-Without this Apache PredictionIO can consume too much memory leading to a crash.
-You can adjust the 4g up or down depending on your system specs.
-
-You can set up a job to periodically retrain the engine so the model is updated with the latest dataset.
-
-
-### Deploy Model
-
-You can deploy the model with: `$ pio deploy` from the `tapster-episode-similar` directory.
-
-At this point, you have an demo app with data and a Apache PredictionIO
-server with a trained model all setup. Next, we will connect the
-two so you can log the live interaction (likes) events into Apache PredictionIO
-event server and query the engine server for recommendation.
-
-
-## Connect Demo app with Apache PredictionIO
-
-### Overview
-On a high level the application keeps a record of each like and dislike. It uses jQuery to send an array of both likes and dislikes to the server on each click. The server then queries Apache PredictionIO for a similar episode which is relayed to jQuery and displayed to the user.
-
-Data flow:
-
-- The user likes an episode.
-- Tapster sends the "Like" event to Apache PredictionIO event
-  server.
-- Tapster queries Apache PredictionIO engine with all the episodes
-  the user has rated (likes and dislikes) in this session.
-- Apache PredictionIO returns 1 recommended episode.
-
-### JavaScript
-All the important code lives in `app/assets/javascripts/application.js` [View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/app/assets/javascripts/application.js)
-
-Most of this file is just handlers for click things, displaying the loading dialog and other such things.
-
-The most important function is to query the Rails server for results from Apache
-PredictionIO.
-
-```
-// Query the server for a comic based on previous likes. See episodes#query.
-queryPIO: function() {
-  var _this = this; // For closure.
-  $.ajax({
-    url: '/episodes/query',
-    type: 'POST',
-    data: {
-      likes: JSON.stringify(_this.likes),
-      dislikes: JSON.stringify(_this.dislikes),
-    }
-  }).done(function(data) {
-    _this.setComic(data);
-  });
-}
-```
-### Rails
-
-On the Rails side all the fun things happen in the episodes controller located at: `app/controllers/episodes_controller` [View on GitHub](https://github.com/PredictionIO/Demo-Tapster/blob/master/app/controllers/episodes_controller.rb).
-
-```
-def query
-  # Create PredictionIO client.
-  client = PredictionIO::EngineClient.new(ENV['PIO_ENGINE_URL'])
-
-  # Get posted likes and dislikes.
-  likes = ActiveSupport::JSON.decode(params[:likes])
-  dislikes = ActiveSupport::JSON.decode(params[:dislikes])
-
-  if likes.empty?
-    # We can't query PredictionIO with no likes so
-    # we will return a random comic instead.
-    @episode = random_episode
-
-    render json: @episode
-    return
-  end
-
-  # Query PredictionIO.
-  # Here we black list the disliked items so they are not shown again!
-  response = client.send_query(items: likes, blackList: dislikes,  num: 1)
-
-  # With a real application you would want to do some
-  # better sanity checking of the response here!
-
-  # Get ID of response.
-  id = response['itemScores'][0]['item']
-
-  # Find episode in database.
-  @episode = Episode.where(episode_id: id).take
-
-  render json: @episode
-end
-```
-
-On the first line we make a connection to Apache PredictionIO. You
-will need to set the `PIO_ENGINE_URL`. This can be done in the `.env` file. The
-default URL is: http://localhost:8000.
-
-Next we decode the JSON sent from the browser.
-
-After that we check to see if the user has liked anything yet. If not we just return a random episode.
-
-If the user has likes then we can send that data to Apache PredictionIO event server.
-
-We also blacklist the dislikes so that they are not returned.
-
-With our response from Apache PredictionIO it’s just a matter of
-looking it up in the database and rendering that object as JSON.
-
-Once the response is sent to the browser JavaScript is used to replace the existing comic and hide the loading message.
-
-Thats it. You’re done! If Ruby is not your language of choice check out our other [SDKs](http://predictionio.apache.org/sdk/) and remember you can always interact with the Event Server though it’s native JSON API.
-
-## Links
-Source code is on GitHub at: [github.com/PredictionIO/Demo-Tapster](https://github.com/PredictionIO/Demo-Tapster)
-
-## Conclusion
-
-Love this tutorial and Apache PredictionIO? Both are open source
-(Apache 2 License). [Fork](https://github.com/PredictionIO/Demo-Tapster) this
-demo and build upon it. If you produce something cool shoot us an email and we
-will link to it from here.
-
-Found a typo? Think something should be explained better? This tutorial (and all
-our other documentation) live in the main repo
-[here](https://github.com/apache/predictionio/blob/livedoc/docs/manual/source/demo/tapster.html.md).
-Our documentation is in the `livedoc` branch. Find out how to contribute
-documentation at
-http://predictionio.apache.org/community/contribute-documentation/].
-
-We &hearts; pull requests!

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/install/index.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/install/index.html.md.erb b/docs/manual/source/install/index.html.md.erb
index e666b69..98f5a08 100644
--- a/docs/manual/source/install/index.html.md.erb
+++ b/docs/manual/source/install/index.html.md.erb
@@ -59,7 +59,7 @@ You may also use one of the community-contributed packages to install
 Apache PredictionIO®:
 
 * [Installing Apache PredictionIO with
-  Docker](/community/projects.html#docker-installation-for-predictionio)
+  Docker](/community/projects.html#docker-images)
 
 
 [//]: # (* *(coming soon)* Installing Apache PredictionIO with Homebrew)

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/install/install-linux.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/install/install-linux.html.md.erb b/docs/manual/source/install/install-linux.html.md.erb
deleted file mode 100644
index a7eb7a6..0000000
--- a/docs/manual/source/install/install-linux.html.md.erb
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Installing Apache PredictionIO on Linux / Mac OS X
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-[//]: # (## Method 1: Quick Install)
-
-[//]: # (On Linux / Mac OS X, Apache PredictionIO can now be installed with a single command:)
-
-[//]: # (```)
-[//]: # ($ bash -c "$(curl -s https://raw.githubusercontent.com/apache/predictionio/master/bin/install.sh)")
-[//]: # (```)
-
-[//]: # (The above script will complete the installation for you.)
-
-[//]: # (<%= partial 'shared/install/proceed_template' %>)
-
-## Manual Install
-
-[//]: # (If you do not want to use the Quick Install script, you can follow the steps)
-[//]: # (below to setup Apache PredictionIO and its dependencies. In these)
-[//]: # (instructions we will assume you are in your home directory. Wherever you see)
-[//]: # (`/home/abc`, replace it with your own home directory.)
-
-Follow the steps below to setup Apache PredictionIO and its
-dependencies. In these instructions we will assume you are in your home
-directory. Wherever you see `/home/abc`, replace it with your own home
-directory.
-
-### Java
-
-Ensure you have an appropriate Java version installed. For example:
-
-```
-$ java -version
-java version "1.8.0_40"
-Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
-Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
-```
-
-
-### Download Apache PredictionIO
-
-Download Apache PredictionIO and extract it.
-
-```
-$ cd
-$ pwd
-/home/abc
-$ wget http://download.prediction.io/PredictionIO-<%= data.versions.pio %>.tar.gz
-$ tar zxvf PredictionIO-<%= data.versions.pio %>.tar.gz
-```
-
-NOTE: Download instructions above apply to previous non-Apache releases only.
-Once we have made an Apache release, new instructions will be provided.
-
-### Installing Dependencies
-
-Let us install dependencies inside a subdirectory of the Apache PredictionIO
-installation. By following this convention, you can use
-PredictionIO's default configuration as is.
-
-```
-$ mkdir PredictionIO-<%= data.versions.pio %>/vendors
-```
-
-
-#### Spark Setup
-
-<%= partial 'shared/install/spark' %>
-
-
-#### Elasticsearch Setup
-
-WARNING: You may skip this section if you are using PostgreSQL or MySQL.
-
-<%= partial 'shared/install/elasticsearch' %>
-
-
-#### HBase Setup<a class="anchor" name="hbase">&nbsp;</a>
-
-WARNING: You may skip this section if you are using PostgreSQL or MySQL.
-
-<%= partial 'shared/install/hbase' %>
-
-
-In addition, you must set your environment variable `JAVA_HOME`. For example, in
-`/home/abc/.bashrc` add the following line:
-
-```
-export JAVA_HOME=/usr/lib/jvm/java-8-oracle
-```
-
-
-<%= partial 'shared/install/dependent_services' %>
-
-Now you have installed everything you need!
-
-<%= partial 'shared/install/proceed_template' %>

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/install/install-vagrant.html.md.erb
----------------------------------------------------------------------
diff --git a/docs/manual/source/install/install-vagrant.html.md.erb b/docs/manual/source/install/install-vagrant.html.md.erb
deleted file mode 100644
index 9122d56..0000000
--- a/docs/manual/source/install/install-vagrant.html.md.erb
+++ /dev/null
@@ -1,134 +0,0 @@
----
-title: Installing PredictionIO with Vagrant (VirtualBox)
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-WARNING: Running PredictionIO with Vagrant is intended for the purposes of
-simple tests in an isolated environment. Due to resource limitation and overhead
-of virtual machine (VM), it runs much more slowly or may encounter memory issue.
-We recommend using Linux or Mac machine for serious usage.
-
-## Install VirtualBox
-
-If you don't have VirtualBox installed, please follow the instructions in the
-[VirtualBox site](https://www.virtualbox.org/wiki/Downloads) to download and
-install it. After installation is done, you don't need to setup anything in Virtual Box. Vagrant will do it for you later.
-
-## Install Vagrant
-
-If you don't have Vagrant installed, please follow the instructions in the the
-[Vagrant site](https://www.vagrantup.com/downloads.html) to download and install
-it.
-
-## Bring up PredictoinIO VM with Vagrant
-
-Get the latest vagrant setup from github and make sure in master branch:
-
-```
-$ git clone https://github.com/PredictionIO/PredictionIO-Vagrant.git
-$ cd PredictionIO-Vagrant/
-$ git checkout master
-```
-
-Inside the directory `PredictionIO-Vagrant/`, you will find a file named `Vagrantfile` which is the configuration file used by Vagrant to setup the VM. You may modify this file if you want to change the VM configuration.
-
-For example, if you want to change the memory of the VM, you can locate the following line in the `Vagrantfile` and change the value passed to the `memory` parameter (default is 2048MB):
-
-```
-  v.customize ["modifyvm", :id, "--cpuexecutioncap", "90", "--memory", "2048"]
-```
-
-In the directory `PredictionIO-Vagrant/`, bring up PredictionIO VM by running:
-
-```
-$ vagrant up
-```
-
-INFO: When you run `vagrant up` for the first time, it will download the base
-box ubuntu/trusty64 if you don't have it. Then it will also install all
-necessary libraries and setup PredictionIO in the virtual machine.
-
-When it finishes successfully, you should see something like the following:
-
-```
-==> default: Installation done!
-==> default: --------------------------------------------------------------------------------
-==> default: Installation of PredictionIO <%= data.versions.pio %> complete!
-==> default: IMPORTANT: You still have to start PredictionIO and dependencies manually:
-==> default: Run: 'pio-start-all'
-==> default: Check the status with: 'pio status'
-==> default: Use: 'pio [train|deploy|...]' commands
-==> default: Please report any problems to: dev@predictionio.apache.org
-==> default: Documentation at: http://predictionio.apache.org
-==> default: --------------------------------------------------------------------------------
-==> default: Finish PredictionIO installation.
-```
-
-That's it! Now you have a PredictionIO VM running!
-
-Please see the following notes regarding how to use PredictionIO VM with vagrant.
-
-## Using the PredictionIO VM
-
-### Login to the VM
-
-You could ssh to the VM by running the following from your host machine in the
-same directory where you run `vagrant up` (i.e. PredictionIO-Vagrant/)
-
-```
-$ vagrant ssh
-```
-
-Then your console prompt becomes something like the following, which means you have logged into the VM:
-
-```
-vagrant@vagrant-ubuntu-trusty-64:~$
-```
-
-One you've logged into the VM, you can proceed to [Choosing an Engine Template](/start/download) or continue the QuickStart of the Engine template you have chosen.
-
-### Shutdown and bring up PredictionIO VM again
-
-When you are not using PredictionIO VM, you should shut down VM properly, by running the following **in the host machine** (not inside VM):
-
-```
-$ vagrant halt
-```
-
-WARNING: If you didn't shut down VM properly or you ran `vagrant suspend`, the
-VM may go to suspend state. HBase may not be running properly next time when
-you run `vagrant up.` In this case, you can always run `vagrant halt` to do a
-clean shutdown first before run `vagrant up` again.
-
-Then you can run `vagrant up` again later to bring up the PredicitonIO VM again.
-
-```
-$ vagrant up
-```
-
-When it's ready, you should see the following:
-
-```
-==> default: --------------------------------------------------------------------------------
-==> default: PredictionIO VM is up!
-==> default: You could run 'pio status' inside VM ('vagrant ssh' to VM first) to confirm if PredictionIO is ready.
-==> default: IMPORTANT: You still have to start the eventserver manually (inside VM):
-==> default: Run: 'pio eventserver'
-==> default: --------------------------------------------------------------------------------
-```

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/sdk/community.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/sdk/community.html.md b/docs/manual/source/sdk/community.html.md
deleted file mode 100644
index d561f52..0000000
--- a/docs/manual/source/sdk/community.html.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Community Powered SDKs
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-[SDK contribution](/community/contribute-sdk) is always welcomed!
-
-## Node.js SDK for PredictionIO
-
-URL: https://github.com/asafyish/predictionio-driver and
-https://www.npmjs.org/package/predictionio-driver
-
-Node.js PredictionIO 0.8+ client supporting both callback syntax and promise
-syntax.
-
-- Core Author: Asaf Yishai
-
-- Status: It works with PredictionIO v0.8 - Under active development
-
-
-## C#/.NET SDK for PredictionIO
-
-URL: https://github.com/orbyone/Sensible.PredictionIO.NET
-
-C#/.NET library for PredictionIO 0.9.4, supporting both synchronous and
-asynchronous calls, for item recommendation and item ranking algorithms. Loosely
-based on the PredictionIO Java SDK API.
-
-- Core Author: Themos Piperakis
-
-- Status: It works with PredictionIO v0.9.4 - Under active development
-
-
-## .NET SDK for PredictionIO
-
-URL: https://github.com/ibrahimozgon/PredictionIO-.Net-SDK
-
-.NET SDK for PredictionIO
-
-- Core Author: Ibrahim Özgön
-
-- Status: It works with PredictionIO v0.9 - Under active development
-
-
-## Lavarel Wrapper for PredictionIO
-
-URL: https://github.com/michael-hopkins/PredictionIO-Laravel-Wrapper and https://packagist.org/packages/hopkins/predictionio-laravel-wrapper
-
-A Laravel wrapper for PredictionIO v0.8.
-
-- Core Author: Bruno Cabral & Michael Hopkins
-
-- Status: It works with PredictionIO v0.8 - Under active development
-
-
-## Swift SDK for PredictionIO
-
-URL: https://github.com/minhtule/PredictionIO-Swift-SDK
-
-A convenient API written in Swift, supporting iOS 7+/ OS X 10.9+ and Xcode 6.1.
-
-- Core Author: Minh-Tu Le
-
-- Status: It works with PredictionIO v0.8.3 and above - Under active development

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/sdk/index.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/sdk/index.html.md b/docs/manual/source/sdk/index.html.md
index 56424e2..aa4549c 100644
--- a/docs/manual/source/sdk/index.html.md
+++ b/docs/manual/source/sdk/index.html.md
@@ -28,4 +28,4 @@ limitations under the License.
 
 ## Community Powered SDKs
 
-See the full list [here](/sdk/community/).
+Check the community projects! [here](/community/projects.html#sdks).

http://git-wip-us.apache.org/repos/asf/predictionio/blob/6016b719/docs/manual/source/start/index.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/start/index.html.md b/docs/manual/source/start/index.html.md
index 74db00c..44b7858 100644
--- a/docs/manual/source/start/index.html.md
+++ b/docs/manual/source/start/index.html.md
@@ -49,7 +49,7 @@ Like a database server, Event Server can host multiple applications. Data are se
 Once Event Server is launched, you can send data to a specific *app_name*, identified by an Access Key, through its [Event API](/datacollection/eventapi.html) with HTTP requests or with [one of the SDKs](/sdk/).
 
 In some special case, you may want your engine to read data from another datastore instead of Event Server.
-It can be achieved by [making some modifications](#).
+It can be achieved by [making some modifications](/start/customize/).
 
 ## Engine
 


Mime
View raw message