Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7EBC0200AC6 for ; Sat, 7 May 2016 02:35:53 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 7D628160A0E; Sat, 7 May 2016 00:35:53 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 56A84160A0C for ; Sat, 7 May 2016 02:35:51 +0200 (CEST) Received: (qmail 29455 invoked by uid 500); 7 May 2016 00:35:50 -0000 Mailing-List: contact commits-help@streams.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@streams.incubator.apache.org Delivered-To: mailing list commits@streams.incubator.apache.org Received: (qmail 29446 invoked by uid 99); 7 May 2016 00:35:50 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 07 May 2016 00:35:50 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 47DBE18009B for ; Sat, 7 May 2016 00:35:49 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -3.221 X-Spam-Level: X-Spam-Status: No, score=-3.221 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id UjCGkOC9sAEk for ; Sat, 7 May 2016 00:35:39 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with SMTP id B43D95FC7B for ; Sat, 7 May 2016 00:35:34 +0000 (UTC) Received: (qmail 28629 invoked by uid 99); 7 May 2016 00:35:33 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 07 May 2016 00:35:33 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B0321E9432; Sat, 7 May 2016 00:35:32 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sblackmon@apache.org To: commits@streams.incubator.apache.org Date: Sat, 07 May 2016 00:35:47 -0000 Message-Id: <347b36a4fdd84e9a8097a61a53f24497@git.apache.org> In-Reply-To: <6263ae4f00cc4ebfac7ebd2f786a304f@git.apache.org> References: <6263ae4f00cc4ebfac7ebd2f786a304f@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [16/22] incubator-streams-master git commit: round of improvements - getting close archived-at: Sat, 07 May 2016 00:35:53 -0000 round of improvements - getting close Project: http://git-wip-us.apache.org/repos/asf/incubator-streams-master/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams-master/commit/ff129ea8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams-master/tree/ff129ea8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams-master/diff/ff129ea8 Branch: refs/heads/master Commit: ff129ea871bb0dd212fa429639c84d3eb10d97c4 Parents: 51456fb Author: Steve Blackmon @steveblackmon Authored: Tue Apr 26 16:09:17 2016 -0500 Committer: Steve Blackmon @steveblackmon Committed: Tue Apr 26 16:09:17 2016 -0500 ---------------------------------------------------------------------- pom.xml | 272 ++++++++++++++++++-- src/site/custom/project-info-report.properties | 2 +- src/site/markdown/dependency-info.md | 2 +- src/site/markdown/downloads.md | 7 +- src/site/markdown/faq.md | 56 ++-- src/site/markdown/integration.md | 3 +- src/site/markdown/release-setup.md | 32 +-- src/site/markdown/release.md | 50 ++-- src/site/markdown/source-repository.md | 3 +- src/site/markdown/website.md | 8 +- src/site/markdown/who.md | 10 + src/site/resources/PPMC_Combined.txt | 37 +++ src/site/resources/example.dot | 74 ++---- src/site/site.xml | 17 +- src/site/site_en.xml | 18 +- 15 files changed, 433 insertions(+), 158 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 509161d..2d52ec3 100644 --- a/pom.xml +++ b/pom.xml @@ -270,7 +270,7 @@ 3.0 2.6 2.8 - 1.0.2 + 1.0.3 0.11.5-M1 1.3.1 2.17 @@ -279,7 +279,7 @@ 1.5 0.9.8 1.4 - 2.8.1 + 2.9 2.7 1.9.4 2.3 @@ -662,6 +662,237 @@ + + + + commons-io + commons-io + ${commons-io.version} + + + commons-codec + commons-codec + ${commons-codec.version} + + + commons-validator + commons-validator + ${commons-validator.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.jsonschema2pojo + jsonschema2pojo-core + ${jsonschema2pojo.version} + jar + compile + + + commons-logging + commons-logging + + + + + com.typesafe + config + ${typesafe.config.version} + + + org.reflections + reflections + ${reflections.version} + + + org.hamcrest + hamcrest-all + ${hamcrest.version} + + + junit + junit + ${junit.version} + test + + + org.mockito + mockito-all + ${mockito.version} + test + + + org.powermock + powermock + ${powermock.version} + test + + + org.powermock + powermock-module-junit4 + ${powermock.version} + test + + + org.powermock + powermock-api-mockito + ${powermock.version} + test + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.slf4j + log4j-over-slf4j + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + log4j + log4j + ${log4j.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + com.google.guava + guava + ${guava.version} + + + io.netty + netty + ${netty.version} + + + joda-time + joda-time + ${joda-time.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version} + + + com.fasterxml.jackson.module + jackson-module-scala_${scala.version} + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + + + com.fasterxml + jackson-xml-databind + ${jackson-xml-databind.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-json-org + ${jackson.version} + + + com.fasterxml + aalto-xml + ${aalto.version} + + + nz.net.ultraq.jaxb + jaxb-utilities + ${jaxbutil.version} + + + org.json + json + ${orgjson.version} + + + org.clojure + clojure + ${clojure.version} + + + org.clojure + clojure-contrib + ${clojure.version} + + + org.apache.storm + storm-core + ${storm.version} + provided + + + + com.jayway.jsonpath + json-path + ${json-path.version} + + + com.jayway.jsonpath + json-path-assert + ${json-path.version} + + + org.apache.zookeeper + zookeeper + ${zookeeper.version} + + + log4j + log4j + + + + + + @@ -671,24 +902,22 @@ ${project.basedir}/src/site/custom/project-info-report.properties false + false false - - - - license - mailing-list - project-team - scm - help - issue-tracking - dependencies - dependency-info - dependency-management - distribution-management - plugin-management + + license + mailing-list + project-team + scm + issue-tracking + dependencies + dependency-info + dependency-management + distribution-management + plugin-management @@ -697,6 +926,7 @@ maven-site-plugin ${site.plugin.version} + true scm:svn:https://svn.apache.org/repos/infra/websites/production/streams/content/site/${project.version}/${project.artifactId} @@ -859,11 +1089,11 @@ - - com.github.ferstl - depgraph-maven-plugin - ${depgraph.plugin.version} - + + + + + http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/custom/project-info-report.properties ---------------------------------------------------------------------- diff --git a/src/site/custom/project-info-report.properties b/src/site/custom/project-info-report.properties index d702f7d..49033c8 100644 --- a/src/site/custom/project-info-report.properties +++ b/src/site/custom/project-info-report.properties @@ -257,7 +257,7 @@ report.dependency-management.column.version = Version report.dependency-management.column.classifier = Classifier report.dependency-management.column.type = Type report.dependency-management.column.license = License -report.dependency-management.intro.compile = The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run the submodule: +report.dependency-management.intro.compile = The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies are used widely across many streams modules: report.dependency-management.intro.provided = The following is a list of provided dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile the submodule, but should be provided by default when using the library: report.dependency-management.intro.runtime = The following is a list of runtime dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to run the submodule: report.dependency-management.intro.system = The following is a list of system dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile the submodule: http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/dependency-info.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/dependency-info.md b/src/site/markdown/dependency-info.md index 97c6af6..b674b8a 100644 --- a/src/site/markdown/dependency-info.md +++ b/src/site/markdown/dependency-info.md @@ -10,7 +10,7 @@ You should *not* import streams-master (depicted below), because it does not do Browse the "Project Modules" index of streams-project to find artifacts you might want to import. -[streams-project-modules](http://streams.incubator.apache.org/site/0.2-incubating/streams-project/modules.html "http://streams.incubator.apache.org/site/0.2-incubating/streams-project/modules.html") +[streams-project-modules](http://streams.incubator.apache.org/site/latest/streams-project/modules.html "http://streams.incubator.apache.org/site/latest/streams-project/modules.html")
http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/downloads.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/downloads.md b/src/site/markdown/downloads.md index f1fae55..4d1857a 100644 --- a/src/site/markdown/downloads.md +++ b/src/site/markdown/downloads.md @@ -1,7 +1,8 @@ +## Downloads + All downloads can be verified using Apache Streams code signing. -## Current Downloads | Artifact | Version | Source | asc | md5 | sha1 | -|---------|--------| -| streams-project | 0.2-incubating | [zip](https://dist.apache.org/repos/dist/release/incubator/streams/releases/streams-project/streams-project/streams-project-0.2-incubating-source-release.zip) | [asc](https://dist.apache.org/repos/dist/release/incubator/streams/releases/0.2-incubating/streams-project/streams-project-0.2-incubating-source-release.zip.asc) | [md5](https://dist.apache.org/repos/dist/release/incubator/streams/releases/0.2-incubating/streams-project/streams-project-0.2-incubating-source-release.zip.md5) | [sha1](https://dist.apache.org/repos/dist/release/incubator/streams/releases/0.2-incubating/streams-project/streams-project-0.2-incubating-source-release.zip.sha1) | +|----------|---------| +| streams-project | 0.2-incubating | zip | asc | md5 | sha1 | http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/faq.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/faq.md b/src/site/markdown/faq.md index 0cb87b5..0fc950e 100644 --- a/src/site/markdown/faq.md +++ b/src/site/markdown/faq.md @@ -2,7 +2,13 @@ ### Why should I adopt activity streams for my project? -Odds are the dataset you are working with is some combination of timestamped events and observations of entities and their relationships at various points in time. Activity Streams provides a simple yet powerful standard format for these types of data, regardless of their origin, publisher, or specific details. Activity Streams is a community-driven specification designed for interoperability and flexibility. By supporting activity streams you maximize the chance that a new data-source of interest to you will be compatible with your existing data, and that your data will be compatible with that of other communities working on similar projects. +Odds are the dataset you are working with is some combination of timestamped events and observations of entities and their relationships at various points in time. Activity Streams provides a simple yet powerful standard format for these types of data, regardless of their origin, publisher, or specific details. Activity Streams is a community-driven specification designed for interoperability and flexibility. By supporting activity streams you maximize the chance that a new data-source of interest to you will be compatible with your existing data, and that your data will be compatible with that of other communities working on similar projects. + +### What organizations exchange data in activity streams formats? + +A short list of organizations and products that support activity streams format is compiled [who](who.html "here"). + +If your organization supports activity streams, please let us know on the project mailing list. ### Why should I consider using Apache Streams for my project? @@ -25,11 +31,17 @@ Apache Streams is Apache Streams is not -* highly prescriptive or opinionated * one-size-fits-all +* prescriptive or opinionated about how it should be used * only useful for projects fully dedicated to activity streams datasets -The primary Streams git repository incubator-streams (org.apache.streams:streams-project) contains a library of modules inputs, outputs, and reusable components for transforming and enriching data streams. Similar modules can also be hosted externally - so long as they publish maven artifacts compatible with your version of streams, you can import and use them in your streams easily. +The primary Streams git repository incubator-streams (org.apache.streams:streams-project) contains + +* core interfaces and utilities +* plugins for transforming schemas into source code and other artifacts +* a library of modules for acquiring, transforming, and enriching data streams. + +Similar modules can also be hosted externally - so long as they publish maven artifacts compatible with your version of streams, you can import and use them in your streams easily. The streams community also supports a separate repository incubator-streams-examples (org.apache.streams:streams-examples) which contains a library of simple streams that are 'ready-to-run'. Look here to see what Streams user code look like. @@ -41,19 +53,23 @@ Frameworks make important but boring parts of systems and code just work so your If you are sure you can write code that is some combination of faster, more readable, better tested, easier to learn, easier to build with, or more maintainable than any existing framework (including Streams), maybe you should. -On the other hand, maybe you are under-estimating how difficult it will be to optimize across these factors and continuous improving those libraries. +But you are probably under-estimating how difficult it will be to optimize across all of these considerations, stay current with upgrades to underlying libraries, and fix whatever bugs are discovered. -Or maybe your time is just more valuable focused on your product rather than on plumbing. +Or maybe you are capable of doing it all flawlessly, but your time is just more valuable focused on your product rather than on plumbing -Or maybe by joining forces with others who have more than just a passing interest in running water, everyone can run better, faster, stronger code assembled with expertise including your own. +By joining forces with others who care about clean running water, everyone can run better, faster, stronger code: assembled with more diverse expertise for and tested in use cases beyond your own. ### How is streams different than "*processing framework*"? -You don't have to look hard to find great data processing frameworks for batch or for real-time. Storm, Spark, Samza, Flink, and Google Cloud Dataflow (soon-to-be Apache Beam) are mature and well-documented. NiFi and Apex are interesting new options. At the core these platforms help you specify inputs, outputs, and a directed graph of computation and then run your code at scale. +You don't have to look hard to find great data processing frameworks for batch or for real-time. Pig, Hive, Storm, Spark, Samza, Flink, and Google Cloud Dataflow (soon-to-be Apache Beam) are all great. Apex and NiFi are interesting newer options. And this list only Apache Foundation JVM projects! + +At the core these platforms help you specify inputs, outputs, and a directed graph of computation and then run your code at scale. -Streams supports a similar computational model, but is more focused on intelligently modeling the data that will flow through the stream than on stream execution. In this sense Streams is an alternative to avro or protocol buffers which prioritizes flexibility, expressivity, interoperability, and tooling ahead of speed or compute efficiency. +Streams use this computational model as well, but is more focused on intelligently and correctly modeling the data that will flow through the stream than on stream execution. In this sense Streams is an alternative to avro or protocol buffers - one which prioritizes flexibility, expressivity, interoperability, and tooling ahead of speed or compute efficiency. -Streams also seeks to make it easy to design and evolve streams, and to configure complex streams sensibly. Where many processing frameworks leave all business logic and configuration issues to the developer, streams modules are designed to mix-and-match. Streams modules expect to be embedded with other frameworks and are organized to make that process painless. +Streams seeks to make it easy to design and evolve streams, and to configure complex streams sensibly. Where many processing frameworks leave all business logic and configuration issues to the developer, streams modules are designed to mix-and-match. Streams modules expect to be embedded with other frameworks and are organized to make that process painless. + +Streams also contains a library of plug-and-play data providers to collect and normalize data from a variety of popular sources. ### How do I deploy Streams? @@ -67,8 +83,6 @@ Alternatively, components written to streams interfaces can be bound within othe Absolutely - and that will work great right up until the point where the requirements, the tools, or the way you want to index your data need to change. -A better long-term approach is to archive each data series you observe, and label each piece of data by source, connector, connector version, and execution. Once data is 'under management' in it's original form, normalize it into a format that fits your application with a set of core fields you don't ever expect to change. Then add metadata piece by piece using code and APIs managed by you and/or third-parties. Write these finished data points sequentially or simultaneouly to all of the places from which your applications will look them up. - ### What if I need data from "*specific API*"? No problem - anyone can write a Streams provider. The project contains providers that use a variety of strategies to generate near-real-time data streams, including: @@ -78,7 +92,7 @@ No problem - anyone can write a Streams provider. The project contains provider * polling * scraping -Providers can run continuously and pass-through new data, or they can work sequentially through a backlog of items. If you need to collect so many items that you can't fit all of their ids in the memory available to your stream, a stream provider can read an arbitrarily long sequence of ids and hand those off to other providers for collection. +Providers can run continuously and pass-through new data, or they can work sequentially through a backlog of items. If you need to collect so many items that you can't fit all of their ids in the memory available to your stream, it's pretty simple to sub-divide your backlog into small batches and launch a series of providers for collection using frameworks such as Flink or Spark Streaming. ### What if I want to keep data in "*unsupported database*"? @@ -92,15 +106,25 @@ If you just want to use streams providers to collect and feed incoming data into ### Can't I just use "*third-party SDK*" to do the same thing? -For any specific data collection, processing, or storage function there are several if not tens of basic implementations on GitHub. There may be language-specific libraries published by a vendor backing the technology in question. +Describe any specific data collection, processing, or storage function and there are probably several if not tens of basic implementations on GitHub. There may even be language-specific libraries published by a vendor with a commercial interest in a related technology. + +However, in general there are a set of tradeoffs involved when relying on these packages. -However, in general there are a set of tradeoffs involved relying on these package. They often have transitive dependencies. They may not use performant HTTP and JSON libraries. The object representations and lifecycle mechanisms they provide may not be consistent with the rest of your code. They may source configuration properties in a problematic or cumbersome fashion. Their licenses may be restrictive or undocumented. +* They often have transitive dependencies. +* They may not use performant HTTP and JSON libraries. +* The object representations and lifecycle mechanisms they provide may not be consistent with the rest of your code. +* They may source configuration properties in a problematic or cumbersome fashion. +* Their licenses may be restrictive or undocumented. -Streams goes to great lengths to regularize many of these issues so they are uniform across existing modules, and easy to reuse within new modules. Where quality java libraries exist, their most useful parts may be included within a streams module, while parts of their classpath are excluded. +Streams goes to great lengths to regularize many of these issues so that they are uniform across project modules, and easy to reuse within new and external modules. + +Where quality java libraries exist, their most useful parts may be included within a streams module, with unnecessary or difficult parts of their dependency tree excluded. ### Where do I start? -Navigate the list of 'Getting Started' recommendations in order to get up and running with streams. +Work your way through the list of 'Tutorial' items above to get up and running with streams. + +Then browse the 'Getting Started' items to learn more about how streams works and why. ### How can I help? http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/integration.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/integration.md b/src/site/markdown/integration.md index 5a79b5b..fe1b367 100644 --- a/src/site/markdown/integration.md +++ b/src/site/markdown/integration.md @@ -1,4 +1,5 @@ -##Overview +## Continuous Integration + This project uses [Jenkins](http://jenkins-ci.org/ "Jenkins") for continuous integration. ###streams-master http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/release-setup.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/release-setup.md b/src/site/markdown/release-setup.md index bde255b..1638643 100644 --- a/src/site/markdown/release-setup.md +++ b/src/site/markdown/release-setup.md @@ -9,28 +9,23 @@ Developers using Linux workstations can skip over the references to Cygwin. If u 1. Open a shell window. If using Windows, open a cygwin window. 2. Use ssh-keygen to create an SSH key. - Follow the latest steps and guides on the [ASF website](http://www.apache.org/dev/openpgp.html#generate-key) as you should **NOT** be using SHA1 and new keys **MUST** be at least 4096 bits. - ssh-keygen -t rsa -b 4096 - Program defaults should be fine. No passphrase is required for the ssh key generation. The keys will be saved in ~/.ssh/id_dsa (private) and ~/.ssh/id_dsa.pub (public). - - See [Authenticating By Public Key (OpenSSH)](http://www.networknewz.com/networknewz-10-20030707AuthenticatingbyPublicKeyOpenSSH.html) for a good description on why and how to perform this task. - + - Follow the latest steps and guides on the [ASF website](http://www.apache.org/dev/openpgp.html#generate-key) as you should **NOT** be using SHA1 and new keys **MUST** be at least 4096 bits. + - Program defaults should be fine. No passphrase is required for the ssh key generation. The keys will be saved in ~/.ssh/id_dsa (private) and ~/.ssh/id_dsa.pub (public). + - See [Authenticating By Public Key (OpenSSH)](http://www.networknewz.com/networknewz-10-20030707AuthenticatingbyPublicKeyOpenSSH.html) for a good description on why and how to perform this task. 3. SCP your SSH public key ~/.ssh/id_dsa.pub created in last step to ~/id_dsa.pub on people.apache.org. - + cd ~/.ssh scp id_dsa.pub @people.apache.org:id_dsa.pub -You will be prompted for your password. - + - You will be prompted for your password. 4. Use ssh to login to people.apache.org cd ~ ssh @people.apache.org - At this point, you will still be prompted for your password. - + - At this point, you will still be prompted for your password. 5. Create a ~/.ssh folder in your home directory on people.apache.org and change its file mode to 700. mkdir ~/.ssh @@ -41,16 +36,16 @@ You will be prompted for your password. mv ~/id_dsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys - * *Each public key in the authorized_keys spans only one line. - * For example: "ssh-dss AAAAB3NzaC1kc3MAAA ..... agBmmfZ9uAbSqA== dsa-key-20071107" - * '#' in the first column is a comment line.* + - Each public key in the authorized_keys spans only one line. For example: "ssh-dss AAAAB3NzaC1kc3MAAA ..... agBmmfZ9uAbSqA== dsa-key-20071107" + - *'#' in the first column is a comment line.* 7. Exit out of this ssh session. + 8. Start a new ssh session. No login should be required this time due to the private ssh key on your local box matching up with the public ssh key in your home directory (~/.ssh). ssh @people.apache.org - *If you are still prompted for a password, then you have not set up the ssh keys properly. Review the steps above and ensure that all of the steps were followed properly. Or, maybe the instructions are still not quite right and they still need some adjusting. In that case, please update the instructions accordingly.* + - If you are still prompted for a password, then you have not set up the ssh keys properly. Review the steps above and ensure that all of the steps were followed properly. Or, maybe the instructions are still not quite right and they still need some adjusting. In that case, please update the instructions accordingly.* ####Create a GPG key @@ -59,10 +54,9 @@ You will be prompted for your password. gpg --gen-key - The program's default values should be fine. For the "Real Name" enter your full name (ie. Stan Programmer). For the "e-mail address" enter your apache address (ie. sprogrammer@apache.org). You will also be required to enter a "passphrase" for the GPG key generation. Keep track of this as you will need this for the Release processing. - - * *The generated keys are stored in $HOME/.gnupg or %HOME%\Application Data\gnupg subdirectory.* - * *Save the content in this subdirectory to a safe media. This contains your private key used to sign all the Streams release materials.* + - The program's default values should be fine. For the "Real Name" enter your full name (ie. Stan Programmer). For the "e-mail address" enter your apache address (ie. sprogrammer@apache.org). You will also be required to enter a "passphrase" for the GPG key generation. Keep track of this as you will need this for the Release processing. + - *The generated keys are stored in $HOME/.gnupg or %HOME%\Application Data\gnupg subdirectory.* + - *Save the content in this subdirectory to a safe media. This contains your private key used to sign all the Streams release materials.* 3. Backup your home directory to another media || 4. Add your public key to the [SVN repository](https://svn.apache.org/repos/asf/incubator/streams/KEYS). See the commands describe at the beginning of this KEYS file to perform this task. The gpg key-pair is used to sign the published artifacts for the Streams releases. http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/release.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/release.md b/src/site/markdown/release.md index 0896b7a..6f8563a 100644 --- a/src/site/markdown/release.md +++ b/src/site/markdown/release.md @@ -1,10 +1,22 @@ -###Release Process +##Release Process There are two distinct sets of artifacts that are released on independent schedules: streams-master & streams-project. The streams-master is the project metadata and only needs to be released when there is a change in the structure of the project itself. The streams-project artifacts are comprised of all streams source code, binaries and a standalone demo. For release setup information, refer to [Release Setup Information](/release-setup.html). -All of the steps below apply to both the master and project releases, unless otherwise specified. As an alternative to releasing separately, the projects MAY be released together as one combined release. The steps for this can be found below. ([Combined Release Steps](#combined)) +All of the steps below apply to all streams repository releases, unless otherwise specified. As an alternative to releasing separately, the projects MAY be released together as one combined release. The steps for this can be found below. ([Combined Release Steps](#combined)) -####Common Release Steps +NOTE: + +Releases should always be built and published in the following order: + +* streams-master +* streams-project +* streams-examples + +In the instructions below, ${project.name} should be one of these top-level repository aggregator pom project names. + +As an alternative to releasing separately, the projects MAY be released together as one combined release. The steps for this can be found below. (Combined Release Steps) + +###Common Release Steps 1. Environment setup for releasing artifacts (same for SNAPSHOTs and releases) @@ -28,8 +40,8 @@ All of the steps below apply to both the master and project releases, unless oth 3. Create a release candidate branch from master. X should start at 1 and increment if early release candidates fail to complete the release cycle. - git checkout master - git branch {$project.version}-rcX + git checkout master + git branch ${project.name}-${project.version}-rcX 4. Verify the source has the required license headers before trying to release: @@ -39,16 +51,16 @@ All of the steps below apply to both the master and project releases, unless oth mvn -P apache-release release:prepare -DautoVersionSubmodules=true -DdryRun=true - The dry run will not commit any changes back to SCM and gives you the opportunity to verify that the release process will complete as expected. You will be prompted for the following information : + - The dry run will not commit any changes back to SCM and gives you the opportunity to verify that the release process will complete as expected. You will be prompted for the following information : - * Release version - take the default (should be ${project.version}-incubating) - * SCM release tag - *DO NOT TAKE THE DEFAULT* - ${project.version}-rcX - * New development version - take the default (should be ${project.version}-incubating-SNAPSHOT) - * GPG Passphrase + * Release version - take the default (should be ${project.version}-incubating) + * SCM release tag - *DO NOT TAKE THE DEFAULT* - ${project.artifactId}-${project.version}-rcX + * New development version - take the default (should be ${project.version}-incubating-SNAPSHOT) + * GPG Passphrase - *If you cancel a release:prepare before it updates the pom.xml versions, then use the release:clean goal to just remove the extra files that were created.* + - *If you cancel a release:prepare before it updates the pom.xml versions, then use the release:clean goal to just remove the extra files that were created.* - The Maven release plugin checks for SNAPSHOT dependencies in pom's. It will not complete the prepare goal until all SNAPSHOT dependencies are resolved. + - The Maven release plugin checks for SNAPSHOT dependencies in pom's. It will not complete the prepare goal until all SNAPSHOT dependencies are resolved. 6. Verify that the release process completed as expected 1. The release plugin will create pom.xml.tag files which contain the changes that would have been committed to SVN. The only differences between pom.xml.tag and it's corresponding pom.xml file should be the version number. @@ -112,14 +124,14 @@ All of the steps below apply to both the master and project releases, unless oth 3. Create an official release tag from the successful release candidate tag. - git checkout streams-project-${project.version}-rcX - git tag -a streams-project-${project.version} -m 'release tag streams-project-${project.version}' + git checkout ${project.name}-${project.version}-rcX + git tag -a ${project.name}-${project.version} -m 'release tag ${project.name}-${project.version}' git push origin :refs/tags/streams-project-${project.version} 4. Update the staged website - * Update the downloads page to add new version using the mirrored URLs + * Update the downloads page (downloads.md) to add new version using the mirrored URLs * Modify the URL for the prior release to the archived URL for the release - 5. Publish the website + 5. Publish the website (see [website](website.html "Website Management") * WAIT 24hrs after committing releases for mirrors to replicate * Publish updates to the download page 6. Delete the prior versions @@ -129,7 +141,7 @@ All of the steps below apply to both the master and project releases, unless oth 14. Update the JIRA versions page to close all issues, mark the version as "released", and set the date to the date that the release was approved. You may also need to make a new release entry for the next release. 15. Announcing the release * Make a news announcement on the streams homepage. - * Make an announcement about the release on the users@streams.apache.org, dev@streams.apache.org, and announce@apache.org list as per the Apache Announcement Mailing Lists page) + * Make an announcement about the release on the dev@streams.incubator.apache.org, and announce@incubator.apache.org list as per the Apache Announcement Mailing Lists page) ####Recovering from a vetoed release @@ -176,9 +188,9 @@ gpg: Signature made ... ####Combined Release In order to perform a combined release of the streams-master and streams-project trunks, do the following: - * Perform Steps 1-9 of the [release](#release-steps) for streams Master & streams Project + * Perform Steps 1-9 of the [release](#release-steps) for streams-master, streams-project, and streams-examples * Do NOT perform step 10 until steps 1-9 have been completed for BOTH projects * Build the streams-master FIRST - * When prompted to change the streams-project dependency on streams-master SNAPSHOT, do so to the release that you just built + * When prompted to change dependencies on SNAPSHOTs, do so to the corresponding releases that you just built * Execute the remaining steps using the following e-mail templates * [PMC Release Vote](PPMC_Combined.txt) http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/source-repository.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/source-repository.md b/src/site/markdown/source-repository.md index fe6f8b2..8f817fa 100644 --- a/src/site/markdown/source-repository.md +++ b/src/site/markdown/source-repository.md @@ -1,4 +1,5 @@ -##Overview +## Source Repositories + This project uses [Git](http://git.org/ "Git") for source control. Only project committers are permitted to push to git-wip-us.apache.org. http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/website.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/website.md b/src/site/markdown/website.md index 65826ea..b56ffc6 100644 --- a/src/site/markdown/website.md +++ b/src/site/markdown/website.md @@ -1,10 +1,10 @@ -### Website Information +## Website Management http://streams.incubator.apache.org is a set of interconnected websites generated by the maven site plugin. The front page, this page, and most pages linked in the top nav of the site are part of incubator-streams-master. -#### Website Content +### Website Content Pages, diagrams, and other hard-linkable resources are stored throughout the source tree. @@ -34,7 +34,7 @@ they can be linked to across projects and in external projects. This allows users to import HOCON from modules outside their sphere of control and adapt to changes upstream. -### Website Changes +### Website Updates The project website(s) are hosted by the Apache foundation and updated via SVN. @@ -108,7 +108,7 @@ Next, generate SVG resources for all DOT diagrams in the source tree Then, generate the site that will be published - mvn clean site:site site:stage + mvn clean install -Dmaven.test.skip.exec=true site:site site:stage At this point you can open target/staging/index.html and do a sanity check on the site you intend to publish. http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/markdown/who.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/who.md b/src/site/markdown/who.md new file mode 100644 index 0000000..ae55ea2 --- /dev/null +++ b/src/site/markdown/who.md @@ -0,0 +1,10 @@ +### Who uses activity streams? + +| Organization (Product) | Reference | +|------------------------|-----------| +| Atlassian (JIRA) | [jira](https://developer.atlassian.com/docs/atlassian-platform-common-components/activity-streams/consuming-an-activity-streams-feed "Consuming an Activity Streams Feed") | +| Google (Google Plus) | [google](https://developers.google.com/+/web/api/rest/latest/activities#resource-representations "Google+ Platform for Web") | +| IBM | [ibm](https://developer.ibm.com/open/activity-streams/ "Activity Streams") | +| Twitter (Gnip) | [gnip](http://support.gnip.com/articles/activity-streams-intro.html "Activity Streams Intro") | + +If your organization supports activity streams, please let us know on the project mailing list. http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/resources/PPMC_Combined.txt ---------------------------------------------------------------------- diff --git a/src/site/resources/PPMC_Combined.txt b/src/site/resources/PPMC_Combined.txt new file mode 100644 index 0000000..cf2a03d --- /dev/null +++ b/src/site/resources/PPMC_Combined.txt @@ -0,0 +1,37 @@ +to: streams-dev@incubator.apache.org +subject: [VOTE] Apache Streams 0.1-incubating Release Candidate + +I've created a combined ${release.version} release candidate, with the +following artifacts up for a vote: + +SVN source tag (r${release.master.revision}): +https://svn.apache.org/repos/asf/rave/rave-master-pom/tags/${release.version}/ + +SVN source tag (r${release.project.revision}): + +https://svn.apache.org/repos/asf/rave/tags/${release.version}/ + +Maven staging repo: +https://repository.apache.org/content/repositories/${release.master.repository}/ +https://repository.apache.org/content/repositories/${release.project.repository}/ + + +Source releases: +https://repository.apache.org/content/repositories/${release.master.repository}/org/apache/rave/rave-master/0.1-incubating/rave-master-0.1-incubating-source-release.zip +https://repository.apache.org/content/repositories/${release.project.repository}/org/apache/rave/rave-project/0.1-incubating/rave-project-0.1-incubating-source-release.zip + +Demo Artifacts +http://people.apache.org/builds/incubator/rave/${release.version}/rave-${release.version}-bin.tar.gz +http://people.apache.org/builds/incubator/rave/${release.version}/rave-${release.version}-bin.zip + +PGP release keys: +https://svn.apache.org/repos/asf/rave/KEYS + +Please take the time to verify the artifacts before casting your vote. + +Vote will be open for 72 hours. + +[ ] +1 approve +[ ] +0 no opinion +[ ] -1 disapprove (and reason why) + http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/resources/example.dot ---------------------------------------------------------------------- diff --git a/src/site/resources/example.dot b/src/site/resources/example.dot index 5b97773..941258b 100644 --- a/src/site/resources/example.dot +++ b/src/site/resources/example.dot @@ -9,26 +9,12 @@ digraph g { subgraph cluster_generators { label="generators"; - generators_twitter [label="https://api.twitter.com"] - generators_facebook [label="https://api.facebook.com"] generators_youtube [label="https://api.youtube.com"] generators_instagram [label="https://api.instagram.com"] } subgraph cluster_providers { label="providers"; - subgraph cluster_providers_twitter { - label="twitter"; - providers_twitter_userstream [label="TwitterUserstreamProvider"] - providers_twitter_userinfo [label="TwitterUserInformationProvider"] - providers_twitter_timeline [label="TwitterTimelineProvider"] - providers_twitter_following [label="TwitterFollowingProvider"] - } - subgraph cluster_providers_facebook { - label="facebook"; - providers_facebook_page [label="FacebookPageProvider"] - providers_facebook_pagefeed [label="FacebookPageFeedDataCollector"] - } subgraph cluster_providers_youtube { label="youtube"; providers_youtube_channel [label="YoutubeChannelProvider"] @@ -43,10 +29,6 @@ digraph g { subgraph cluster_processors { label="processors"; - processors_twitter_activity [label="ActivityConverterProcessor"] - processors_twitter_activityobject [label="ActivityObjectConverterProcessor"] - processors_facebook_activity [label="FacebookPageActivitySerializer"] - processors_facebook_activityobject [label="FacebookPostActivitySerializer"] processors_youtube_activity [label="YoutubeTypeConverter"] processors_youtube_activityobject [label="YoutubeTypeConverter"] processors_instagram_activity [label="InstagramTypeConverter"] @@ -55,40 +37,28 @@ digraph g { subgraph cluster_persisters_1 { label="persisters"; - persisters_kinesis_writer_activity [label="KinesisPersistWriter"] - persisters_kinesis_writer_activityobject [label="KinesisPersistWriter"] + persisters_kinesis_writer [label="KinesisPersistWriter"] + persisters_kinesis_writer [label="KinesisPersistWriter"] } + subgraph cluster_queues { + label="queues"; + kinesis [label="kinesis://" shape="box"] + } subgraph cluster_persisters_2 { label="persisters"; persisters_elasticsearch [label="ElasticsearchPersistWriter"] - persisters_graph [label="GraphPersistWriter"] persisters_hdfs [label="WebHdfsPersistWriter"] - persisters_kinesis_reader_activity [label="KinesisPersistReader"] - persisters_kinesis_reader_activityobject [label="KinesisPersistReader"] + persisters_kinesis_reader [label="KinesisPersistReader"] + persisters_kinesis_reader [label="KinesisPersistReader"] } subgraph cluster_dbs { label="dbs"; elasticsearch [label="elasticsearch"] hdfs [label="hdfs"] - neo4j [label="neo4j"] } - generators_twitter -> providers_twitter_userstream - generators_twitter -> providers_twitter_timeline - generators_twitter -> providers_twitter_following - generators_twitter -> providers_twitter_userinfo - providers_twitter_userinfo -> processors_twitter_activityobject [label="o.a.s.t.User"] - providers_twitter_userstream -> processors_twitter_activity [label="o.a.s.t.Tweet"] - providers_twitter_timeline -> processors_twitter_activity [label="o.a.s.t.Tweet"] - providers_twitter_following -> processors_twitter_activity [label="o.a.s.t.Follow"] - - generators_facebook -> providers_facebook_page - generators_facebook -> providers_facebook_pagefeed - providers_facebook_page -> processors_facebook_activityobject [label="o.a.s.f.Page"] - providers_facebook_pagefeed -> processors_facebook_activity [label="o.a.s.f.Post\no.a.s.f.Comment"] - generators_youtube -> providers_youtube_channel generators_youtube -> providers_youtube_video providers_youtube_channel -> processors_youtube_activityobject [label="o.a.s.y.Channel"] @@ -99,26 +69,18 @@ digraph g { providers_instagram_userinfo -> processors_instagram_activityobject [label="o.a.s.i.UserInfoData"] providers_instagram_media -> processors_instagram_activity [label="o.a.s.i.MediaFeedData"] - processors_twitter_activityobject -> persisters_kinesis_writer_activityobject [label="o.a.s.p.j.Page"] - processors_twitter_activity -> persisters_kinesis_writer_activity [label="o.a.s.p.j.Post\no.a.s.p.j.Share\no.a.s.p.j.Follow"] - processors_facebook_activityobject -> persisters_kinesis_writer_activityobject [label="o.a.s.p.j.Page"] - processors_facebook_activity -> persisters_kinesis_writer_activity [label="o.a.s.p.j.Post\no.a.s.p.j.Comment"] - processors_youtube_activityobject -> persisters_kinesis_writer_activityobject [label="o.a.s.p.j.Page"] - processors_youtube_activity -> persisters_kinesis_writer_activity [label="o.a.s.p.j.Video\no.a.s.p.j.Comment"] - processors_instagram_activityobject -> persisters_kinesis_writer_activityobject [label="o.a.s.p.j.Page"] - processors_instagram_activity -> persisters_kinesis_writer_activity [label="o.a.s.p.j.Photo\no.a.s.p.j.Video\no.a.s.p.j.Comment"] + processors_youtube_activityobject -> persisters_kinesis_writer [label="o.a.s.p.j.Page"] + processors_youtube_activity -> persisters_kinesis_writer [label="o.a.s.p.j.Video\no.a.s.p.j.Comment"] + processors_instagram_activityobject -> persisters_kinesis_writer [label="o.a.s.p.j.Page"] + processors_instagram_activity -> persisters_kinesis_writer [label="o.a.s.p.j.Photo\no.a.s.p.j.Video\no.a.s.p.j.Comment"] - persisters_kinesis_writer_activity -> kinesis -> persisters_kinesis_reader_activity [label="o.a.s.p.j.Activity"] - persisters_kinesis_writer_activityobject -> kinesis -> persisters_kinesis_reader_activityobject [label="o.a.s.p.j.ActivityObject"] + persisters_kinesis_writer -> kinesis -> persisters_kinesis_reader [label="o.a.s.p.j.Activity"] + persisters_kinesis_writer -> kinesis -> persisters_kinesis_reader [label="o.a.s.p.j.ActivityObject"] - persisters_kinesis_reader_activity -> persisters_elasticsearch - persisters_kinesis_reader_activity -> persisters_hdfs - persisters_kinesis_reader_activity -> persisters_graph - persisters_kinesis_reader_activityobject -> persisters_elasticsearch - persisters_kinesis_reader_activityobject -> persisters_hdfs + persisters_kinesis_reader -> persisters_elasticsearch + persisters_kinesis_reader -> persisters_hdfs - persisters_elasticsearch -> elasticsearch - persisters_hdfs -> hdfs - persisters_graph -> neo4j + persisters_elasticsearch -> elasticsearch [label="es://"] + persisters_hdfs -> hdfs [label="hdfs://"] } http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/site.xml ---------------------------------------------------------------------- diff --git a/src/site/site.xml b/src/site/site.xml index fbe2ff1..f958930 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -68,20 +68,13 @@ + - - - - - - - - @@ -90,6 +83,14 @@ + + + + + + + + http://git-wip-us.apache.org/repos/asf/incubator-streams-master/blob/ff129ea8/src/site/site_en.xml ---------------------------------------------------------------------- diff --git a/src/site/site_en.xml b/src/site/site_en.xml index b844c2d..5e6f85a 100644 --- a/src/site/site_en.xml +++ b/src/site/site_en.xml @@ -64,24 +64,18 @@ + + - - - - - - - - @@ -90,6 +84,14 @@ + + + + + + + +