You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@predictionio.apache.org by do...@apache.org on 2017/10/26 05:38:05 UTC

[01/13] incubator-predictionio-sdk-ruby git commit: Enable create event in batch

Repository: incubator-predictionio-sdk-ruby
Updated Branches:
  refs/heads/master 131f9491d -> a81a509b2


Enable create event in batch

Closes #20


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/92ba576f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/92ba576f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/92ba576f

Branch: refs/heads/master
Commit: 92ba576f539039cd500710df8364fde8b282ae7d
Parents: 131f949
Author: Khairul Fahmi <ky...@gmail.com>
Authored: Mon Jun 5 13:16:47 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 13:16:47 2017 -0700

----------------------------------------------------------------------
 lib/predictionio/event_client.rb | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/92ba576f/lib/predictionio/event_client.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/event_client.rb b/lib/predictionio/event_client.rb
index f024db9..2fda24e 100644
--- a/lib/predictionio/event_client.rb
+++ b/lib/predictionio/event_client.rb
@@ -120,6 +120,19 @@ module PredictionIO
       ))
     end
 
+    # :category: Asynchronous Methods
+    # Asynchronously request to create a batch of event and return a
+    # PredictionIO::AsyncResponse object immediately.
+    #
+    # Corresponding REST API method: POST /batch/events.json
+    #
+    # See also #acreate_event.
+    def acreate_batch_event(payload)
+      @http.apost(PredictionIO::AsyncRequest.new(
+        "/batch/events.json?accessKey=#{@access_key}", payload.to_json
+      ))
+    end
+
     # :category: Synchronous Methods
     # Synchronously request to create an event and block until a response is
     # received.
@@ -133,6 +146,19 @@ module PredictionIO
       sync_events(:acreate_event, *args)
     end
 
+    # :category: Synchronous Methods
+    # Synchronously request to create an event and block until a response is
+    # received.
+    #
+    # See also #acreate_event.
+    #
+    # call-seq:
+    # create_batch_event(payload)
+    # create_batch_event(async_response)
+    def create_batch_event(payload)
+      sync_events(:acreate_batch_event, payload)
+    end
+
     # :category: Asynchronous Methods
     # Asynchronously request to set properties of a user and return a
     # PredictionIO::AsyncResponse object immediately.


[10/13] incubator-predictionio-sdk-ruby git commit: Add support for Ruby 2.4

Posted by do...@apache.org.
Add support for Ruby 2.4

Closes #22


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/814e3e65
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/814e3e65
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/814e3e65

Branch: refs/heads/master
Commit: 814e3e65d0e8ae52bfd32fc59b1f6ab59661d72f
Parents: 7ea663a
Author: anothermh <an...@users.noreply.github.com>
Authored: Wed Oct 25 21:54:08 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Wed Oct 25 21:54:55 2017 -0700

----------------------------------------------------------------------
 .travis.yml          | 3 ++-
 Gemfile              | 6 +++---
 predictionio.gemspec | 2 +-
 3 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/814e3e65/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 24c6234..26971d3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,7 @@ language: ruby
 rvm:
   - 2.1.5
   - 2.2.7
-  - 2.3.4
+  - 2.3.5
+  - 2.4.2
 script:
   - rake

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/814e3e65/Gemfile
----------------------------------------------------------------------
diff --git a/Gemfile b/Gemfile
index 9bb1435..bfb4050 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,12 +2,12 @@ source 'https://rubygems.org'
 
 group :test do
   gem 'coveralls', require: false
-  gem 'rspec', '~> 3.1.0'
-  gem 'webmock', '~> 1.20.4'
+  gem 'rspec', '~> 3.6.0'
+  gem 'webmock', '~> 2.3.2'
 end
 
 group :doc do
  gem 'rdoc', '~> 4.0.0'
 end
 
-gem 'activesupport', '~> 4.2'
\ No newline at end of file
+gem 'activesupport', '~> 4.2'

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/814e3e65/predictionio.gemspec
----------------------------------------------------------------------
diff --git a/predictionio.gemspec b/predictionio.gemspec
index 4a86f4e..42a3a34 100644
--- a/predictionio.gemspec
+++ b/predictionio.gemspec
@@ -18,5 +18,5 @@ EOF
   s.platform = Gem::Platform::RUBY
   s.required_ruby_version = '>= 2.0'
   s.files = Dir[File.join('lib', '**', '**')]
-  s.add_runtime_dependency 'json', '~> 1.8'
+  s.add_runtime_dependency 'json', '>= 1.8'
 end


[09/13] incubator-predictionio-sdk-ruby git commit: [PIO-123] Add NOTICE

Posted by do...@apache.org.
[PIO-123] Add NOTICE


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/7ea663aa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/7ea663aa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/7ea663aa

Branch: refs/heads/master
Commit: 7ea663aa55e703d3255194aa207ea3e309a4bd38
Parents: 392f252
Author: Donald Szeto <do...@apache.org>
Authored: Sun Sep 17 14:01:38 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Sun Sep 17 14:01:38 2017 -0700

