You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by ja...@apache.org on 2018/11/27 12:03:28 UTC
[3/3] samza git commit: Make older release pages better discoverable
Make older release pages better discoverable
Project: http://git-wip-us.apache.org/repos/asf/samza/repo
Commit: http://git-wip-us.apache.org/repos/asf/samza/commit/93be2944
Tree: http://git-wip-us.apache.org/repos/asf/samza/tree/93be2944
Diff: http://git-wip-us.apache.org/repos/asf/samza/diff/93be2944
Branch: refs/heads/1.0.0
Commit: 93be2944a1d40158594595eeae47f13d34d4543f
Parents: a6f34e8
Author: Jagadish <jv...@linkedin.com>
Authored: Tue Nov 27 03:59:13 2018 -0800
Committer: Jagadish <jv...@linkedin.com>
Committed: Tue Nov 27 04:01:56 2018 -0800
----------------------------------------------------------------------
docs/_menu/index.html | 17 +-
docs/_releases/0.10.md | 4 +-
docs/_releases/0.11.md | 2 +-
docs/_releases/0.12.md | 2 +-
docs/_releases/0.13.md | 2 +-
docs/_releases/0.14.md | 2 +-
docs/_releases/1.0.0.md | 500 +++++++++++++++++++++++++++++++++++++++++++
docs/_releases/older.md | 1 +
8 files changed, 521 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_menu/index.html
----------------------------------------------------------------------
diff --git a/docs/_menu/index.html b/docs/_menu/index.html
index a363bae..42707b2 100644
--- a/docs/_menu/index.html
+++ b/docs/_menu/index.html
@@ -11,9 +11,20 @@ items:
has_sub_subs: true
items_attributes: 'data-documentation="/learn/documentation/version/"'
- menu_title: Releases
- get_items: releases
- sort: 'order'
- reverse: true
+ items:
+ - menu_title: 1.0.0
+ url: '/releases/1.0.0'
+ - menu_title: 0.14
+ url: '/releases/0.14'
+ - menu_title: 0.13
+ url: '/releases/0.13'
+ - menu_title: 0.12
+ url: '/releases/0.12'
+ - menu_title: 0.11
+ url: '/releases/0.11'
+ - menu_title: '0.10'
+ url: '/releases/0.10'
+
- menu_title: Blog
url: '/blog/'
- menu_title: Community
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/0.10.md
----------------------------------------------------------------------
diff --git a/docs/_releases/0.10.md b/docs/_releases/0.10.md
index faae484..422f7b6 100644
--- a/docs/_releases/0.10.md
+++ b/docs/_releases/0.10.md
@@ -2,8 +2,8 @@
version: '0.10'
order: 10
layout: page
-menu_title: '0.10'
-title: Apache Samza 0.10
+menu_title: '0.10'
+title: Apache Samza 0.10 <a href="/learn/documentation/0.10/"> [Docs] </a>
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/0.11.md
----------------------------------------------------------------------
diff --git a/docs/_releases/0.11.md b/docs/_releases/0.11.md
index 75932f7..30224ac 100644
--- a/docs/_releases/0.11.md
+++ b/docs/_releases/0.11.md
@@ -3,7 +3,7 @@ version: '0.11'
order: 11
layout: page
menu_title: 0.11
-title: Apache Samza 0.11
+title: Apache Samza 0.11 <a href="/learn/documentation/0.11/"> [Docs] </a>
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/0.12.md
----------------------------------------------------------------------
diff --git a/docs/_releases/0.12.md b/docs/_releases/0.12.md
index 53a727e..d6a6530 100644
--- a/docs/_releases/0.12.md
+++ b/docs/_releases/0.12.md
@@ -3,7 +3,7 @@ version: '0.12'
order: 12
layout: page
menu_title: 0.12
-title: Apache Samza 0.12
+title: Apache Samza 0.12 <a href="/learn/documentation/0.12/"> [Docs] </a>
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/0.13.md
----------------------------------------------------------------------
diff --git a/docs/_releases/0.13.md b/docs/_releases/0.13.md
index 66dbcd8..9e1bfa4 100644
--- a/docs/_releases/0.13.md
+++ b/docs/_releases/0.13.md
@@ -3,7 +3,7 @@ version: '0.13'
order: 13
layout: page
menu_title: 0.13
-title: Apache Samza 0.13
+title: Apache Samza 0.13<a href="/learn/documentation/0.13/"> [Docs] </a>
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/0.14.md
----------------------------------------------------------------------
diff --git a/docs/_releases/0.14.md b/docs/_releases/0.14.md
index 3ee3923..99b95c5 100644
--- a/docs/_releases/0.14.md
+++ b/docs/_releases/0.14.md
@@ -3,7 +3,7 @@ version: '0.14'
order: 14
layout: page
menu_title: 0.14
-title: Apache Samza 0.14
+title: Apache Samza 0.14 <a href="/learn/documentation/0.14/"> [Docs] </a>
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/1.0.0.md
----------------------------------------------------------------------
diff --git a/docs/_releases/1.0.0.md b/docs/_releases/1.0.0.md
new file mode 100644
index 0000000..4d9d0d0
--- /dev/null
+++ b/docs/_releases/1.0.0.md
@@ -0,0 +1,500 @@
+---
+version: '1.0'
+order: 10
+layout: page
+menu_title: '1.0'
+title: Apache Samza 1.0 <a href="/learn/documentation/0.14/"> [Docs] </a>
+---
+<!--
+ 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.
+-->
+
+
+We're thrilled to announce to the release of Apache Samza 1.0.
+
+Today Samza forms the backbone of hundreds of real-time production
+applications across a multitude of companies, such as LinkedIn, VMWare,
+Slack, Redfin among many others. This release of Samza adds a variety of
+features and capabilities to Samza's existing arsenal, coupled with new
+and improved *documentation*, *code* snippets, *examples*, and a
+brand-new *website design*!\
+Here are a few selected highlights:
+
+- **Stable** high level APIs that allow creating complex processing
+ pipelines with ease.
+
+- **Beam Samza Runner** now marries Beam's best in class support for
+ EventTime based windowed processing and sophisticated triggering
+ with Samza's stable and scalable stateful processing model.
+
+- **Table API** that provides a common abstraction for accessing
+ remote or local databases. Developers are now able to "join" an
+ input event stream with such a Table.
+
+- Integration **Test Framework** to enable effortless testing of Samza
+ jobs without deploying a Kafka, Yarn, or Zookeeper cluster.
+
+- Support for **Apache Log4j2** allowing improved logging performance,
+ customization, and efficiency.
+
+- **Upgraded Kafka** client and consumer.
+
+- An interactive **shell for Samza SQL** for seamless formulation,
+ development, and testing of SamzaSQL queries.
+
+- **Side-input** support that allows using log-compacted data sources
+ to populate KV state for Samza applications.
+
+- **An improved website** with detailed documentation and lots of code
+ samples!
+
+In addition, Samza 1.0 brings numerous bug-fixes, upgrades, and
+improvements listed [below](#jiralist).
+
+## New features
+
+Samza 1.0 brings full-feature support for the following:
+
+### Improved Stable High Level APIs
+
+Samza 1.0 brings *Descriptor APIs* that allows applications to specify
+their input and output *systems* and *streams* in code. Samza's new
+*Context APIs* provide applications unified access to job-level,
+container-level, task-level, and application-level context and
+capabilities. This also simplifies Samza's *ApplicationRunner*
+interface.
+
+This API evolution requires a few simple modifications to application
+code, which we describe in detail in our [upgrade steps](#upgradesteps)
+
+#### Beam Runner Support
+
+Samza's Beam Runner enables executing Beam pipelines over Samza. This
+enables Samza applications to create complex processing pipelines that
+require event-time based processing, varying types of event-time based
+windowing, and more. This feature is supported in both the YARN and
+standalone deployment models.
+
+#### Joining Streams and Tables
+Samza's Table API provides developers with unified access to local
+and remote data sources such as *Key-Value stores* or *web services*,
+while providing features such as *rate-limiting, throttling,* and
+*caching* capabilities. This provides first-class API primitives for
+building Stream-Table join jobs. Learn more about the use, semantics,
+and examples for Table API [here](http://TODO).
+
+#### Test Samza without *ZK, Yarn* or *Kafka*
+
+Samza 1.0 brings a test framework that allows testing Samza applications
+using *in-memory* input and output. Users can now setup test and
+testing pipelines for their applications without needing to setup any
+other services, such as Kafka, YARN, or Zookeeper.
+
+#### Log4J2 support
+
+Samza now supports Apache Log4j 2 for system and application logging.
+Log4j 2 is an upgrade to Log4j that provides significant improvements
+over its predecessor, Log4j 1.x, such as better throughput and latency,
+custom log levels, and a pluggable logging architecture.
+
+#### Kafka upgrade
+
+This release upgrades Samza to use Kafka's high-level consumer (Kafka
+v0.11.1.62). This brings latency and throughput benefits for Samza
+applications that consume from Kafka, in addition to bug-fixes. This
+also means Samza applications can now better their utilization of the
+underlying Kafka cluster.
+
+#### SamzaSQL Shell
+
+SamzaSQL now provides a shell for users to type-in their SQL queries,
+while Samza does the heavy-lifting of wiring the inputs and outputs, and
+sizing the application in the background. This is great for testing and
+experimenting with queries while formulating your application-logic,
+specially suited for data-scientists and tinkerers.
+
+#### Side-inputs
+
+Samza 1.0 brings the ability to leverage existing log-compacted data
+sources (e.g., Kafka topics) to populate KV state for Samza
+applications. If your data processing pipeline involves Hadoop-to-Kafka
+push, this feature alleviates the need for your Samza job to create
+separate Kafka-topics to back KV state.
+
+#### Improved website, documentation, and samples
+
+We've re-designed the Samza website making it easier to find details on
+key Samza concepts and patterns. All documentation has been revised and
+rewritten, keeping in mind the feedback we got from our customers. We've
+revised and added sample application code to showcase Samza 1.0 and the
+use of its new APIs.
+
+<!-------------------------------------------------------------------------->
+## <a name="jiralist"></a> Enhancements and Upgrades
+
+This release brings the following enhancements, upgrades, and
+capabilities:
+
+##### New and improved documentation, code snippets, and examples
+
+### API enhancements and simplifications
+
+
+SAMZA-1789: unify ApplicationDescriptor and ApplicationRunner for high-
+and low-level APIs in YARN and standalone environment
+
+SAMZA-1804: System and stream descriptors
+
+SAMZA-1858: Public APIs for shared context
+
+SAMZA-1763: Add async methods to Table API
+
+SAMZA-1786: Introduce the metadata store abstraction
+
+SAMZA-1859: Zookeeper implementation of MetadataStore
+
+SAMZA-1788: Add the LocationIdProvider abstraction
+
+### Upgrades and Bug-fixes
+SAMZA-1768: Handle corrupted OFFSET file
+
+SAMZA-1817: Long classpath support for non-split deployments
+SAMZA-1719: Add caching support to table-API
+
+SAMZA-1783: Add Log4j2 functionality in Samza
+
+SAMZA-1868: Refactor KafkaSystemAdmin from using SimpleConsumer
+
+SAMZA-1776: Refactor KafkaSystemConsumer to remove the usage of
+deprecated SimpleConsumer client
+
+SAMZA-1730: Adding state validation in StreamProcessor before any
+lifecycle operation and group coordination
+
+SAMZA-1695: Clear events in ScheduleAfterDebounceTime on session
+expiration
+
+SAMZA-1647: Fix race conditions in StreamProcessor
+
+SAMZA-1371: Some Samza Containers get stuck at \"Starting BrokerProxy\"
+
+**Performance and Testing**
+
+SAMZA-1648: Integration Test Framework & Collection Stream Impl
+
+SAMZA-1748: Failure tests in the standalone deployment
+
+A source download of Samza 1.0 is available [here](http://TODO), and is
+also available in Apache's Maven repository.
+
+**Community Developments**\
+A [symposium](https://www.meetup.com/Stream-Processing-Meetup-LinkedIn/events/251481797)
+on Stream processing with Apache Samza and Apache Kafka was held on July
+19th and on October 23rd. Both were attended by more than 350
+participants from across the industry. It featured in-depth talks on
+Samza's Beam integration, its use at LinkedIn for real-time
+notifications, a talk on Kafka-replication at Uber, and Kafka cruise
+control, and many others.
+
+Samza was also the focus of a talk at [Strange Loop'18](https://www.youtube.com/watch?v=2y8QImf-RpI),
+focussing in depth on its scalability, performance, extensibility, and
+programmability.
+
+## <a name="upgradesteps"></a> Upgrading your application to Apache Samza 1.0
+
+Congratulations on your decision to upgrade to Samza 1.0!
+
+First, please follow the upgrade steps depending on if you've been using the
+low-level (i.e., Task) API or the high-level (i.e., the fluent) Samza API.
+
+### Overview of New APIs
+
+Instead of configuration, input and output systems are now defined using
+*SystemDescriptors.* Each SystemDescriptor encapsulates the vagaries of
+a particular type of system, e.g., Kafka, EventHub, Brooklin, etc. These
+system descriptors are then used to get *StreamDescriptors* for input
+and output streams, instead of \<however we think this was done
+before\>. Each *StreamDescriptor* encapsulates vagaries of the stream,
+such as its key-value spec, the serde it requires, etc.
+
+Applications access all Context-based objects, such as Stores,
+Configuration, MetricsRegistry, Tables, TaskModel, CallbackScheduler,
+etc, via a unified Context-API.
+
+**Upgrade Steps for Low-level API Applications**
+
+1. Update your application to use Samza version 1.0.0.
+
+2. Samza 1.0's Context API necessitates some minimal changes to the init method
+ of your Task class (the one that implements the **StreamTask**
+ interface).
+
+ The signature of the init method now has a single Context argument.
+
+ So, to obtain the, TaskModel and details (e.g., TaskName) in your task's init,
+ use context.getTaskContext().getTaskModel()
+
+ For the MetricsRegistry for the task, use context.getTaskContext().getTaskMetricsRegistry()
+
+ For the Application's configuration, use context.getJobContext().getConfig()
+
+ For KV stores, use context.getTaskContext().getStore(storeName)
+
+ For Table objects, use context.getTaskContext().getTable(tableId)
+
+ For scheduling a timer-callback from your task, use context.getTaskContext().
+ getCallbackScheduler().scheduleCallback(key, timestamp, callback).
+
+ For the ContainerModel, use context.getContainerContext().getContainerModel()
+
+ For the MetricsRegistry for the container, use context.getContainerContext().getContainerMetricsRegistry()
+
+3. In Samza 1.0, a Samza application's input, output, and
+ processing-task should be specified in code, rather than in
+ config. To do that, create a class (say MySamzaTaskApplication)
+ that implements the **TaskApplication** interface. In the
+ **describe()** method of this class do the following:
+
+ a. For each system your job inputs or outputs to (e.g., Kafka), define a **SystemDescriptor.**
+
+ For example, for Kafka,
+
+ ```
+ KafkaSystemDescriptor kafkaSystemDescriptor = new KafkaSystemDescriptor("kafka");
+ ```
+
+ Similarly, for other systems such as EventHub, use
+
+ ```
+ EventHubsSystemDescriptor eventHubsSystemDescriptor = new EventHubsSystemDescriptor("eventhub")
+ ```
+
+ For HDFS use a GenericSystemDescriptor,
+
+ ```
+ GenericSystemDescriptor hdfsDescriptor = new GenericSystemDescriptor("hdfs", "org.apache.samza.system.hdfs.HdfsSystemFactory");
+ ```
+
+ You may choose to use config variables for the system-names and the system-factories.
+
+ b. *For each input* of your job, create an input descriptor,
+
+ For example, for Kafka input,
+
+ ```
+ KafkaInputDescriptor<KV<String, PageViewEvent>> inputDescriptor = kafkaSystemDescriptor.getInputDescriptor("streamID", new JsonSerde<>());
+ ```
+
+ For EventHubs input,
+
+ ```
+ EventHubsInputDescriptor eventHubsInputDescriptor = eventHubsSystemDescriptor.getInputDescriptor("streamID", "namespace", "entityPath", new MyFavouriteSerde());
+ ```
+
+ For other input types simply use a GenericInputDescriptor, see samza-hello-world for examples for details on usage.
+
+ c. *For each output* of your job, create an output descriptor,
+
+ For example, for Kafka output,
+
+ ```
+ KafkaOutputDescriptor kafkaOutputDescriptor = kafkaSystemDescriptor.getOutputDescriptor("streamID", new JsonSerde<>());
+ ```
+
+ For EventHub output,
+
+ ```
+ EventHubsOutputDescriptor eventHubsOutputDescriptor = eventHubsSystemDescriptor.getOutputDescriptor("streamID", "namespace", "entityPath", new MyFavouriteSerde());
+ ```
+
+ For other output types simply use a GenericInputDescriptor, see
+ samza-hello-world for examples and details on usage.
+
+ d. Add the input and output descriptors by,
+
+ ```
+ appDesc.withInputStream(inputDescriptor);
+ appDesc.withOutputStream(outputDescriptor);
+ ```
+
+ e. Set the Task factory and point it to your pre-existing Task class.
+
+ ```
+ appDesc.withTaskFactory((StreamTaskFactory) () = new MyExistingSamzaTask());
+ ```
+
+4. In your application's config *set the following config* to point to the
+ TaskApplication class implemented above:
+
+ ```
+ <property name="app.class" value="class-path-to-TaskApplication-class">
+ ```
+
+ Note that this config is called **app.class** and **not** task.class.
+
+5. In your application's config set the following *task.systems* config. This
+ config should be a union of all input and output systems used by
+ your application.
+
+ For example, an application that reads or writes from *kafka*,
+ *wikipedia* should use:
+
+ ```
+ <property name="task.systems" value="kafka, wikipedia"/>
+ ```
+ Note that, the system names used here *should* **match the system names** used when creating the *SystemDescriptor* above in 3.a.
+
+6. *Remove* the *task.class* and *task.inputs* configs from your job's configuration. These configs are *not needed* in Samza 1.0.
+
+**Upgrade Steps for** **High-level API** **Applications**
+
+1. Update your application to use samza version 1.0.0.
+
+2. In Samza 1.0, a Samza application's input, output, and
+ processing-task is specified in code, rather than in config. So to
+ do that, update your **StreamApplication** class:
+
+ a. *For each system* your job inputs or outputs to, define a **SystemDescriptor**,
+ For each system your job inputs or outputs to (e.g., Kafka), define a **SystemDescriptor.**
+
+ For example, for Kafka,
+
+ ```
+ KafkaSystemDescriptor kafkaSystemDescriptor = new KafkaSystemDescriptor("kafka");
+ ```
+
+ Similarly, for other systems such as EventHub, use
+
+ ```
+ EventHubsSystemDescriptor eventHubsSystemDescriptor = new EventHubsSystemDescriptor("eventhub")
+ ```
+
+ For HDFS use a GenericSystemDescriptor,
+
+ ```
+ GenericSystemDescriptor hdfsDescriptor = new GenericSystemDescriptor("hdfs", "org.apache.samza.system.hdfs.HdfsSystemFactory");
+ ```
+ You may choose to use config variables for the system-names and the system-factories.
+
+ b. *For each input* of your job, define an input descriptor,
+ For example, for Kafka input,
+
+ ```
+ KafkaInputDescriptor<KV<String, PageViewEvent>> inputDescriptor = kafkaSystemDescriptor.getInputDescriptor("streamID", new JsonSerde<>());
+ ```
+
+ For EventHubs input,
+
+ ```
+ EventHubsInputDescriptor eventHubsInputDescriptor = eventHubsSystemDescriptor.getInputDescriptor("streamID", "namespace", "entityPath", new MyFavouriteSerde());
+ ```
+
+ For other input types simply use a GenericInputDescriptor, see samza-hello-world for examples for details on usage.
+
+ c. *For each output* of your job, define an output descriptor,
+
+ For example, for Kafka output,
+
+ ```
+ KafkaOutputDescriptor kafkaOutputDescriptor = kafkaSystemDescriptor.getOutputDescriptor("streamID", new JsonSerde<>());
+ ```
+
+ For EventHub output,
+
+ ```
+ EventHubsOutputDescriptor eventHubsOutputDescriptor = eventHubsSystemDescriptor.getOutputDescriptor("streamID", "namespace", "entityPath", new MyFavouriteSerde());
+ ```
+
+ For other output types simply use a GenericInputDescriptor, see
+ samza-hello-world for examples and details on usage.
+
+ d. Obtain the input and output stream objects by using the input and output descriptors,
+
+ For example,
+
+ ```
+ MessageStream<PageViewEvent> inputStream = appDesc.getInputStream(pageViewInputDescriptor)
+ ```
+
+ Or,
+
+
+ ```
+ MessageStream<GenericRecord> outputStream = appDesc.getOutputStream(outputDescriptor)
+ ```
+
+ The type of the MessageStream will depend on the type used in the respective input or output descriptor.
+
+ e. Update your fluent expressions to use the input and output streams from d.
+
+3. In Samza 1.0, the framework creates a computation graph of each
+ application, based on the application's fluent API logic.
+ Therefore, all *operators* and *user-defined functions (UDFs)*
+ used in an app's *describe()* method need to be specified in
+ static classes and methods.
+
+4. Add *task.systems* to your application configuration. This
+ config should be a union of all input and output systems used by
+ your application.
+
+ For example, an application that reads or writes from *kafka*,
+ *wikipedia* should use:
+
+ ```
+ <property name="task.systems" value="kafka, wikipedia"/>
+ ```
+ Note that, the system names used here *should* **match the system names**
+ used when creating the *SystemDescriptor* above in 2.
+
+5. *Remove* the *task.inputs* configs from your job's configuration.
+ These configs are *not needed* in Samza 1.0.
+
+6. If you are implementing InitableFunction, then you will need to
+ make a change, since it now only has a single Context argument.
+
+ a. Samza 1.0's context API necessitates some minimal changes to the init method.
+ The signature of the init method now has a single Context argument.
+
+ So, to obtain the, TaskModel and details (e.g., TaskName) in your task's init,
+ use context.getTaskContext().getTaskModel()
+
+ For the MetricsRegistry for the task, use context.getTaskContext().getTaskMetricsRegistry()
+
+ For the Application's configuration, use context.getJobContext().getConfig()
+
+ For KV stores, use context.getTaskContext().getStore(storeName)
+
+ For Table objects, use context.getTaskContext().getTable(tableId)
+
+ For scheduling a timer-callback from your task, use context.getTaskContext().
+ getCallbackScheduler().scheduleCallback(key, timestamp, callback).
+
+ For the ContainerModel, use context.getContainerContext().getContainerModel()
+
+ For the MetricsRegistry for the container, use context.getContainerContext().getContainerMetricsRegistry()
+
+ b. If you are using ContextManager, then you will need to use
+ ApplicationContainerContextFactory and/or
+ ApplicationTaskContextFactory instead. You can access your
+ application-defined context(s) in InitiableFunction.init
+ through the Context\#getApplicationContainerContext and/or
+ Context\#getApplicationTaskContext.
+
+
+
+**Upgrade Steps for Samza SQL**
+
+No changes are required for upgrading your application Samza 1.0.
http://git-wip-us.apache.org/repos/asf/samza/blob/93be2944/docs/_releases/older.md
----------------------------------------------------------------------
diff --git a/docs/_releases/older.md b/docs/_releases/older.md
index 87dc459..42e0c54 100644
--- a/docs/_releases/older.md
+++ b/docs/_releases/older.md
@@ -1,4 +1,5 @@
---
+exclude_from_loop: true # useful for drafts
version: '-1000'
order: -1000
layout: page