Hi all,

I would like to open up a discussion about incubating Druid at Apache. I've
included a proposal in this mail and have also posted a draft at
https://wiki.apache.org/incubator/DruidProposal. More information about
Druid is also available on our project web site at: http://druid.io/
Thanks for your consideration!

Gian

= Druid Proposal =

== Abstract ==

Druid is a high-performance, column-oriented, distributed data store.

== Proposal ==

Druid is an open source data store designed for real-time exploratory
analytics on large data sets. Druid's key features are a column-oriented
storage layout, a distributed shared-nothing architecture, and ability to
generate and leverage indexing and caching structures. Druid is typically
deployed in clusters of tens to hundreds of nodes, and has the ability to
load data from Apache Kafka and Apache Hadoop, among other data sources.
Druid offers two query languages: a SQL dialect (powered by Apache Calcite)
and a JSON-over-HTTP API.

Druid was originally developed to power a slice-and-dice analytical UI
built on top of large event streams. The original use case for Druid
targeted ingest rates of millions of records/sec, retention of over a year
of data, and query latencies of sub-second to a few seconds. Many people
can benefit from such capability, and many already have (see
http://druid.io/druid-powered.html). In addition, new use cases have
emerged since Druid's original development, such as OLAP acceleration of
data warehouse tables and more highly concurrent applications operating
with relatively narrower queries.

== Background ==

Druid is a data store designed for fast analytics. It would typically be
used in lieu of more general purpose query systems like Hadoop !MapReduce
or Spark when query latency is of the utmost importance. Druid is often
used as a data store for powering GUI analytical applications.

The buzzwordy description of Druid is a high-performance, column-oriented,
distributed data store. What we mean by this is:

 * "high performance": Druid aims to provide low query latency and high
ingest rates possible.
 * "column-oriented": Druid stores data in a column-oriented format, like
most other systems designed for analytics. It can also store indexes along
with the columns.
 * "distributed": Druid is deployed in clusters, typically of tens to
hundreds of nodes.
 * "data store": Druid loads your data and stores a copy of it on the
cluster's local disks (and may cache it in memory). It doesn't query your
data from some other storage system.

== Rationale ==

Druid is a mature, active project with a large number of production
installations, dozens of contributors to each release, and multiple vendors
offering professional support. Given Druid's strong community, its close
integration with many other Apache projects (such as Kafka, Hadoop, and
Calcite), and its pre-existing Apache-inspired governance structure, we
feel that Apache is the best home for the project on a long-term basis.

== Current Status ==

=== Meritocracy ===
Since Druid was first open sourced the original developers have solicited
contributions from others, including through our blog, the project mailing
lists, and through accepting !GitHub pull requests. We have an
Apache-inspired governance structure with a PMC and committers, and our
committer ranks include a good number of people from outside the original
development team.

=== Community ===

The Druid core developers have sought to nurture a community throughout the
life of the project. We use !GitHub as the focal point for bug reports and
code contributions, and the mailing lists for most other discussion. To try
to make people feel welcome, we've also spelled this out on a "CONTRIBUTE"
link from the project page: http://druid.io/community/. Today we have an
active contributor base (a typical release has ~40 contributors) and
mailing list.

=== Core Developers ===

Druid enjoys good diversity of committer affiliation. The most active
developers over the past year are affiliated with four different companies:
Imply, Metamarkets, Yahoo, and Hortonworks. Many Druid committers are also
committers on other ASF projects as well, including Apache Airflow, Apache
Curator, and Apache Calcite. The original developers of Druid remain
involved in the project.

=== Alignment ===

Druid's current governance structure is Apache-inspired with a PMC and
committers chosen by a meritocratic process. Additionally, Druid integrates
with a number of other Apache projects, including Kafka, Hadoop, Hive,
Calcite, Superset (incubating), Spark, Curator, and !ZooKeeper.

== Known Risks ==

=== Orphaned products ===

The risk of Druid becoming orphaned is low, due to a diverse committer base
that is invested in the future of the project.

=== Inexperience with Open Source ===

Druid's core developers have been running it as a community-oriented open
source project for some time now, and many of them are committers on other
open source projects as well, including Apache Airflow, Apache Curator, and
Apache Calcite.

=== Homogenous Developers ===

Druid's current diversity of committer affiliation means that we have
become accustomed to working collaboratively and in the open. We hope that
a transition to the ASF helps Druid's contributor base become even more
diverse.

=== Reliance on Salaried Developers ===

Druid's user base and contributor base skews heavily towards salaried
developers. We believe this is natural since Druid is a technology designed
to be deployed on large clusters, and due to this, tends to be deployed by
organizations rather than by individuals. Nevertheless, many current Druid
developers have continued working on the project even through job changes,
which we take to be a good sign of developer commitment and personal
interest.

=== Relationships with Other Apache Products ===

Druid integrates with a number of other Apache projects. Druid internally
uses Calcite for SQL planning, and Curator and !ZooKeeper for coordination.
Druid can read data in Avro or Parquet format. Druid can load data from
streams in Kafka or from files in Hadoop. Druid integrates with Hive as an
option for SQL query acceleration. Druid data can be visualized by Superset
(incubating).

=== A Excessive Fascination with the Apache Brand ===

Druid is a successful project with a diverse community. The main reason for
pursuing incubation is to find a stable, long term home for the project
with a well known governance philosophy.

== Required Resources ==

=== Mailing lists ===

We would like to migrate the existing Druid mailing lists from Google
Groups to Apache.

 * druid-user@googlegroups -> us...@druid.incubator.apache.org
 * druid-development@googlegroups -> d...@druid.incubator.apache.org

=== Source control ===

Druid development currently takes place on !GitHub. We would like to
continue using !GitHub, if possible, in order to preserve the workflows the
community has developed around !GitHub pull requests.

=== Issue tracking ===
Druid currently uses !GitHub issues for issue tracking. We would like to
migrate to Apache JIRA at http://issues.apache.org/jira/browse/DRUID.

== Documentation ==

Druid's documentation can be found at http://druid.io/docs/latest/.

== Initial Source ==

Druid was initially open-sourced by Metamarkets in 2012 and has been run in
a community-governed fashion since then. The code is currently hosted at
https://github.com/druid-io/ and includes the following repositories:

 * druid (primary repository)
 * druid-console (web console for Druid)
 * druid-io.github.io (source for Druid's website at http://druid.io/)
 * tranquility (realtime stream push client for Druid)
 * docker-druid (Docker image for Druid)
 * pydruid (Python library)
 * RDruid (R library)
 * oss-parent (Maven POM files)

== Source and Intellectual Property Submission Plan ==

A complete set of the open source code needs to be licensed from the owning
organization to the Foundation. Commercial legal counsel for the owning
organization will review the standard Foundation licensing paperwork and
propose any updates as needed. This license will enable Apache to incubate
and manage the Druid project moving forward.

Other Druid paraphernalia to be transferred to Apache consists of:

 * !GitHub organization at https://github.com/druid-io/
 * Twitter account at https://twitter.com/druidio
 * "druid.io" domain name
 * "Druid" trademark assignment per Foundation standard paper.  The
trademark assignment paperwork shall be reviewed by the owning
organization's commercial and IP counsel
 * CLAs - all rights in the code licensed above should encompass the CLAs
that existed between developers and owning organization

A copyright license to the code, trademark assignment of Druid, and
transfer of other paraphernalia to Apache should be sufficient to cover all
rights required by Apache to operate the project.

== External Dependencies ==
External dependencies distributed with Druid currently all have one of the
following Category A or B licenses: ASL, BSD, CDDL, EPL, MIT, MPL; with one
exception: the optional Druid MySQL metadata store extension depends on
MySQL Connector/J, which is GPL licensed. Druid currently packages this as
a separate download; see our current presentation on:
http://druid.io/downloads.html. As part of incubation we intend to
determine the best strategy for handling the MySQL extension.

== Cryptography ==
Not applicable.

== Initial Committers ==

The initial committers for incubation are the current set of committers on
Druid who have expressed interest in being involved in Apache incubation.
Affiliations are listed where relevant. We may seek to add other committers
during incubation; for example, we would want to add any current Druid
committers who express an interest after incubation begins.

 * Charles Allen (char...@allen-net.com) (Snap)
 * David Lim (david.clarence....@gmail.com) (Imply)
 * Eric Tschetter (ched...@apache.org) (Splunk)
 * Fangjin Yang (f...@imply.io) (Imply)
 * Gian Merlino (g...@apache.org) (Imply)
 * Himanshu Gupta (g.himan...@gmail.com) (Oath)
 * Jihoon Son (jihoon...@apache.org) (Imply)
 * Jonathan Wei (jon....@imply.io) (Imply)
 * Maxime Beauchemin (maximebeauche...@gmail.com) (Lyft)
 * Mohamed Slim Bouguerra (slim.bougue...@gmail.com) (Hortonworks)
 * Nishant Bangarwa (nish...@apache.org) (Hortonworks)
 * Parag Jain (paragjai...@gmail.com) (Oath)
 * Roman Leventov (leventov...@gmail.com) (Metamarkets)
 * Xavier Léauté (xav...@leaute.com) (Confluent)

== Sponsors ==

 * Champion: Julian Hyde
 * Nominated mentors: Julian Hyde, P. Taylor Goetz, Jun Rao
 * Sponsoring entity: Apache Incubator

Reply via email to