----------------------------------------------------------------------
 NOTICE | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/7ea663aa/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..a572cf7
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,9 @@
+Apache PredictionIO (incubating)
+Copyright 2017 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This product depends on third party software that falls under a variety of licenses.
+All dependencies with licenses other than Apache are specified in the LICENSE file.
+Please see LICENSE for additional copyright and licensing information.


[02/13] incubator-predictionio-sdk-ruby git commit: Add ability to push events to specific channels

Posted by do...@apache.org.
Add ability to push events to specific channels

* Use Ruby >=2
* Add ability to pass options with symbol keys for create event method

Closes #19


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/f71cf0e6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/f71cf0e6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/f71cf0e6

Branch: refs/heads/master
Commit: f71cf0e6682d79528fcbc4a31ae93db5d8b5f28e
Parents: 92ba576
Author: Zh Kostev <zh...@gmail.com>
Authored: Mon Jun 5 13:39:58 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 13:39:58 2017 -0700

----------------------------------------------------------------------
 .gitignore                       |  2 ++
 Gemfile                          |  4 ++-
 README.md                        | 13 ++++++++
 lib/predictionio/event_client.rb | 14 ++++++---
 lib/predictionio/version.rb      |  2 +-
 predictionio.gemspec             |  2 +-
 spec/predictionio_spec.rb        | 56 +++++++++++++++++++++++++++++++++--
 spec/spec_helper.rb              | 10 +++++++
 8 files changed, 93 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index dca2977..29abd6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
 /coverage
 /doc
+.rvmrc
+/.idea
 /pkg
 *.gem
 Gemfile.lock

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/Gemfile
----------------------------------------------------------------------
diff --git a/Gemfile b/Gemfile
index fcf42f9..9bb1435 100644
--- a/Gemfile
+++ b/Gemfile
@@ -8,4 +8,6 @@ end
 
 group :doc do
  gem 'rdoc', '~> 4.0.0'
