Merge branch 'APEXCORE-215.build-verification-steps' of https://github.com/sandeepdeshmukh/incubator-apex-site
diff --git a/README.md b/README.md
index 14487df..5cde794 100644
--- a/README.md
+++ b/README.md
@@ -139,3 +139,102 @@
 
 Once changes have been committed, follow the regular site publishing steps to update and publish `roadmap.html`.
 
+
+Updating Announcements Page
+---------------------------
+
+Announcement updates are added to announcements.md file.
+
+Upcoming meetups are automatically generated by a widget which uses meetup.com API to load all the events with apache-apex topic.  Additional events can be added directly to upcoming-meetups.md file.
+
+To update the widget, or change the topic, go to the [Meetup Widget Foundry]http://www.meetup.com/meetup_api/foundry/, select Meetup Group Stats widget editable section, and paste the following code:
+
+```html
+<html>
+<head>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
+<script src="local.js"></script>
+<script src="api_key.js"></script>
+<script id="config" type="text/javascript" charset="utf-8">
+  var $parameters = {
+    topic: "apache-apex",
+    width: 250,
+    height: 1000,
+  };
+  var $queries = {
+    events: function() {
+      return mup_widget.api_call("/2/open_events", {topic: $parameters.topic, page: '20'});
+    }
+  };
+</script>
+<link rel="stylesheet" type="text/css" href="https://a248.e.akamai.net/secure.meetupstatic.com/style/widget.css">
+<script type="text/javascript" charset="utf-8">
+  mup_widget.with_jquery(function($, ctx) {
+    var group = '',
+        months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
+        addLink = function(content, link) {
+            return '<a target="_blank" href="' + link + '">' + content + '</a>';
+        },
+        addLeadingZero = function( num ) {
+            return (num < 10) ? ('0' + num) : num;
+          },
+        getFormattedDate = function( millis ) {
+            var date = new Date( millis );
+            return  months[date.getMonth()] + ' ' + addLeadingZero( date.getDate() ) + ', ' + date.getFullYear().toString();
+          };
+
+    $.getJSON($queries.events(), function(data) {
+      if (data.status && data.status.match(/^200/) == null) {
+        console.log("Error loading Meetups events: ", data.status + ": " + data.details);
+      } else {
+          if (data.results.length > 0) {
+              var uniqueEventsByTimeName = {};
+              for (var i = 0; i < data.results.length; i++) {
+                var event = data.results[i];
+                console.log(event);
+                var venue = event.venue;
+                var city = (venue && venue.city) ? venue.city : 'TBD';
+                var state_country = (venue) ?  venue.state || venue.country : '' ;
+                var location = (state_country) ? city + ", " + state_country.toUpperCase() : city;
+                event.location = location;
+                // Check for duplicate events by event date + event name
+                var eventTimeName = event.time + event.name;
+                
+                if (uniqueEventsByTimeName[eventTimeName]) {
+                  console.log("DUPLICATE EVENT (skipped): ", event.event_url, " matches previous event ", uniqueEventsByTimeName[eventTimeName].event_url, " with date:", getFormattedDate(event.time), " and name ", event.name);
+                } else {
+                  uniqueEventsByTimeName[eventTimeName] = event;
+                }
+
+              }
+
+              var uniqueEventsByTimeLocation = {};
+              for (var e in uniqueEventsByTimeName) {
+                var event = uniqueEventsByTimeName[e];
+                // Check for duplicate events by event time + location
+                var eventTimeLocation = event.time + event.location;
+                if (uniqueEventsByTimeLocation[eventTimeLocation]) {
+                  console.log("DUPLICATE EVENT (skipped): ", event.event_url, " matches previous event ", uniqueEventsByTimeLocation[eventTimeLocation].event_url, " with date:", getFormattedDate(event.time), " and location ", event.location);
+                } else {
+                  uniqueEventsByTimeLocation[eventTimeLocation] = event;
+                  $('.next-events', ctx).append('<p>'+ addLink(getFormattedDate(event.time) + " - " + event.location, event.event_url) + " - " + event.name + "</p>");
+                }
+              }
+
+            }
+      }
+    });
+
+  });
+</script>
+</head>
+<body>
+  <div class="next-events"></div>
+</body>
+</html>
+```
+
+The generated widget code can be directly pasted into upcoming-meetups.md page.
+
+
+
diff --git a/gulpfile.js b/gulpfile.js
index 9966144..1b4fc5b 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -327,7 +327,7 @@
           var releases = releaseLinks.map(function(el) {
             return {
               // Trim the href attribute of leading "v" and trailing slash
-              version: el.href.trim().replace(/^v/, '').replace(/\/$/, ''),
+              version: el.innerHTML.trim().replace(/^v/, '').replace(/\/$/, ''),
               // Add repo for use in async.each call below
               repo: target.repo
             };
@@ -351,10 +351,13 @@
 
               // Find hash for this release's tag
               for (var i = 0; i < lines.length; i++) {
-                var parts = lines[i].split('\t');
-                if (parts[1].replace(/^refs\/tags\/v?/, '') === release.version) {
-                  tagHash = parts[0];
-                  break;
+                if (lines[i] && lines[i].trim().length > 0) {
+                  // console.log("Processing line[", i, "] : ", lines[i]);
+                  var parts = lines[i].split('\t');
+                  if (parts[1] && parts[1].replace(/^refs\/tags\/v?/, '') === release.version) {
+                    tagHash = parts[0];
+                    break;
+                  }
                 }
               }
 
diff --git a/releases.json b/releases.json
index 6a2ed28..5ed2ce3 100644
--- a/releases.json
+++ b/releases.json
@@ -2,6 +2,11 @@
   "core": {
     "src": [
       {
+        "version": "3.3.0-incubating",
+        "repo": "incubator-apex-core",
+        "date": 1454908501000
+      },
+      {
         "version": "3.2.0-incubating",
         "repo": "incubator-apex-core",
         "date": 1446268713000
diff --git a/src/md/announcements.md b/src/md/announcements.md
index b4c4957..f9effbc 100644
--- a/src/md/announcements.md
+++ b/src/md/announcements.md
@@ -1,5 +1,11 @@
 # Announcements
 
+## Apex Core release 3.3.0-incubating
+
+Feb 8, 2016.  The Apache Apex community is pleased to announce release [3.3.0-incubating](/downloads.html) of the Core.
+
+Changes: https://github.com/apache/incubator-apex-core/blob/v3.3.0-incubating/CHANGELOG.md
+
 
 ## Malhar Library release 3.3.0-incubating
 
@@ -23,7 +29,7 @@
 
 ## Apex Core release 3.2.0-incubating
 
-Oct 30, 2015.  The Apache Apex community is pleased to announce [3.2.0-incubating](/downloads.html) of the Core.  This is the first release of Apex core since incubation.
+Oct 30, 2015.  The Apache Apex community is pleased to announce release [3.2.0-incubating](/downloads.html) of the Core.  This is the first release of Apex core since incubation.
 
 Changes: https://github.com/apache/incubator-apex-core/blob/v3.2.0-incubating/CHANGELOG.md
 
diff --git a/src/md/community.md b/src/md/community.md
index 60aec91..8ce4486 100644
--- a/src/md/community.md
+++ b/src/md/community.md
@@ -2,11 +2,12 @@
 
 ## Mailing Lists
 
-The following mailing lists can be used to get help with Apex.
+The following mailing lists are available for Apex.
 
 - [dev@apex.incubator.apache.org](http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/) is for people who want to contribute code to Apex. [subscribe](mailto:dev-subscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20subscribe), [unsubscribe](mailto:dev-unsubscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20unsubscribe), [archives](http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/)
 - [users@apex.incubator.apache.org](http://mail-archives.apache.org/mod_mbox/incubator-apex-users/) is a discussion forum for people who want to build apps and/or solutions using Apex. [subscribe](mailto:users-subscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20subscribe), [unsubscribe](mailto:users-unsubscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20unsubscribe), [archives](http://mail-archives.apache.org/mod_mbox/incubator-apex-users/)
 - [commits@apex.incubator.apache.org](http://mail-archives.apache.org/mod_mbox/incubator-apex-commits/) is for commit messages and patches to Apex. [subscribe](mailto:commits-subscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20subscribe), [unsubscribe](mailto:commits-unsubscribe@apex.incubator.apache.org?subject=send%20this%20email%20to%20unsubscribe), [archives](http://mail-archives.apache.org/mod_mbox/incubator-apex-commits/)
+- [security@apex.incubator.apache.org](mailto:security@apex.incubator.apache.org) is for reporting security related issues with Apex. It is a private list to discuss security related issues. Please post potential security vulnerabilities to this list so that they can be investigated and fixed before the vulnerabilities are published to the public. You can post to the list without subscribing to it.
 
 
 ## Contributing
@@ -31,19 +32,7 @@
 
 ## Meetup Groups
 
+Full list of Apache Apex meetup groups is available at [Apache Apex Meetup Groups](http://apache-apex.meetup.com/)
+
+
 To see upcoming meetup events, please visit [announcements page](/announcements.html).
-
-- [Austin Chapter]( http://www.meetup.com/Apache-Apex-Austin-Chapter/)
-- [Bay Area Chapter](http://www.meetup.com/Apex-Bay-Area-Chapter)
-- [Bengaluru Chapter](http://www.meetup.com/Apache-Apex-incubating-Bengaluru-Meetup)
-- [Chicago Chapter](http://www.meetup.com/Apache-Apex-Meetup-Chicago-Chapter)
-- [Columbus Chapter](http://www.meetup.com/Apex-Meetup-Columbus)
-- [Dallas Chapter]( http://www.meetup.com/Apache-Apex-Dallas-Chapter/)
-- [Denver Chapter]( http://www.meetup.com/Apache-Apex-Denver-Chapter/)
-- [El Segundo Chapter]( http://www.meetup.com/Apache-Apex-El-Segundo-Chapter/)
-- [Houston Chapter](http://www.meetup.com/Apex-Meetup-Houston)
-- [New York Chapter](http://www.meetup.com/Apache-Apex-New-York-Chapter)
-- [Phoenix Chapter](http://www.meetup.com/Apache-Apex-Phoenix-Chapter/)
-- [Richmond VA Chapter](http://www.meetup.com/Apache-Apex-Richmond-VA-Area-Chapter/)
-- [Pune Chapter](http://www.meetup.com/Apache-Apex-incubating-Meetup-Pune)
-
diff --git a/src/md/contributing.md b/src/md/contributing.md
index 1be6909..211c708 100644
--- a/src/md/contributing.md
+++ b/src/md/contributing.md
@@ -27,12 +27,12 @@
 ## Code Style
 Apache Apex follows coding style that is closest to K & R style and uses [Checkstyle](http://checkstyle.sourceforge.net/) tool to enforce these standards. Travis CI will fail for any pull request that introduces any style violations.
 
-The checkstyle configuration that Apache Apex projects use is present here : https://github.com/apache/incubator-apex-core/blob/devel-3/apex_checks.xml
+The checkstyle configuration that Apache Apex projects use is present here : https://github.com/apache/incubator-apex-core/blob/master/apex_checks.xml
 
 To make it easier for the users to set up their development environment, settings for the following common IDEs are provided in the Apache Apex Core repository with instructions.
- - [IntelliJ](https://github.com/apache/incubator-apex-core/tree/devel-3/misc/ide-templates/intellij)
- - [Eclipse](https://github.com/apache/incubator-apex-core/tree/devel-3/misc/ide-templates/eclipse)
- - [NetBeans](https://github.com/apache/incubator-apex-core/tree/devel-3/misc/ide-templates/netbeans)
+ - [IntelliJ](https://github.com/apache/incubator-apex-core/tree/master/misc/ide-templates/intellij)
+ - [Eclipse](https://github.com/apache/incubator-apex-core/tree/master/misc/ide-templates/eclipse)
+ - [NetBeans](https://github.com/apache/incubator-apex-core/tree/master/misc/ide-templates/netbeans)
 
 ## Opening Pull Requests (contributors)
 
@@ -45,14 +45,14 @@
   `git clone https://github.com/{github_username}/incubator-apex-core.git`
 1. Add [incubator apex core](https://github.com/apache/incubator-apex-core) as a remote repository (one time step):  
 `git remote add upstream https://github.com/apache/incubator-apex-core`
-1. Create a new branch from the [devel-3](https://github.com/apache/incubator-apex-core/tree/devel-3) branch. **Name your branch with the JIRA number in it, e.g. `APEXCORE-123.my-feature`.**  
-`git checkout -b APEXCORE-123.my-feature -t upstream/devel-3`  
+1. Create a new branch from the [master](https://github.com/apache/incubator-apex-core/tree/master) branch. **Name your branch with the JIRA number in it, e.g. `APEXCORE-123.my-feature`.**  
+`git checkout -b APEXCORE-123.my-feature -t upstream/master`  
 Creating a local branch that tracks a remote makes pull easier (no need to specify the remote branch while pulling). A branch can be made to track a remote branch anytime, not necessarily at its creation by:  
-`git branch -u upstream/devel-3`
+`git branch -u upstream/master`
 1. When adding new files, please include the Apache v2.0 license header.
   - From the top level directory, run `mvn license:check -Dlicense.skip=false` to check correct header formatting.
   - Run `mvn license:format -Dlicense.skip=false` to automatically add the header when missing.
-1. Once your feature is complete, submit the pull request on github against `devel-3`.
+1. Once your feature is complete, submit the pull request on github against `master`.
 1. If you want specific people to review your pull request, use the `@` notation in Github comments to mention that user, and request that he/she reviews your changes.
 1. Check the status of the pull request and ensure the Travis CI build is successful. If not, inspect the linked build log for details.
   - If build fails due to license headers, follow instructions above.
@@ -60,7 +60,7 @@
 1. Add changes after the PR was opened to the same branch, Travis CI will detect changes and build automatically. To force the CI run, close and re-open the PR.
 1. After all review is complete, combine all new commits into one squashed commit except when there are multiple contributors, and include the Jira number in the commit message. There are several ways to squash commits, but [here is one explanation from git-scm.com](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Squashing-Commits) and a simple example is illustrated below:
 
-  If tracking upstream/devel-3 then run `git rebase -i`. Else run `git rebase -i upstream/devel-3`.  
+  If tracking upstream/master then run `git rebase -i`. Else run `git rebase -i upstream/master`.  
   This command opens the text editor which lists the multiple commits:
 
   ```
@@ -86,16 +86,16 @@
   squash 6f98905 change2
   ```
 1. If there are multiple contributors in a pull request preserve individual attributions. Try to squash the commits to the minimum number of commits required to preserve attribution and the contribution to still be functionally correct.
-1. Till the review is complete it may happen that working feature branch may diverge from `devel-3` substantially. Therefore, it is recommended to frequently merge `devel-3` to the branch being worked on by:
-  * when the branch tracks upstream/devel-3  
+1. Till the review is complete it may happen that working feature branch may diverge from `master` substantially. Therefore, it is recommended to frequently merge `master` to the branch being worked on by:
+  * when the branch tracks upstream/master  
   `git pull`
   * when the branch doesn't track upstream  
-  `git pull upstream devel-3`
-1. If a pull from `devel-3` results in a conflict then resolve it and commit the merge. This results in additional merge commits in the pull request. Following steps help to ensure that the final pull request contains just one commit:
+  `git pull upstream master`
+1. If a pull from `master` results in a conflict then resolve it and commit the merge. This results in additional merge commits in the pull request. Following steps help to ensure that the final pull request contains just one commit:
   * Rename the original branch:  
   `git branch -m APEXCORE-123.my-feature.squash`
-  * Create a new branch (with the original name) from upstream/devel-3 that has latest changes:   
-  `git checkout -b APEXCORE-123.my-feature -t upstream/devel-3`
+  * Create a new branch (with the original name) from upstream/master that has latest changes:   
+  `git checkout -b APEXCORE-123.my-feature -t upstream/master`
   * Squash merge the old branch which was renamed. When the new branch has the latest changes then this squash will result only in the changes that were made for the feature:  
   `git merge --squash APEXCORE-123.my-feature.squash`
   * Commit the squash and force push it to the old feature remote branch so that the pull request is automatically updated:    
@@ -115,7 +115,7 @@
   - Ensure appropriate JavaDoc comments have been added
 1. To set up access to the ASF source repository, [follow these steps](https://git-wip-us.apache.org/#committers-getting-started). The ASF master repository is: `https://git-wip-us.apache.org/repos/asf/incubator-apex-core.git`
 1. Use the git command line to pull in the changes from the pull requests. You can refer to the corresponding email that will be automatically sent to the `dev@apex.incubator.apache.org` mailing list to see the exact commands to merge the given pull request.
-1. Once done with verification, push the changes to the ASF repository's `devel-3` branch. Within a few
+1. Once done with verification, push the changes to the ASF repository's `master` branch. Within a few
 seconds, the changes will propagate back to the github mirror and the pull requests be closed and marked merged automatically.
 1. The `Fix version` field on the corresponding JIRA ticket needs to be set and the ticket resolved after pushing the changes.
 
diff --git a/src/md/release.md b/src/md/release.md
index 4f69833..d01b84b 100644
--- a/src/md/release.md
+++ b/src/md/release.md
@@ -9,19 +9,19 @@
 If this is a minor release (X.Y.0), start with creating a new branch. Example for 3.2.0:
 
 ```bash
-git checkout devel-3 && git pull
-git checkout -b release-3.2 devel-3
+git checkout master && git pull
+git checkout -b release-3.2 master
 ```
-Replace version in devel-3 branch:
+Replace version in master branch:
 ```
-git checkout devel-3
+git checkout master
 git grep -l "3.2.0-incubating-SNAPSHOT"
 ```
 For informational purpose, this should yield the list of files that needs the version number replaced to X.(Y+1).0 next version. Note that the replacement step is different between the repositories due to an open issue. See:
 
 https://issues.apache.org/jira/browse/APEXCORE-34
 
-For -core:  
+For -core:
 ```bash
 dv=3.2.0-incubating-SNAPSHOT
 rv=3.3.0-incubating-SNAPSHOT
@@ -34,7 +34,7 @@
 Commit and push the change:
 ```
 git commit -am "Preparing for 3.3.0 development"
-git push apache devel-3
+git push apache master
 ```
 
 ## Preparing Release Candidate
@@ -79,7 +79,7 @@
 ```
 And this for -malhar releases:
 ```
-mvn versions:set -Pall-modules -DnewVersion=${rv} -Pall-modules
+mvn versions:set -Pall-modules -DnewVersion=${rv}
 ```
 Commit version change:
 ```
@@ -104,8 +104,14 @@
 ```
 git checkout "v${rv}-RC1"
 git clean -d -f
-mvn clean deploy -Papache-release -DskipTests -Dsonatype_user=<user>
+mvn clean rat:check deploy -Papache-release -Pall-modules -DskipTests -Dsonatype_user=<user>
 ```
+
+Confirm no archives are included in source release (rat:check reports them in target/rat.txt but does not fail the build):
+```
+unzip -l target/apex-*-incubating-source-release.zip | grep -e ".zip\|.jar"
+```
+
 Log on to https://repository.apache.org and look for Staging Repositories. "Close" the newly created orgapacheapex-xxxx staging repository to obtain the temporary URL, note it down for the VOTE thread.
 
 Example URL: https://repository.apache.org/content/repositories/orgapacheapex-1000/
@@ -120,8 +126,8 @@
 md5sum apex-${rv}-source-release.zip > apex-${rv}-source-release.zip.md5
 shasum -a 512 apex-${rv}-source-release.tar.gz > apex-${rv}-source-release.tar.gz.sha
 shasum -a 512 apex-${rv}-source-release.zip > apex-${rv}-source-release.zip.sha
-gpg  --armor --output apex-${rv}-source-release.tar.gz.asc --detach-sig apex-${rv}-source-release.tar.gz
-gpg  --armor --output apex-${rv}-source-release.zip.asc --detach-sig apex-${rv}-source-release.zip
+gpg --yes --armor --output apex-${rv}-source-release.tar.gz.asc --detach-sig apex-${rv}-source-release.tar.gz
+gpg --yes --armor --output apex-${rv}-source-release.zip.asc --detach-sig apex-${rv}-source-release.zip
 ```
 
 For -malhar releases:
@@ -131,8 +137,8 @@
 md5sum malhar-${rv}-source-release.zip > malhar-${rv}-source-release.zip.md5
 shasum -a 512 malhar-${rv}-source-release.tar.gz > malhar-${rv}-source-release.tar.gz.sha
 shasum -a 512 malhar-${rv}-source-release.zip > malhar-${rv}-source-release.zip.sha
-gpg  --armor --output malhar-${rv}-source-release.tar.gz.asc --detach-sig malhar-${rv}-source-release.tar.gz
-gpg  --armor --output malhar-${rv}-source-release.zip.asc --detach-sig malhar-${rv}-source-release.zip
+gpg --yes --armor --output malhar-${rv}-source-release.tar.gz.asc --detach-sig malhar-${rv}-source-release.tar.gz
+gpg --yes --armor --output malhar-${rv}-source-release.zip.asc --detach-sig malhar-${rv}-source-release.zip
 ```
 
 Check files into the dist staging area:
@@ -145,18 +151,18 @@
 ## Voting 
 
 PPMC vote call sample:
-http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/201601.mbox/%3CCAKJfLDOj58dtfWTw2oBfm5GsyZqsbWCYFSCro9U%2BJw2%2BTFbVpQ%40mail.gmail.com%3E
+http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/201602.mbox/%3CCAKJfLDPjMAZc8-NjjyMgtJGDpHkhVpxv8PYnryfiF4zZZufVmA%40mail.gmail.com%3E
 
 PPMC vote result:
-http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/201510.mbox/%3CCAKJfLDOY-SpcJfdFiJosoyZ2JidursecietvhT5AgUeX-%3Dw-Tw%40mail.gmail.com%3E
+http://mail-archives.apache.org/mod_mbox/incubator-apex-dev/201602.mbox/%3CCAKJfLDN4CUVn9cgVhAhqeojP4hDUhwjnWRgXD226VOOBPphmUg%40mail.gmail.com%3E
 
 Once PPMC vote passes, another vote needs to be called for IPMC (only IPMC votes are binding).
 
 IPMC vote call:
-http://mail-archives.apache.org/mod_mbox/incubator-general/201510.mbox/%3CCA%2B5xAo21vEVw5eggLmmbx4pxwkXNLysTXYa4_hyMbWnpUZSpyQ%40mail.gmail.com%3E
+http://mail-archives.apache.org/mod_mbox/incubator-general/201602.mbox/%3CCA%2B5xAo3UmJoEg-zfC%2BK061cK7fKbNXvD46PmP-QQYqrTTCtbZg%40mail.gmail.com%3E
 
 IPMC vote result:
-http://mail-archives.apache.org/mod_mbox/incubator-general/201510.mbox/%3CCA%2B5xAo2O8aqg3Z0-y0hiyq5aFskYrMDG-xYbdfQR8YGCiiGAjA%40mail.gmail.com%3E
+http://mail-archives.apache.org/mod_mbox/incubator-general/201602.mbox/%3CCA%2B5xAo0s0ae3UU8xDw%2ByhhEkOG4Ha%2B4E1B87Do5wUPGEV%2BAhFw%40mail.gmail.com%3E
 
 If the vote is not successful, a new RC needs to be built. Once IPMC vote passes, proceed with promoting and announcing the release.
 
@@ -166,20 +172,22 @@
 
 Move source release from dist staging to release folder:
 ```
-svn mv  https://dist.apache.org/repos/dist/dev/incubator/apex/v3.2.0-incubating-RC2 https://dist.apache.org/repos/dist/release/incubator/apex/v3.2.0-incubating
+rv=3.2.0-incubating
+svn mv https://dist.apache.org/repos/dist/dev/incubator/apex/v${rv} https://dist.apache.org/repos/dist/release/incubator/apex/v${rv} -m "Release Apache Apex ${rv}"
 ```
 
 ### JIRA
 
-Close release and all associated tickets 
+Close release and all associated tickets (use bulk change workflow transition). 
 Create version number X.Y.Z+1 for next release
 
 ### git
 
 Create final release tag:
 ```bash
-git tag -a "v3.2.0-incubating" -m "Release 3.2.0-incubating" "v3.2.0-incubating-RC2"
-git push apache "v3.2.0-incubating"
+rv=3.2.0-incubating
+git tag -a "v${rv}" -m "Release ${rv}" "v${rv}-RC2"
+git push apache "v${rv}"
 ```
 Bump patch version number in release branch (X.Y.Z+1 - otherwise same as when creating new release branch):
 ```bash
@@ -187,10 +195,21 @@
 dv=3.2.0-incubating-SNAPSHOT
 rv=3.2.1-incubating-SNAPSHOT
 for a in `git grep -l "${dv}"`; do echo $a; sed -i 's/'"${dv}"'/'"${rv}"'/g' $a; done
-git commit -am "Preparing for 3.2.1 development"
 ```
-Merge `@since` tag and change log changes to `devel-3`
+The following steps should be completed only when releasing a new minor release (X.Y.0), otherwise please verify that all necessary changes are already in place.
+Wait for the published release artifacts to be available in the Maven Central repository and upgrade base version for semantic versioning (japicmp-maven-plugin) to
+the newly published release (X.Y.0). If there are new artifacts published to Maven repositories consider enabling semantic versioning check for the newly
+published libraries. Set `<breakBuildOnModifications>` to `true`.
+
+Commit all changes and push them to the remote git repository:
+```bash
+git commit -am "Preparing for 3.2.1 development"
+git push apache
+```
+Merge `@since` tag and change log changes to `master`. If release is a new minor release (X.Y.0) implement the same changes in semantic versioning plugin
+configurations as in the new release branch, except changing `<breakBuildOnModifications>`.
 
 ## Announce Release
 
-http://mail-archives.apache.org/mod_mbox/incubator-general/201511.mbox/%3CCA%2B5xAo1mS-BMT%3DXk_q287_j5m6ngtaT8QEEED0zfQhXtgrnOtA%40mail.gmail.com%3E
+http://mail-archives.apache.org/mod_mbox/incubator-general/201602.mbox/%3CCA%2B5xAo0NmnkxmdWdxCfcKVKL5%3Dd9ssE74nB%2BB1R6vX1rLaDqNw%40mail.gmail.com%3E
+
diff --git a/src/md/upcoming-meetups.md b/src/md/upcoming-meetups.md
index 8118da7..114ca55 100644
--- a/src/md/upcoming-meetups.md
+++ b/src/md/upcoming-meetups.md
@@ -1,6 +1,24 @@
 ## Upcoming Meetups
 
+[Feb 24, 2016 - San Francisco, CA](http://www.meetup.com/SF-Data-Science/events/228111922/) - Enteprise Grade Streaming on Hadoop in Under 2ms
 
-[San Ramon - Feb 1, 2016](http://www.meetup.com/Apex-Bay-Area-Chapter/events/226494484/) - GE Software talk on Predix using Apex
-[Pune, India - Feb 3, 2016](http://www.meetup.com/Apex-Bay-Area-Chapter/events/228292993/) - Introduction to Big Data Streaming Analytics
-[San Francisco - Feb 16, 2016](http://www.meetup.com/Data-Mining/events/228420836/) - Open Source Tools for Data Science (Apex for Dimensions Computation)
+
+<div id="1455851994580"></div>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+<script>jQuery.noConflict();</script>
+<script>
+  jQuery(function() {
+    var scripts = ["var%20%24parameters%20%3D%20%7B%22topic%22%3A%22apache-apex%22%2C%22width%22%3A%22250%22%2C%22height%22%3A%221000%22%7D%3B%0Avar%20%24queries%20%3D%20%7B%20events%3A%20function%28%29%20%7B%20return%20%22https%3A//api.meetup.com/2/open_events%3Fand_text%3DFalse%26offset%3D0%26format%3Djson%26limited_events%3DFalse%26sig%3D5cc475b2c28e785d85c0ae29356f71dbb7c85839%26topic%3Dapache-apex%26callback%3D%3F%26page%3D20%26radius%3D25.0%26sig_id%3D87819142%26desc%3DFalse%26status%3Dupcoming%26_%3D1455851993925%26user_agent%3Dmeetup.widget%3Amug_stats%22%3B%20%7D%20%7D%3B%0A","%0Amup_widget.with_jquery%28function%28%24%2Cctx%29%7Bvar%20group%3D%27%27%2Cmonths%3D%5B%27Jan%27%2C%27Feb%27%2C%27Mar%27%2C%27Apr%27%2C%27May%27%2C%27Jun%27%2C%27Jul%27%2C%27Aug%27%2C%27Sep%27%2C%27Oct%27%2C%27Nov%27%2C%27Dec%27%5D%2CaddLink%3Dfunction%28content%2Clink%29%7Breturn%27%3Ca%20target%3D%22_blank%22%20href%3D%22%27+link+%27%22%3E%27+content+%27%3C/a%3E%27%3B%7D%2CaddLeadingZero%3Dfunction%28num%29%7Breturn%28num%3C10%29%3F%28%270%27+num%29%3Anum%3B%7D%2CgetFormattedDate%3Dfunction%28millis%29%7Bvar%20date%3Dnew%20Date%28millis%29%3Breturn%20months%5Bdate.getMonth%28%29%5D+%27%20%27+addLeadingZero%28date.getDate%28%29%29+%27%2C%20%27+date.getFullYear%28%29.toString%28%29%3B%7D%3B%24.getJSON%28%24queries.events%28%29%2Cfunction%28data%29%7Bif%28data.status%26%26data.status.match%28/%5E200/%29%3D%3Dnull%29%7Bconsole.log%28%22Error%20loading%20Meetups%20events%3A%20%22%2Cdata.status+%22%3A%20%22+data.details%29%3B%7Delse%7Bif%28data.results.length%3E0%29%7Bvar%20uniqueEventsByTimeName%3D%7B%7D%3Bfor%28var%20i%3D0%3Bi%3Cdata.results.length%3Bi++%29%7Bvar%20event%3Ddata.results%5Bi%5D%3Bconsole.log%28event%29%3Bvar%20venue%3Devent.venue%3Bvar%20city%3D%28venue%26%26venue.city%29%3Fvenue.city%3A%27TBD%27%3Bvar%20state_country%3D%28venue%29%3Fvenue.state%7C%7Cvenue.country%3A%27%27%3Bvar%20location%3D%28state_country%29%3Fcity+%22%2C%20%22+state_country.toUpperCase%28%29%3Acity%3Bevent.location%3Dlocation%3Bvar%20eventTimeName%3Devent.time+event.name%3Bif%28uniqueEventsByTimeName%5BeventTimeName%5D%29%7Bconsole.log%28%22DUPLICATE%20EVENT%20%28skipped%29%3A%20%22%2Cevent.event_url%2C%22%20matches%20previous%20event%20%22%2CuniqueEventsByTimeName%5BeventTimeName%5D.event_url%2C%22%20with%20date%3A%22%2CgetFormattedDate%28event.time%29%2C%22%20and%20name%20%22%2Cevent.name%29%3B%7Delse%7BuniqueEventsByTimeName%5BeventTimeName%5D%3Devent%3B%7D%7Dvar%20uniqueEventsByTimeLocation%3D%7B%7D%3Bfor%28var%20e%20in%20uniqueEventsByTimeName%29%7Bvar%20event%3DuniqueEventsByTimeName%5Be%5D%3Bvar%20eventTimeLocation%3Devent.time+event.location%3Bif%28uniqueEventsByTimeLocation%5BeventTimeLocation%5D%29%7Bconsole.log%28%22DUPLICATE%20EVENT%20%28skipped%29%3A%20%22%2Cevent.event_url%2C%22%20matches%20previous%20event%20%22%2CuniqueEventsByTimeLocation%5BeventTimeLocation%5D.event_url%2C%22%20with%20date%3A%22%2CgetFormattedDate%28event.time%29%2C%22%20and%20location%20%22%2Cevent.location%29%3B%7Delse%7BuniqueEventsByTimeLocation%5BeventTimeLocation%5D%3Devent%3B%24%28%27.next-events%27%2Cctx%29.append%28%27%3Cp%3E%27+addLink%28getFormattedDate%28event.time%29+%22%20-%20%22+event.location%2Cevent.event_url%29+%22%20-%20%22+event.name+%22%3C/p%3E%22%29%3B%7D%7D%7D%7D%7D%29%3B%7D%29%3B"];
+    jQuery("#1455851994580").append(unescape("%3Clink%20rel%3D%22stylesheet%22%20type%3D%22text/css%22%20href%3D%22https%3A//a248.e.akamai.net/secure.meetupstatic.com/style/widget.css%22/%3E%0A%0A%3C/head%3E%3Cdiv%20class%3D%22next-events%22%3E%3C/div%3E"));
+    var mup_widget = {
+      with_jquery: function(block) {
+        block(jQuery, document.getElementById("1455851994580"));
+      }
+    };
+    for (i in scripts) { eval(unescape(scripts[i])) }
+  });
+</script>
+
+
+
+[Propose additional meetup ideas in one of the Apache Apex groups!](http://apache-apex.meetup.com/)
\ No newline at end of file