+1

On Fri, Jul 1, 2016 at 8:00 AM Jan van Doorn <j...@knutsel.com> wrote:

> Following the discussion thread, I would like to call a VOTE on accepting
> Traffic Control into the Apache Incubator.
>
> [] +1 Accept Traffic Control into the Apache Incubator
> [] +0 Abstain.
> [] -1 Do not accept Traffic Control into the Apache Incubator because ...
>
> This vote will be open for at least 1 week (extra long to accommodate
> holiday schedules).
>
> The proposal follows, you can also access the wiki page:
> https://wiki.apache.org/incubator/TrafficControlProposal
>
> Thanks,
> JvD
>
>
> = Traffic Control Proposal =
>
> == Abstract ==
>
> Traffic Control allows you to build a large scale content delivery network
> using
> open source.
>
> == Proposal ==
>
> The goal of this proposal is to bring the Traffic Control project into the
> Apache Software Foundation.
>
> == Background ==
>
> Initially built around Apache Traffic Server as the caching software,
> Traffic
> Control implements all functions of a modern CDN except the caching
> software:
>
>  * Traffic Router is a Java Tomcat application that routes clients to the
> closest
>  available cache on the CDN using both HTTP and DNS. By using consistent
> hashing
>  it sends requests for the same content to the same cache in a group of
> caches
>  working together in a location. It takes care of routing clients around
> hot
>  spots and problems in the CDN by using the information from Traffic
> Monitor with
>  regards to state of all the caches.
>
>  * Traffic Monitor is a Java Tomcat application that implements the CDN
> health
>  protocol. Every cache in the CDN is checked using HTTP for vital stats,
> and
>  based on these stats, caches are declared healthy or unhealthy. This
> information
>  is then used by Traffic Router to make its routing decisions.
>
>  * Traffic Ops is a Perl Mojolicious and jQuery UI application for
> management and
>  monitoring of all servers in the CDN. All server and content routing
> information
>  for the CDN is managed through Traffic Ops. It also exposes RESTful API
>  endpoints for consumption by tools and other applications.
>
>  * Traffic Stats is a Go application that is used to acquire and store
> statistics
>  about CDNs controlled by Traffic Control. Traffic Stats mines metrics from
>  Traffic Monitor’s JSON APIs and stores the data in InfluxDB, and
> visualizes them
>  using Grafana.
>
>  * Traffic Analytics is a new component we are starting to build for log
> file
>  analysis, based on Apache Kafka, Heka, and Elastic Search.
>
>
> Traffic Control was developed by Comcast Cable and released as open source
> under
> the Apache 2.0 license in April of 2015. Traffic Control is deployed at
> Comcast
> and other cable operators.
>
> The Traffic Control project was presented at ApacheCon NA 2016, see
> http://bit.ly/1UwMzmR for additional background information.
>
> == Rationale ==
>
> Even though the traffic on today's CDNs is strictly defined by open
> standards,
> and there are many open source implementations of caches available, CDNs
> are
> still proprietary. The current providers of CDN-as-a-product or
> CDN-as-a-service all have their own proprietary implementation of the
> control
> plane.  The CDN control plane of one vendor can't interoperate with the CDN
> control plane of another, creating a classic vendor-lockin for
> CDN-as-a-product
> customers. Traffic Control changes that. Emerging standards from IETF (CDNi
> working group) and the Streaming Video Alliance Open Caching working group
> need
> an open source reference implementation; Traffic Control will strive to be
> that.
>
> == Initial Goals ==
>
> Initial goals of transitioning to ASF is to grow and diversify the
> community,
> and to move to a more open and inclusive development model.
>
> == Current Status ==
>
> Traffic Control is functional and deployed at Comcast and other cable
> operators.
> In the past 12 months 10 major releases have been made.
>
> === Meritocracy ===
>
> Initial development was done at Comcast Cable. Since April 2015  it has
> been
> open source, and a handful outside contributors have been added.
>
> Our main goal during incubation is to try to create a more diverse group of
> contributors and users.
>
> === Community ===
>
> Traffic Control is being used by a number of cable companies and is being
> evaluated by a number of vendors and ISPs. Two vendors have created
> products
> based on Traffic Control and are active in the community.
>
> === Core Developers ===
>
> Most of the core developers of Traffic Control are currently at Comcast.
> The
> main goal of the incubation is to grow the developer and user group into a
> community beyond Comcast and US cable.
>
> === Alignment ===
>
> Traffic Control is closely aligned with Apache Traffic Server (ATS). The
> only
> supported cache in a Traffic Control CDN at this time is ATS.  One of our
> proposed mentors is a committers to ATS, and our proposed champion the ATS
> PMC
> chair.
>
> We don't want to become a sub-project of ATS though, because we believe we
> should add other caching proxies as they are deemed to be a valuable
> addition to
> the Traffic Control CDN.
>
> == Known Risks ==
>
> === Orphaned products ===
>
> Traffic Control is a new system that does not have wide adoption, but at
> least
> two major North American ISPs are committed to the continued development.
> Two
> vendors have used it to build products around and are active in the
> community.
>
> === Inexperience with Open Source ===
>
> One of the members of the team is an active Apache member and committer to
> ATS.
> The rest of the team has been, in various ways, active in the ATS
> community in
> recent years.
>
> === Homogenous Developers ===
>
> Possibly our weakest area, and one of the drivers for us to want to become
> part
> of Apache. Most people working on the project are at Comcast, or at least
> in the
> cable industry.  Even though we are currently open sourced, as it stands,
> it is
> not possible to add committers external to Comcast. We want to change
> that.  We
> would add 3 external committers as a part of entering the incubator.
>
> === Reliance on Salaried Developers ===
>
> Currently, Traffic Control relies solely on salaried employees.
>
> === Relationships with Other Apache Products ===
>
> See also Alignment. ATS is a big part of a Traffic Control CDN, but we
> also use
> Apache Tomcat, apache Maven, and a number of other apache libraries (see
> also
> external dependencies).
>
> === A Excessive Fascination with the Apache Brand ===
>
> We are more attracted to Apache as a philosophy than Apache as a brand. We
> definitely see value in the brand, but we feel that adopting the "Apache
> Way"
> is the most crucial factor for our long term viability.
>
> == Documentation ==
>
> Documentation is available at:
> http://traffic-control-cdn.net/docs/latest/index.html
>
> == Initial Source ==
>
> The source code can be found here:
> https://github.com/Comcast/traffic_control
>
> == Source and Intellectual Property Submission Plan ==
>
> The code is currently Apache 2.0 license, and was verified to have no
> intellectual property or license issues before being being released to open
> source by Comcast in 2015. Since then, extreme care has been taken to not
> add
> any dependencies or code that would change that.
>
> == External Dependencies ==
>
> Note that all dependencies except two have been verified to have a Apache
> compatible license. The two that are not compatible are MySQL (GPL), and
> we are
> removing that dependency in version 2.0, and jdnssec (GPL), which we are
> planning to replace in the future. A third, Heka, is Mozilla Public
> License 2.0,
> we are unsure if it is compatible (
> http://www.apache.org/legal/resolved.html
> seems to say it is category B, so it is OK to have the binary dependency),
> but
> the dependency is optional, and Heka will probably be replaced in the near
> future.
>
>  * Golang
>   * github.com/gorilla/handlers
>   * github.com/dgrijalva/jwt-go/
>   * github.com/tebeka/selenium
>   * github.com/lib/pq
>  * Apache Kafka
>  * Heka (https://github.com/mozilla-services/heka - MPL)
>  * ElasticSearch
>  * Java
>   * org.apache.wicket
>   * org.slf4j
>   * log4j
>   * org.eclipse.jetty.aggregate
>   * org.apache.commons
>   * commons-codec
>   * com.ning.async-http-client
>   * org.hamcrest
>   * junit
>   * org.powermock
>   * org.springframework
>   * javax.servlet
>   * com.fasterxml.jackson.core
>   * org.apache.tomcat
>   * org.json
>   * dnsjava
>   * jdnssec # GPL, needs to be removed
>   * com.google.guava
>   * org.apache.wicket
>   * com.googlecode.java-ipv6
>   * com.maxmind.geoip2  # maxmind commercial - optional
>   * com.google.http-client
>   * org.apache.httpcomponents
>   * org.eclipse.jetty.aggregate
>   * com.fasterxml.jackson.core
>   * com.quova.bff # neustar commercial - optional
>  * MySQL # Note: being replaced in version 2.0 with Postgres
>  * Postgres
>  * postgrest (https://github.com/begriffs/postgrest)
>  * Riak
>  * InfluxDB
>  * Grafana
>  * goose (https://bitbucket.org/liamstask/goose/)
>  * Perl packages
>   *  CPAN package 'Algorithm::C3'
>   *  CPAN package 'B::Hooks::EndOfScope'
>   *  CPAN package 'CPAN::Meta'
>   *  CPAN package 'CPAN::Meta::Check'
>   *  CPAN package 'CPAN::Meta::Requirements'
>   *  CPAN package 'CPAN::Meta::YAML'
>   *  CPAN package 'Carp'
>   *  CPAN package 'Carp::Clan'
>   *  CPAN package 'Class::Accessor'
>   *  CPAN package 'Class::Accessor::Chained::Fast'
>   *  CPAN package 'Class::Accessor::Grouped'
>   *  CPAN package 'Class::C3'
>   *  CPAN package 'Class::C3::Componentised'
>   *  CPAN package 'Class::Inspector'
>   *  CPAN package 'Class::Load'
>   *  CPAN package 'Class::Load::XS'
>   *  CPAN package 'Class::Method::Modifiers'
>   *  CPAN package 'Class::Unload'
>   *  CPAN package 'Clone'
>   *  CPAN package 'Compress::Raw::Bzip2'
>   *  CPAN package 'Compress::Raw::Zlib'
>   *  CPAN package 'Compress::Zlib'
>   *  CPAN package 'Config::Any'
>   *  CPAN package 'Config::General'
>   *  CPAN package 'Config::Properties'
>   *  CPAN package 'Context::Preserve'
>   *  CPAN package 'Data::GUID'
>   *  CPAN package 'DBD::SQLite'
>   *  CPAN packagerequires 'Time::HiRes' # required by DBD::mysql
>   *  CPAN package 'DBD::mysql', '==4.029'
>   *  CPAN package 'DBI'
>   *  CPAN package 'DBIx::Class'
>   *  CPAN package 'DBIx::Class::Core'
>   *  CPAN package 'DBIx::Class::EasyFixture'
>   *  CPAN package 'DBIx::Class::IntrospectableM2M'
>   *  CPAN package 'DBIx::Class::Schema'
>   *  CPAN package 'DBIx::Class::Schema::Loader'
>   *  CPAN package 'DBIx::Class::IntrospectableM2M'
>   *  CPAN package 'Data::Compare'
>   *  CPAN package 'Data::Dumper'
>   *  CPAN package 'Data::Dumper::Concise'
>   *  CPAN package 'Data::OptList'
>   *  CPAN package 'Data::Page'
>   *  CPAN package 'Date::Manip'
>   *  CPAN package 'DateTime::Format::ISO8601'
>   *  CPAN package 'Devel::GlobalDestruction'
>   *  CPAN package 'Devel::StackTrace'
>   *  CPAN package 'Devel::Symdump'
>   *  CPAN package 'Digest::MD5'
>   *  CPAN package 'Digest::SHA'
>   *  CPAN package 'Digest::SHA1'
>   *  CPAN package 'Digest::base'
>   *  CPAN package 'DirHandle'
>   *  CPAN package 'Dist::CheckConflicts'
>   *  CPAN package 'DynaLoader'
>   *  CPAN package 'Email::Valid'
>   *  CPAN package 'Encode'
>   *  CPAN package 'Encode::Locale'
>   *  CPAN package 'Env'
>   *  CPAN package 'Eval::Closure'
>   *  CPAN package 'Exporter'
>   *  CPAN package 'ExtUtils::CBuilder'
>   *  CPAN package 'ExtUtils::Install'
>   *  CPAN package 'ExtUtils::MakeMaker'
>   *  CPAN package 'ExtUtils::Manifest'
>   *  CPAN package 'ExtUtils::ParseXS'
>   *  CPAN package 'File::Basename'
>   *  CPAN package 'File::Copy::Recursive'
>   *  CPAN package 'File::Find'
>   *  CPAN package 'File::Find::Rule'
>   *  CPAN package 'File::Listing'
>   *  CPAN package 'File::Path'
>   *  CPAN package 'File::Spec'
>   *  CPAN package 'File::Stat'
>   *  CPAN package 'File::Spec::Functions'
>   *  CPAN package 'File::Temp'
>   *  CPAN package 'Getopt::Long'
>   *  CPAN package 'Getopt::Std'
>   *  CPAN package 'HTML::Entities'
>   *  CPAN package 'HTML::Parser'
>   *  CPAN package 'HTML::Tagset'
>   *  CPAN package 'HTTP::Cookies'
>   *  CPAN package 'HTTP::Daemon'
>   *  CPAN package 'HTTP::Date'
>   *  CPAN package 'HTTP::Headers::Util'
>   *  CPAN package 'HTTP::Negotiate'
>   *  CPAN package 'Hash::Merge'
>   *  CPAN package 'IO::Compress::Bzip2'
>   *  CPAN package 'IO::Compress::Gzip'
>   *  CPAN package 'IO::Uncompress::Unzip'
>   *  CPAN package 'IO::File'
>   *  CPAN package 'IO::HTML'
>   *  CPAN package 'IO::Handle'
>   *  CPAN package 'IO::Socket::SSL'
>   *  CPAN package 'IO::Socket::Timeout'
>   *  CPAN package 'IO::String'
>   *  CPAN package 'IPC::Cmd'
>   *  CPAN package 'Import::Into'
>   *  CPAN package 'JSON'
>   *  CPAN package 'JSON::PP'
>   *  CPAN package 'JSON::XS'
>   *  CPAN package 'LWP'
>   *  CPAN package 'LWP::MediaTypes'
>   *  CPAN package 'Lingua::EN::FindNumber'
>   *  CPAN package 'Lingua::EN::Inflect'
>   *  CPAN package 'Lingua::EN::Inflect::Number'
>   *  CPAN package 'Lingua::EN::Inflect::Phrase'
>   *  CPAN package 'Lingua::EN::Number::IsOrdinal'
>   *  CPAN package 'Lingua::EN::Tagger'
>   *  CPAN package 'Lingua::EN::Words2Nums'
>   *  CPAN package 'Lingua::GL::Stemmer'
>   *  CPAN package 'Lingua::Stem'
>   *  CPAN package 'Lingua::Stem::Fr'
>   *  CPAN package 'Lingua::Stem::It'
>   *  CPAN package 'Lingua::Stem::Ru'
>   *  CPAN package 'Lingua::Stem::Snowball::Da'
>   *  CPAN package 'Lingua::Stem::Snowball::No'
>   *  CPAN package 'Lingua::Stem::Snowball::Se'
>   *  CPAN package 'List::Compare'
>   *  CPAN package 'List::MoreUtils'
>   *  CPAN package 'Locale::Maketext::Simple'
>   *  CPAN package 'Log::Log4perl'
>   *  CPAN package 'MIME::Base64'
>   *  CPAN package 'Math::Round'
>   *  CPAN package 'MRO::Compat'
>   *  CPAN package 'Memoize'
>   *  CPAN package 'Memoize::ExpireLRU'
>   *  CPAN package 'Mixin::Linewise::Readers'
>   *  CPAN package 'Modern::Perl','==1.20150127'
>   *  CPAN package 'Module::Build'
>   *  CPAN package 'Module::Build::ModuleInfo'
>   *  CPAN package 'Module::CoreList'
>   *  CPAN package 'Module::Find'
>   *  CPAN package 'Module::Implementation'
>   *  CPAN package 'Module::Load'
>   *  CPAN package 'Module::Load::Conditional'
>   *  CPAN package 'Module::Metadata'
>   *  CPAN package 'Module::Pluggable'
>   *  CPAN package 'Module::Runtime'
>   *  CPAN package 'Module::ScanDeps'
>   *  CPAN package 'Mojo::Base'
>   *  CPAN package 'Mojo::JSON'
>   *  CPAN package 'Mojo::Log'
>   *  CPAN package 'Mojo::Upload'
>   *  CPAN package 'Mojo::UserAgent'
>   *  CPAN package 'Mojolicious', '==5.24'
>   *  CPAN package 'Mojolicious::Lite'
>   *  CPAN package 'Mojolicious::Plugin::AccessLog', '==0.004'
>   *  CPAN package 'Mojolicious::Plugin::Authentication', '==1.26'
>   *  CPAN package 'Mojolicious::Plugin::FormFields', '==0.04'
>   *  CPAN package 'Mojolicious::Plugin::Mail', '==1.3'
>   *  CPAN package 'MojoX::Log::Log4perl', '==0.10'
>   *  CPAN package 'Moo'
>   *  CPAN package 'Moose'
>   *  CPAN package 'NetPacket::IPv6'
>   *  CPAN package 'Net::FTP'
>   *  CPAN package 'Net::HTTP'
>   *  CPAN package 'Net::LDAP'
>   *  CPAN package 'Net::Pcap'
>   *  CPAN package 'Net::PcapUtils'
>   *  CPAN package 'NetAddr::IP'
>   *  CPAN package 'NetPacket'
>   *  CPAN package 'Number::Compare'
>   *  CPAN package 'POSIX'
>   *  CPAN package 'Package::DeprecationManager'
>   *  CPAN package 'Package::Stash'
>   *  CPAN package 'Package::Stash::XS'
>   *  CPAN package 'Params::Check'
>   *  CPAN package 'Params::Util'
>   *  CPAN package 'Parse::CPAN::Meta'
>   *  CPAN package 'Path::Class'
>   *  CPAN package 'Perl::OSType'
>   *  CPAN package 'Perl::Tidy','==20150815'
>   *  CPAN package 'PerlIO::utf8_strict'
>   *  CPAN package 'PerlIO::via::Timeout'
>   *  CPAN package 'Pod::Coverage::CountParents'
>   *  CPAN package 'Pod::Coverage::TrustPod'
>   *  CPAN package 'Pod::Escapes'
>   *  CPAN package 'Pod::Eventual::Simple'
>   *  CPAN package 'Pod::Find'
>   *  CPAN package 'Pod::Man'
>   *  CPAN package 'Pod::Simple'
>   *  CPAN package 'Pod::Usage'
>   *  CPAN package 'Role::Tiny'
>   *  CPAN package 'SQL::Abstract'
>   *  CPAN package 'Scalar::Util'
>   *  CPAN package 'Scope::Guard'
>   *  CPAN package 'Socket'
>   *  CPAN package 'Storable'
>   *  CPAN package 'String::CamelCase'
>   *  CPAN package 'String::ToIdentifier::EN'
>   *  CPAN package 'Sub::Exporter'
>   *  CPAN package 'Sub::Exporter::Progressive'
>   *  CPAN package 'Sub::Identify'
>   *  CPAN package 'Sub::Install'
>   *  CPAN package 'Sub::Name'
>   *  CPAN package 'Sub::Uplevel'
>   *  CPAN package 'Sys::Syslog'
>   *  CPAN package 'TAP::Formatter::Jenkins'
>   *  CPAN package 'Task::Weaken'
>   *  CPAN package 'Term::ReadPassword'
>   *  CPAN package 'Test'
>   *  CPAN package 'Test::Builder::Tester'
>   *  CPAN package 'Test::CPAN::Meta'
>   *  CPAN package 'Test::Deep'
>   *  CPAN package 'Test::Exception'
>   *  CPAN package 'Test::Fatal'
>   *  CPAN package 'Test::Harness'
>   *  CPAN package 'Test::Inter'
>   *  CPAN package 'Test::Mojo'
>   *  CPAN package 'Test::MockModule'
>   *  CPAN package 'Test::MockObject'
>   *  CPAN package 'Test::More'
>   *  CPAN package 'Test::NoWarnings'
>   *  CPAN package 'Test::Pod'
>   *  CPAN package 'Test::SharedFork'
>   *  CPAN package 'Test::TCP'
>   *  CPAN package 'Test::Tester'
>   *  CPAN package 'Test::Warn'
>   *  CPAN package 'Test::Requires'
>   *  CPAN package 'Text::Abbrev'
>   *  CPAN package 'Text::Balanced'
>   *  CPAN package 'Text::German'
>   *  CPAN package 'Text::Glob'
>   *  CPAN package 'Text::ParseWords'
>   *  CPAN package 'Text::Unidecode'
>   *  CPAN package 'Text::Wrap'
>   *  CPAN package 'Time::HiRes'
>   *  CPAN package 'Time::Local'
>   *  CPAN package 'Time::Out'
>   *  CPAN package 'Time::Seconds'
>   *  CPAN package 'Try::Tiny'
>   *  CPAN package 'URI'
>   *  CPAN package 'WWW::Curl::Easy'
>   *  CPAN package 'WWW::RobotRules'
>   *  CPAN package 'XSLoader'
>   *  CPAN package 'ExtUtils::Config'     # for Net::Riak
>   *  CPAN package 'Module::Build::Tiny'  # for Net::Riak
>   *  CPAN package 'Net::Riak'
>   *  CPAN package 'Crypt::OpenSSL::RSA'
>   *  CPAN package 'Crypt::OpenSSL::Bignum'
>   *  CPAN package 'Crypt::OpenSSL::Random'
>   *  CPAN package 'Net::DNS::SEC::Private'
>   *  CPAN package 'LWP::Protocol::https'
>   *  CPAN package 'Net::CIDR'
>   *  CPAN package 'Data::Validate::IP'
>
> == Cryptography ==
>
> There is no cryptographic code in Traffic Control. We leverage OpenSSL for
> all our cryptography needs.
>
> == Required Resources ==
>
> === Mailing lists ===
>
> We currently use "google groups" to communicate, but we would like to move
> that
> to ASF maintained mailing lists.
>
> Current groups / mailing lists:
>  * https://groups.google.com/forum/#!forum/traffic_control
>  * https://groups.google.com/forum/#!forum/traffic_control-announce
>  * https://groups.google.com/forum/#!forum/traffic_control-discuss
>
> Proposed ASF maintained lists:
>  * priv...@traffic-control.incubator.apache.org (moderated subscriptions)
>  * d...@traffic-control.incubator.apache.org
>  * comm...@traffic-control.incubator.apache.org
>  * notificati...@traffic-control.incubator.apache.org
>  * us...@traffic-control.incubator.apache.org
>
> === Subversion Directory ===
>
> We do not use SVN for source code revision control.
>
> === Git Repository ===
>
> We would like to use git-wip (git://git.apache.org/traffic_control.git).
>
>
> === Issue Tracking ===
>
> JIRA.
>
> === Other Resources ===
>
> We have automated tests and continuous integration configurations we would
> like
> to move away from Comcast.
>
> == Initial Committers ==
>
>  * Dan Kirkwood (dangogh at gmail.com)
>  * David Neuman (david.neuman64 at gmail.com)
>  * Dewayne Richardson (dewrich at gmail.com)
>  * Eric Friedrich (eric.friedrich84 at gmail.com)
>  * Hank Beatty (Hank.Beatty at cox.com)
>  * Jackie Heitzer (jackieheitzer at gmail.com)
>  * Jan van Doorn (jvd at knutsel.com)
>  * Jeff Elsloo (jeff.elsloo at gmail.com)
>  * Jeremy Mitchell (mitchell852 at gmail.com)
>  * Mark Torluemke (mark at torluemke.net)
>  * Steve Malenfant (steve.malenfant at cox.com)
>
> == Affiliations ==
>
>  * Comcast Cable: Dan Kirkwood, David Neuman, Dewayne Richardson, Jackie
> Heitzer,
>  Jan van Doorn, Jeff Elsloo, Jeremy Mitchell, Mark Torluemke
>
>  * Cox Communications: Hank Beatty, Steve Malenfant
>
>  * Cisco: Eric Friedrich
>
> == Sponsors ==
>
> === Champion ===
>
>  * Leif Hedstrom (zwoop at apache.org)
>
> === Nominated Mentors ===
>
>  * Phil Sorber (sorber at apache.org)
>  * Eric Covener (covener at apache.org)
>  * Daniel Gruno (humbedooh at apache.org)
>  * J. Aaron Farr (farra at apache.org)
>
> === Sponsoring Entity ===
>
> We request the Apache Incubator to sponsor this project.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
> For additional commands, e-mail: general-h...@incubator.apache.org
>
>

Reply via email to