-end
\ No newline at end of file
+end
+
+gem 'activesupport', '~> 4.2'
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 77655dd..56828ef 100644
--- a/README.md
+++ b/README.md
@@ -71,6 +71,19 @@ client.create_event(
 )
 ```
 
+### Create a $set` item event and send it to Event Server to specific channel 
+
+*NOTE:* channels are supported in PIO version >= 0.9.2 only. Channel must be created first.
+
+```ruby
+client.create_event(
+  '$set',
+  'item',
+  item_id,
+  { 'properties' => { 'categories' => ['Category 1', 'Category 2'], 'channel' => 'test-channel'} }
+)
+```
+
 ### Create a user 'rate' item event and send it to Event Server
 
 ```ruby

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/lib/predictionio/event_client.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/event_client.rb b/lib/predictionio/event_client.rb
index 2fda24e..75428e8 100644
--- a/lib/predictionio/event_client.rb
+++ b/lib/predictionio/event_client.rb
@@ -6,6 +6,7 @@
 
 require 'date'
 require "net/http"
+require 'active_support/core_ext/hash'
 
 module PredictionIO
   # This class contains methods that interface with the PredictionIO Event
@@ -110,14 +111,19 @@ module PredictionIO
     #
     # See also #create_event.
     def acreate_event(event, entity_type, entity_id, optional = {})
-      h = optional
+      h = optional.with_indifferent_access
       h.key?('eventTime') || h['eventTime'] = DateTime.now.to_s
       h['event'] = event
       h['entityType'] = entity_type
       h['entityId'] = entity_id
-      @http.apost(PredictionIO::AsyncRequest.new(
-        "/events.json?accessKey=#{@access_key}", h.to_json
-      ))
+      @http.apost(PredictionIO::AsyncRequest.new(event_path_with_main_params(h), h.except(:channel).to_json))
+    end
+
+    def event_path_with_main_params(options)
+      result = "/events.json?accessKey=#{@access_key}"
+      result += "&channel=#{options[:channel]}" if options[:channel]
+
+      result
     end
 
     # :category: Asynchronous Methods

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/lib/predictionio/version.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/version.rb b/lib/predictionio/version.rb
index cb49861..f0d9c70 100644
--- a/lib/predictionio/version.rb
+++ b/lib/predictionio/version.rb
@@ -1,3 +1,3 @@
 module PredictionIO
-  VERSION = '0.9.6'
+  VERSION = '0.9.7'
 end

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/predictionio.gemspec
----------------------------------------------------------------------
diff --git a/predictionio.gemspec b/predictionio.gemspec
index 13b651d..4a86f4e 100644
--- a/predictionio.gemspec
+++ b/predictionio.gemspec
@@ -16,7 +16,7 @@ EOF
   s.email = 'support@prediction.io'
   s.homepage = 'http://prediction.io/'
   s.platform = Gem::Platform::RUBY
-  s.required_ruby_version = '>= 1.9.3'
+  s.required_ruby_version = '>= 2.0'
   s.files = Dir[File.join('lib', '**', '**')]
   s.add_runtime_dependency 'json', '~> 1.8'
 end

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/spec/predictionio_spec.rb
----------------------------------------------------------------------
diff --git a/spec/predictionio_spec.rb b/spec/predictionio_spec.rb
index d400898..91d8704 100644
--- a/spec/predictionio_spec.rb
+++ b/spec/predictionio_spec.rb
@@ -1,16 +1,66 @@
 require 'predictionio'
 require 'spec_helper'
 
-event_client = PredictionIO::EventClient.new(1, 'http://fakeapi.com:7070', 10)
-engine_client = PredictionIO::EngineClient.new('http://fakeapi.com:8000', 10)
-
 describe PredictionIO do
+  let(:access_key) { 1 }
+  let(:event_client) { PredictionIO::EventClient.new(access_key, 'http://fakeapi.com:7070', 10) }
+  let(:engine_client) { PredictionIO::EngineClient.new('http://fakeapi.com:8000', 10) }
+
   describe 'Events API' do
     it 'create_event should create an event' do
       response = event_client.create_event('register', 'user', 'foobar')
       expect(response.code).to eq('201')
     end
 
+    context 'with http stub (for channel test)' do
+      before(:each) do
+        success_response = Net::HTTPCreated.new('HTTP/1.1', '201', 'Created')
+        success_response.body = JSON.generate(eventId: 'deadbeef00')
+        expect_any_instance_of(PredictionIO::Connection).to receive(:apost).and_return(double(get: success_response))
+      end
+
+      it 'create_event should have channel option (symbol)' do
+        expect(PredictionIO::AsyncRequest).
+          to receive(:new).with("/events.json?accessKey=#{access_key}&channel=test-channel",
+                                {
+                                  "eventTime" => "2017-03-22T12:26:35+03:00", "event" => "$set",
+                                  "entityType" => "Session", "entityId" => "42"
+                                }.to_json)
+        event_client.create_event('$set', 'Session', '42',
+                                  {channel: 'test-channel', 'eventTime' => "2017-03-22T12:26:35+03:00"})
+      end
+
+      it 'create_event should process channel option (string)' do
+        expect(PredictionIO::AsyncRequest).
+          to receive(:new).with("/events.json?accessKey=#{access_key}&channel=test-channel",
+                                {
+                                  "eventTime" => "2017-03-22T12:26:35+03:00", "event" => "$set",
+                                  "entityType" => "Session", "entityId" => "42"
+                                }.to_json)
+        response = event_client.create_event('$set', 'Session', '42',
+                                             { 'channel' => 'test-channel', 'eventTime' => "2017-03-22T12:26:35+03:00" })
+        expect(response.code).to eq('201')
+      end
+
+      it 'create_event should work without channel option' do
+        expect(PredictionIO::AsyncRequest).
+          to receive(:new).with("/events.json?accessKey=#{access_key}",
+                                {
+                                  "eventTime" => "2017-03-22T12:26:35+03:00", "event" => "$set",
+                                  "entityType" => "Session", "entityId" => "42"
+                                }.to_json)
+        response = event_client.create_event('$set', 'Session', '42',
+                                             { 'eventTime' => "2017-03-22T12:26:35+03:00" })
+        expect(response.code).to eq('201')
+      end
+    end
+
+    it 'create_event should post real request with channel option' do
+      response = event_client.create_event('$set', 'Session', '42',
+                                           { 'channel' => 'test-channel', 'eventTime' => "2017-03-22T12:26:35+03:00" })
+      expect(response.code).to eq('201')
+    end
+
     it 'create_event should not raise an error' do
       response = event_client.create_event('register', 'user', 'foobar')
       expect{ response }.to_not raise_error

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/f71cf0e6/spec/spec_helper.rb
----------------------------------------------------------------------
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index dd2a85b..11ab902 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -8,6 +8,16 @@ WebMock.disable_net_connect!(allow_localhost: true)
 RSpec.configure do |config|
   config.before(:each) do
     # Events API
+    %w(
+      http://fakeapi.com:7070/events.json?accessKey=1&channel=test-channel
+    ).each do |url|
+      stub_request(:post, url)
+        .with(body: hash_including(event: '$set',
+                                   entityType: 'Session',
+                                   entityId: '42'))
+        .to_return(status: 201, body: JSON.generate(eventId: 'deadbeef00'))
+    end
+
     stub_request(:post, 'http://fakeapi.com:7070/events.json?accessKey=1')
       .with(body: hash_including(event: 'register',
                                  entityType: 'user',


[05/13] incubator-predictionio-sdk-ruby git commit: Fix missing backtick

Posted by do...@apache.org.
Fix missing backtick


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/6fec5a72
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/6fec5a72
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/6fec5a72

Branch: refs/heads/master
Commit: 6fec5a725450628ef1380691fe8db845d384f9d5
Parents: 1561cc7
Author: Donald Szeto <ds...@salesforce.com>
Authored: Mon Jun 5 14:16:04 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 14:16:04 2017 -0700

----------------------------------------------------------------------
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/6fec5a72/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index cb66339..9862756 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ client.create_event(
 )
 ```
 
-### Create a $set` item event and send it to Event Server to specific channel
+### Create a `$set` item event and send it to Event Server to specific channel
 
 *NOTE:* channels are supported in PIO version >= 0.9.2 only. Channel must be created first.
 


[08/13] incubator-predictionio-sdk-ruby git commit: [PIO-123] Apply APLv2 to Ruby SDK

Posted by do...@apache.org.
[PIO-123] Apply APLv2 to Ruby SDK

Plus some minor updates to documentation


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/392f252a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/392f252a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/392f252a

Branch: refs/heads/master
Commit: 392f252aefb6e7b0acc13f185ac003ed82b73858
Parents: 03b7c4b
Author: Donald Szeto <do...@apache.org>
Authored: Sun Sep 17 13:59:50 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Sun Sep 17 13:59:50 2017 -0700

----------------------------------------------------------------------
 .gitignore                         |  15 +++
 CONTRIBUTING.md                    |  67 +++++-----
 LICENSE                            | 209 ++++++++++++++++++++++++++++++--
 README.md                          |  27 ++++-
 Rakefile                           |  15 +++
 lib/predictionio.rb                |  15 +++
 lib/predictionio/async_request.rb  |  15 +++
 lib/predictionio/async_response.rb |  15 +++
 lib/predictionio/connection.rb     |  15 +++
 lib/predictionio/engine_client.rb  |  15 +++
 lib/predictionio/event_client.rb   |  15 +++
 lib/predictionio/file_exporter.rb  |  15 +++
 lib/predictionio/version.rb        |  15 +++
 spec/predictionio_spec.rb          |  15 +++
 spec/spec_helper.rb                |  15 +++
 15 files changed, 430 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 29abd6e..2c1ced4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,18 @@
+# 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.
+
 /coverage
 /doc
 .rvmrc

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 79646ea..1a74446 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,38 +1,29 @@
-# Contributing to the PredictionIO Ruby SDK
-
-Thank you for your interest in contributing to the PredictionIO Ruby SDK!
-
-We are building this software together and strongly encourage contributions
-from the community that are within the guidelines set forth below.
-
-## Bug Fixes and New Features
-
-Before starting to write code, look for existing [tickets]
-(https://predictionio.atlassian.net/browse/SDKRUBY) or [create one]
-(https://predictionio.atlassian.net/secure/CreateIssue!default.jspa)
-for your bug, issue, or feature request. This helps the community
-avoid working on something that might not be of interest or which
-has already been addressed.
-
-## Environment
-
-We highly suggest using [RVM](https://rvm.io/) or [rbenv]
-(https://github.com/sstephenson/rbenv) to set up Ruby development and
-testing environments. In this way, moving between and testing code for
-alternate Ruby versions (besides the one possibly included with your
-system) is simple. This practice is essential for ensuring the quality
-of the SDK.
-
-## Pull Requests
-
-The SDK follows the [git-flow]
-(http://nvie.com/posts/a-successful-git-branching-model/) model where all
-active development goes to the develop branch, and releases go to the master
-branch. Pull requests should be made against the develop branch and include
-relevant tests, if applicable.
-
-## Talk to Us
-
-We love to hear from you. If you want to work on something or have
-questions / feedback, please reach out to us at
-https://groups.google.com/forum/#!forum/predictionio-dev
+<!--
+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.
+-->
+
+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 subscribe
+and post to the Development Mailing List
+<ma...@predictionio.incubator.apache.org>.
+
+For code contribution, please follow guidelines at
+http://predictionio.incubator.apache.org/community/contribute-code/.
+
+For documentation contribution, please follow guidelines at
+http://predictionio.incubator.apache.org/community/contribute-documentation/.

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index b347883..d645695 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,13 +1,202 @@
-Copyright 2014-2015 TappingStone Inc.
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
 
-    http://www.apache.org/licenses/LICENSE-2.0
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
-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.
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 9862756..ee766da 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,30 @@
-# PredictionIO Ruby SDK
+<!--
+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.
+-->
+
+# Apache PredictionIO (incubating) Ruby SDK
 
 [![Build Status](https://api.travis-ci.org/apache/incubator-predictionio-sdk-ruby.svg?branch=develop)](https://github.com/apache/incubator-predictionio-sdk-ruby)
 [![Code Climate](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK.png)](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK)
 [![Dependency Status](https://gemnasium.com/PredictionIO/PredictionIO-Ruby-SDK.svg)](https://gemnasium.com/PredictionIO/PredictionIO-Ruby-SDK)
 [![Gem Version](https://badge.fury.io/rb/predictionio.svg)](http://badge.fury.io/rb/predictionio)
 
-The Ruby SDK provides a convenient wrapper for the PredictionIO API.
-It allows you to quickly record your users' behavior
-and retrieve personalized predictions for them.
+The Ruby SDK provides a convenient wrapper for PredictionIO Event Server API and
+Engine API. It allows you to quickly record your users' behavior and retrieve
+personalized predictions for them.
 
 ## Documentation
 
@@ -137,7 +154,7 @@ Please use the Apache mailing lists. Subscription instructions are
 ## Issue Tracker
 
 Use [the Apache JIRA](https://issues.apache.org/jira/browse/PIO), and file any
-issues with a `ruby-sdk` label.
+issues under the `Ruby SDK` component.
 
 ## Contributing
 

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/Rakefile
----------------------------------------------------------------------
diff --git a/Rakefile b/Rakefile
index f34a48c..a9ca305 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,3 +1,18 @@
+# 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.
+
 require 'rspec/core/rake_task'
 
 RSpec::Core::RakeTask.new(:spec)

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio.rb b/lib/predictionio.rb
index 318850d..ec2ec0c 100644
--- a/lib/predictionio.rb
+++ b/lib/predictionio.rb
@@ -1,3 +1,18 @@
+# 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.
+
 require 'json'
 require 'predictionio/async_request'
 require 'predictionio/async_response'

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/async_request.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/async_request.rb b/lib/predictionio/async_request.rb
index a2c1b5e..5151b23 100644
--- a/lib/predictionio/async_request.rb
+++ b/lib/predictionio/async_request.rb
@@ -1,3 +1,18 @@
+# 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.
+
 module PredictionIO
   # This class contains the URI path and query parameters that is consumed by
   # PredictionIO::Connection for asynchronous HTTP requests.

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/async_response.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/async_response.rb b/lib/predictionio/async_response.rb
index 6078022..8db6388 100644
--- a/lib/predictionio/async_response.rb
+++ b/lib/predictionio/async_response.rb
@@ -1,3 +1,18 @@
+# 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.
+
 require 'thread'
 
 module PredictionIO

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/connection.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/connection.rb b/lib/predictionio/connection.rb
index 205d291..a01409c 100644
--- a/lib/predictionio/connection.rb
+++ b/lib/predictionio/connection.rb
@@ -1,3 +1,18 @@
+# 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.
+
 module PredictionIO
 
   # This class handles multithreading and asynchronous requests transparently for the REST client.

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/engine_client.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/engine_client.rb b/lib/predictionio/engine_client.rb
index cab6fea..1729ff8 100644
--- a/lib/predictionio/engine_client.rb
+++ b/lib/predictionio/engine_client.rb
@@ -1,3 +1,18 @@
+# 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.
+
 # Ruby SDK for convenient access of PredictionIO Output API.
 #
 # Author::    PredictionIO Team (support@prediction.io)

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/event_client.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/event_client.rb b/lib/predictionio/event_client.rb
index 567057d..b30c500 100644
--- a/lib/predictionio/event_client.rb
+++ b/lib/predictionio/event_client.rb
@@ -1,3 +1,18 @@
+# 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.
+
 # Ruby SDK for convenient access of PredictionIO Output API.
 #
 # Author::    PredictionIO Team (support@prediction.io)

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/file_exporter.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/file_exporter.rb b/lib/predictionio/file_exporter.rb
index d883f0a..c09f770 100644
--- a/lib/predictionio/file_exporter.rb
+++ b/lib/predictionio/file_exporter.rb
@@ -1,3 +1,18 @@
+# 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.
+
 module PredictionIO
   # This class contains methods that allow you to export data for import though:
   #

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/lib/predictionio/version.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/version.rb b/lib/predictionio/version.rb
index f0d9c70..61667cb 100644
--- a/lib/predictionio/version.rb
+++ b/lib/predictionio/version.rb
@@ -1,3 +1,18 @@
+# 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.
+
 module PredictionIO
   VERSION = '0.9.7'
 end

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/spec/predictionio_spec.rb
----------------------------------------------------------------------
diff --git a/spec/predictionio_spec.rb b/spec/predictionio_spec.rb
index 91d8704..3f2aa0d 100644
--- a/spec/predictionio_spec.rb
+++ b/spec/predictionio_spec.rb
@@ -1,3 +1,18 @@
+# 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.
+
 require 'predictionio'
 require 'spec_helper'
 

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/392f252a/spec/spec_helper.rb
----------------------------------------------------------------------
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 11ab902..c9d546d 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,3 +1,18 @@
+# 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.
+
 require 'coveralls'
 require 'json'
 require 'webmock/rspec'


[06/13] incubator-predictionio-sdk-ruby git commit: Drop Ruby 2.4 until it's fixed

Posted by do...@apache.org.
Drop Ruby 2.4 until it's fixed


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/5d3b89cf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/5d3b89cf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/5d3b89cf

Branch: refs/heads/master
Commit: 5d3b89cfc6632b77f7dd6c6b1d91f258a34d68f1
Parents: 6fec5a7
Author: Donald Szeto <ds...@salesforce.com>
Authored: Mon Jun 5 14:17:32 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 14:17:32 2017 -0700

----------------------------------------------------------------------
 .travis.yml | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/5d3b89cf/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 27e1dd1..24c6234 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,5 @@ rvm:
   - 2.1.5
   - 2.2.7
   - 2.3.4
-  - 2.4.1
 script:
   - rake


[03/13] incubator-predictionio-sdk-ruby git commit: Test against Ruby 2.1 - 2.4

Posted by do...@apache.org.
Test against Ruby 2.1 - 2.4


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/bd2719ff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/bd2719ff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/bd2719ff

Branch: refs/heads/master
Commit: bd2719fff0b647fae716157e2887b6173947e81b
Parents: f71cf0e
Author: Donald Szeto <ds...@salesforce.com>
Authored: Mon Jun 5 13:41:49 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 13:41:49 2017 -0700

----------------------------------------------------------------------
 .travis.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/bd2719ff/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 8a9593e..27e1dd1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,8 @@
 language: ruby
 rvm:
-  - 1.9.3
   - 2.1.5
-  - 2.2.1
+  - 2.2.7
+  - 2.3.4
+  - 2.4.1
 script:
   - rake


[07/13] incubator-predictionio-sdk-ruby git commit: Normalize eventTime format to iso8601

Posted by do...@apache.org.
Normalize eventTime format to iso8601

Closes #21


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/03b7c4ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/03b7c4ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/03b7c4ba

Branch: refs/heads/master
Commit: 03b7c4bac75fce1cbee00b5cbaa0aee589cbb26a
Parents: 5d3b89c
Author: Shou Ya <sh...@users.noreply.github.com>
Authored: Sat Sep 16 17:50:37 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Sat Sep 16 17:51:30 2017 -0700

----------------------------------------------------------------------
 lib/predictionio/event_client.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/03b7c4ba/lib/predictionio/event_client.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/event_client.rb b/lib/predictionio/event_client.rb
index 75428e8..567057d 100644
--- a/lib/predictionio/event_client.rb
+++ b/lib/predictionio/event_client.rb
@@ -112,7 +112,7 @@ module PredictionIO
     # See also #create_event.
     def acreate_event(event, entity_type, entity_id, optional = {})
       h = optional.with_indifferent_access
-      h.key?('eventTime') || h['eventTime'] = DateTime.now.to_s
+      h.key?('eventTime') || h['eventTime'] = DateTime.now.iso8601
       h['event'] = event
       h['entityType'] = entity_type
       h['entityId'] = entity_id


[13/13] incubator-predictionio-sdk-ruby git commit: Fix names and links

Posted by do...@apache.org.
Fix names and links


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/a81a509b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/a81a509b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/a81a509b

Branch: refs/heads/master
Commit: a81a509b2b92fff3684da91a131cc156a40d62c8
Parents: 67ed172
Author: Donald Szeto <do...@apache.org>
Authored: Wed Oct 25 22:05:56 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Wed Oct 25 22:05:56 2017 -0700

----------------------------------------------------------------------
 lib/predictionio/version.rb |  2 +-
 predictionio.gemspec        | 17 +++++++++--------
 2 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/a81a509b/lib/predictionio/version.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/version.rb b/lib/predictionio/version.rb
index 22c257d..8be107e 100644
--- a/lib/predictionio/version.rb
+++ b/lib/predictionio/version.rb
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 module PredictionIO
-  VERSION = '0.12.0'
+  VERSION = '0.12.1'
 end

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/a81a509b/predictionio.gemspec
----------------------------------------------------------------------
diff --git a/predictionio.gemspec b/predictionio.gemspec
index 42a3a34..ba33dd1 100644
--- a/predictionio.gemspec
+++ b/predictionio.gemspec
@@ -3,18 +3,19 @@ require 'predictionio/version'
 
 Gem::Specification.new do |s|
   s.name = 'predictionio'
-  s.summary = 'PredictionIO Ruby SDK'
+  s.summary = 'Apache PredictionIO Ruby SDK'
   s.description = <<-EOF
-PredictionIO is an open source machine learning server for developers and data
-scientists to create predictive engines for production environments. This gem
-provides convenient access to the PredictionIO API for Ruby programmers so that
-you can focus on application logic.
+Apache PredictionIO is an open source machine learning server for
+developers and data scientists to create predictive engines for
+production environments. This gem provides convenient access to the
+Apache PredictionIO API for Ruby programmers so that you can focus on
+application logic.
 EOF
   s.version = PredictionIO::VERSION
   s.licenses = ['Apache-2.0']
-  s.author = 'The PredictionIO Team'
-  s.email = 'support@prediction.io'
-  s.homepage = 'http://prediction.io/'
+  s.author = 'Apache PredictionIO'
+  s.email = 'user@predictionio.apache.org'
+  s.homepage = 'http://predictionio.apache.org'
   s.platform = Gem::Platform::RUBY
   s.required_ruby_version = '>= 2.0'
   s.files = Dir[File.join('lib', '**', '**')]


[11/13] incubator-predictionio-sdk-ruby git commit: Remove incubating status

Posted by do...@apache.org.
Remove incubating status


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/e0ea09e3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/e0ea09e3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/e0ea09e3

Branch: refs/heads/master
Commit: e0ea09e3b8209c658f031dbdc46e54613f3d7012
Parents: 814e3e6
Author: Donald Szeto <do...@apache.org>
Authored: Wed Oct 25 21:56:39 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Wed Oct 25 21:56:39 2017 -0700

----------------------------------------------------------------------
 CONTRIBUTING.md |  8 ++++----
 NOTICE          |  2 +-
 README.md       | 10 +++++-----
 3 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/e0ea09e3/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1a74446..a16298a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -15,15 +15,15 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-Thank you for your interest in contributing to Apache PredictionIO (incubating).
+Thank you for your interest in contributing to Apache PredictionIO.
 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 subscribe
 and post to the Development Mailing List
-<ma...@predictionio.incubator.apache.org>.
+<ma...@predictionio.apache.org>.
 
 For code contribution, please follow guidelines at
-http://predictionio.incubator.apache.org/community/contribute-code/.
+http://predictionio.apache.org/community/contribute-code/.
 
 For documentation contribution, please follow guidelines at
-http://predictionio.incubator.apache.org/community/contribute-documentation/.
+http://predictionio.apache.org/community/contribute-documentation/.

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/e0ea09e3/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index a572cf7..a0210eb 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Apache PredictionIO (incubating)
+Apache PredictionIO
 Copyright 2017 The Apache Software Foundation
 
 This product includes software developed at

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/e0ea09e3/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index ee766da..3c94281 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-# Apache PredictionIO (incubating) Ruby SDK
+# Apache PredictionIO Ruby SDK
 
 [![Build Status](https://api.travis-ci.org/apache/incubator-predictionio-sdk-ruby.svg?branch=develop)](https://github.com/apache/incubator-predictionio-sdk-ruby)
 [![Code Climate](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK.png)](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK)
@@ -31,7 +31,7 @@ personalized predictions for them.
 Full Ruby SDK documentation can be found [here](http://www.rubydoc.info/github/apache/incubator-predictionio-sdk-ruby).
 
 Please see the [PredictionIO App Integration
-Overview](http://predictionio.incubator.apache.org/appintegration/) to
+Overview](http://predictionio.apache.org/appintegration/) to
 understand how the SDK can be used to integrate PredictionIO Event Server and
 Engine with your application.
 
@@ -55,7 +55,7 @@ gem 'predictionio', '0.9.6'
 ## Sending Events to Event Server
 
 Please refer to [Event Server
-documentation](http://predictionio.incubator.apache.org/datacollection/) for
+documentation](http://predictionio.apache.org/datacollection/) for
 event format and how the data can be collected from your app.
 
 ### Instantiate Event Client and connect to PredictionIO Event Server
@@ -149,7 +149,7 @@ response = client.send_query(items: [10, 20, 30], num: 5)
 ## Mailing List
 
 Please use the Apache mailing lists. Subscription instructions are
-[here](http://predictionio.incubator.apache.org/support/).
+[here](http://predictionio.apache.org/support/).
 
 ## Issue Tracker
 
@@ -159,7 +159,7 @@ issues under the `Ruby SDK` component.
 ## Contributing
 
 Please follow these
-[instructions](http://predictionio.incubator.apache.org/community/contribute-code/).
+[instructions](http://predictionio.apache.org/community/contribute-code/).
 
 ## License
 


[12/13] incubator-predictionio-sdk-ruby git commit: Bump and release 0.12.0

Posted by do...@apache.org.
Bump and release 0.12.0

Align SDK major and minor version with PredictionIO


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/67ed1725
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/67ed1725
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/67ed1725

Branch: refs/heads/master
Commit: 67ed172519dbfa228ec48280f552c2f4b7b9828e
Parents: e0ea09e
Author: Donald Szeto <do...@apache.org>
Authored: Wed Oct 25 21:59:47 2017 -0700
Committer: Donald Szeto <do...@apache.org>
Committed: Wed Oct 25 21:59:47 2017 -0700

----------------------------------------------------------------------
 README.md                   | 2 +-
 lib/predictionio/version.rb | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/67ed1725/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 3c94281..3ab8553 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ gem install predictionio
 Or using [Bundler](http://bundler.io/) with:
 
 ```
-gem 'predictionio', '0.9.6'
+gem 'predictionio', '0.12.0'
 ```
 
 ## Sending Events to Event Server

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/67ed1725/lib/predictionio/version.rb
----------------------------------------------------------------------
diff --git a/lib/predictionio/version.rb b/lib/predictionio/version.rb
index 61667cb..22c257d 100644
--- a/lib/predictionio/version.rb
+++ b/lib/predictionio/version.rb
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 module PredictionIO
-  VERSION = '0.9.7'
+  VERSION = '0.12.0'
 end


[04/13] incubator-predictionio-sdk-ruby git commit: Update documentation

Posted by do...@apache.org.
Update documentation


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/commit/1561cc76
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/tree/1561cc76
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/diff/1561cc76

Branch: refs/heads/master
Commit: 1561cc76f149d8cc0645beecf75dbd27f418fa68
Parents: bd2719f
Author: Donald Szeto <ds...@salesforce.com>
Authored: Mon Jun 5 14:15:13 2017 -0700
Committer: Donald Szeto <ds...@salesforce.com>
Committed: Mon Jun 5 14:15:13 2017 -0700

----------------------------------------------------------------------
 README.md | 41 +++++++++++++++++++++++------------------
 1 file changed, 23 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-ruby/blob/1561cc76/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 56828ef..cb66339 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # PredictionIO Ruby SDK
 
-[![Build Status](https://travis-ci.org/PredictionIO/PredictionIO-Ruby-SDK.svg?branch=develop)](https://travis-ci.org/PredictionIO/PredictionIO-Ruby-SDK)
+[![Build Status](https://api.travis-ci.org/apache/incubator-predictionio-sdk-ruby.svg?branch=develop)](https://github.com/apache/incubator-predictionio-sdk-ruby)
 [![Code Climate](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK.png)](https://codeclimate.com/github/PredictionIO/PredictionIO-Ruby-SDK)
 [![Dependency Status](https://gemnasium.com/PredictionIO/PredictionIO-Ruby-SDK.svg)](https://gemnasium.com/PredictionIO/PredictionIO-Ruby-SDK)
 [![Gem Version](https://badge.fury.io/rb/predictionio.svg)](http://badge.fury.io/rb/predictionio)
@@ -11,15 +11,19 @@ and retrieve personalized predictions for them.
 
 ## Documentation
 
-Full Ruby SDK documentation can be found [here](http://docs.prediction.io/ruby/api/PredictionIO.html).
+Full Ruby SDK documentation can be found [here](http://www.rubydoc.info/github/apache/incubator-predictionio-sdk-ruby).
 
-Please see the [PredictionIO App Integration Overview](http://docs.prediction.io/appintegration/) to understand how the SDK can be used to integrate PredictionIO Event Server and Engine with your application.
+Please see the [PredictionIO App Integration
+Overview](http://predictionio.incubator.apache.org/appintegration/) to
+understand how the SDK can be used to integrate PredictionIO Event Server and
+Engine with your application.
 
 ## Installation
 
-Ruby 1.9.3+ required!
+Ruby 2+ required!
 
-The module is published to [RubyGems](http://rubygems.org/gems/predictionio) and can be installed directly by:
+The module is published to [RubyGems](http://rubygems.org/gems/predictionio) and
+can be installed directly by:
 
 ```sh
 gem install predictionio
@@ -33,7 +37,9 @@ gem 'predictionio', '0.9.6'
 
 ## Sending Events to Event Server
 
-Please refer to [Event Server documentation](https://docs.prediction.io/datacollection/) for event format and how the data can be collected from your app.
+Please refer to [Event Server
+documentation](http://predictionio.incubator.apache.org/datacollection/) for
+event format and how the data can be collected from your app.
 
 ### Instantiate Event Client and connect to PredictionIO Event Server
 
@@ -71,7 +77,7 @@ client.create_event(
 )
 ```
 
-### Create a $set` item event and send it to Event Server to specific channel 
+### Create a $set` item event and send it to Event Server to specific channel
 
 *NOTE:* channels are supported in PIO version >= 0.9.2 only. Channel must be created first.
 
@@ -100,8 +106,9 @@ client.create_event(
 
 ### Asynchronous request
 
-To send an async request, simply use the `acreate_event` method instead of `create_event`. Be aware that the
-asynchronous method does not throw errors. It's best to use the synchronous method when first getting started.
+To send an async request, simply use the `acreate_event` method instead of
+`create_event`. Be aware that the asynchronous method does not throw errors.
+It's best to use the synchronous method when first getting started.
 
 ## Query PredictionIO Engine
 
@@ -122,22 +129,20 @@ client = PredictionIO::EngineClient.new(ENV['PIO_ENGINE_URL'])
 response = client.send_query(items: [10, 20, 30], num: 5)
 ```
 
-## Forum
+## Mailing List
 
-View [Google Group](https://groups.google.com/group/predictionio-user)
+Please use the Apache mailing lists. Subscription instructions are
+[here](http://predictionio.incubator.apache.org/support/).
 
 ## Issue Tracker
 
-Use [JIRA](https://predictionio.atlassian.net) or [GitHub Issues](https://github.com/PredictionIO/PredictionIO-Ruby-SDK/issues).
+Use [the Apache JIRA](https://issues.apache.org/jira/browse/PIO), and file any
+issues with a `ruby-sdk` label.
 
 ## Contributing
 
-We follow the [git-flow]
-(http://nvie.com/posts/a-successful-git-branching-model/) model where all
-active development goes to the develop branch, and releases go to the master
-branch. Pull requests should be made against the develop branch and include
-relevant tests, if applicable. Please sign
-our [Contributor Agreement](http://prediction.io/cla) before submitting a pull request.
+Please follow these
+[instructions](http://predictionio.incubator.apache.org/community/contribute-code/).
 
 ## License