incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Update of "ServiceCombProposal" by njiang
Date Fri, 03 Nov 2017 23:41:12 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "ServiceCombProposal" page has been changed by njiang:
https://wiki.apache.org/incubator/ServiceCombProposal

New page:
= ServiceComb Proposal =

== Abstract ==

ServiceComb is a microservice framework that provides a set of tools and components to make
development and deployment of cloud applications easier. It provides functionalities such
as service contract enforcement, service registration, service discovery, load balance, service
reliability (latency and fault tolerance, flow control and graceful degradation, handler chain
tracing), eventual data consistency and so forth.

== Proposal ==

The goal of this proposal is to bring the existing ServiceComb codebase and existing developers
into the Apache Software Foundation (ASF) in order to build a vibrant, diverse and self-governed
open source community around the technology. 
So far the major contributors to the project have been affiliated with Huawei and Huawei is
planning to continue market and sell the Cloud Service Engine leveraging the ServiceComb framework.
ServiceComb is currently a registered trademark owned by Huawei, and Huawei is happy to donate
this trademark to Apache.

Huawei is submitting this proposal to donate the Service source code and associated artifacts
(documentation, web site content, wiki, etc.) to the Apache Software Foundation Incubator
under the Apache License, Version 2.0 and is asking Incubator PMC to establish an open source
community. These artifacts are currently available on GitHub at  https://github.com/ServiceComb/
and include:
 * Java Chassis: a multi-protocol (RPC & Restful) microservice framework which adopts
contract-first design
 * Service Center: a service registry that enforces service contract upon service registration
and discovery
 * Saga: a distributed coordinator to achieve eventual data consistency based on the paper
"Sagas" by Hector Garcia-Molina and Kenneth Salem
 * ServiceComb.github.io:  the website repo of ServiceComb.
 * The other projects will be moved to another place if ServiceComb is accepted by Apache
as an incubator project.

== Background ==

Microservices is a variant of the service-oriented architecture (SOA) architectural style
that structures an application as a collection of loosely coupled services. ServiceComb is
an open source microservice framework initiated as part of Huawei CSE projects (Cloud Service
Engine) which was developed in 2015. It is a part of ServiceStage of Huawei Public Cloud which
is one-stop PaaS platform for enterprises and developers. Besides ServiceStage, it’s  also
used in the Huawei Core Network IOT Platform and Huawei consumer cloud. The number of  companies
using ServiceComb to develop their enterprise applications, they are chinasofti.com, isoftstone.com,
pactera.com,zbj.com,movit-tech.com, and the number is over 5 and counting.

== Rationale ==

ServiceComb has been developed as a total, open source solution for developing cloud native
applications. So far ServiceComb has existed as a GitHub project with committers mostly working
for Huawei. We feel that moving it to a neutral organization like Apache, with its strong
governance model, is expected to help get more contributions from various organizations and
developers, who may be concerned by exclusive control of ServiceComb by Huawei.

== Initial Goals ==

Our initial goals are to bring ServiceComb into the ASF, transition internal engineering processes
into the open, and foster a collaborative development model according to the "Apache Way."
Huawei and the current contributors to ServiceComb plan to develop new functionality in an
open, community-driven way. To get there, the existing internal build, test and release processes
will be refactored to support open development.

 1. More specifically, our initial plan of moving ServiceComb to ASF is focused on:
 2. open up the governance model in order to simplify and streamline contributions from the
community
 3. move the existing codebase to Apache
 4. integrate with the Apache development process
 5. ensure all dependencies are compliant with Apache License version 2.0
 6. incremental development and releases per Apache guideline

== Current Status ==

=== Meritocracy ===

We intend to substantially expand the initial developer and user community by running the
project in line with the "Apache Way". Users and new contributors will be treated with respect
and welcomed. By participating in the community and providing quality patches/support that
move the project forward, they will earn merit. They will also  be encouraged to provide non-code
contributions (documentation, events, community management, etc.) and will gain merit for
doing so. Those with a proven support and quality track record will be encouraged to become
committers and PMC members.

=== Community ===
ServiceComb core java sdk is developed by Huawei Cloud team, and is widely used inside Huawei.
It also includes developers from other companies like Movitech, Qianmi, witmart.com, using
ServiceComb to develop MicroServices.
 
=== Core Developers ===
The core developers are a diverse group of developers, some of whom  are already experienced
open source developers.  There are at least one Apache Member as well as a number of experienced
developers.
 * Ning Jiang, ningjiang@apache.org, Apache Member, project architect.
 * Qi Zhang, zhangqi21@huawei.com, project architect
 * Xiang Yin, seam.yin@huawei.com, Java Chassis, Saga core developer
 * JiMin Wu, wujimin@huawei.com, Java Chassis core developer
 * Bao Liu, bao.liu@huawei.com, Java Chassis core developer
 * Mohammad Asif Siddiqui, mohammad.asif.siddiqui1@huawei.com, ServiceCenter core developer
 * Yihua Cui, cuiyihua@huawei.com, ServiceCenter core developer

=== Alignment ===
We have looked upon Apache as a model for building a strong developer community and worked
to absorb its essence and adopt its best practices. There are quite a number of Apache projects
we want to integrate with, such as Apache Camel, Apache ActiveMQ, in order to build a sophisticated
MicroService solution for the user.

== Known Risks ==
 
Development has been sponsored mostly by one single company. To facilitate the full transition
of the project to the Apache Way governance model, development must shift towards the meritocracy-centric
model of growing a community of contributors balanced with the needs for extreme stability
and core implementation coherency.

=== Orphaned Products ===
Huawei is fully committed to ServiceComb. Moreover, Huawei has a vested interest in making
ServiceComb succeed by driving its close integration with other ASF projects. We expect this
to further reduce the risk of orphaning the product.

=== Inexperience with Open Source ===
Huawei has been developing and using open source software since a long time. Some committer
have a proven track record in open source at Apache. Additionally, several ASF veterans agreed
to mentor the project and are listed in this proposal. The project will rely on their guidance
and collective wisdom to accelerate the transition of the entire team of initial committers
towards practicing the Apache Way.

=== Reliance on Salaried Developers ===
Most of the contributors are paid to work in Huawei Cloud Team. While they might wander from
their current employers, they are unlikely to venture far from their core expertise and thus
will continue to be engaged with the project no matter who their current employers are.

===  Relationship with other Apache products ===
ServiceComb is not related with other Apache products directly.

=== An excessive fascination with the Apache brand ===
While we intend to leverage the Apache ‘branding’ when talking to other projects as a
testament of our project’s ‘neutrality’, we have no plans for making use of Apache brand
in press releases nor posting billboards advertising acceptance of ServiceComb into Apache
Incubator.

=== Documentation ===
 
The following documentation is relevant to this proposal. Relevant portion of the documentation
will be contributed to the Apache ServiceComb project.

ServiceComb Website: http://servicecomb.io/
 
=== Initial Source ===
https://github.com/ServiceComb/ServiceComb-Java-Chassis
https://github.com/ServiceComb/ServiceComb-Saga
https://github.com/ServiceComb/service-center
https://github.com/ServiceComb/ServiceComb.github.io

=== Source and Intellectual Property Submission Plan ===
As soon as ServiceComb is approved to join Apache Incubator, the source code will be transitioned
via the Software Grant Agreement onto ASF infrastructure and in turn made available under
the Apache License, version 2.0. We know of no legal encumberments that would inhibit the
transfer of source code to the ASF.
 
=== External Dependencies ===

1. ServiceComb java-chassis depends on some Apache projects:
 * Commons Lang
 * Commons Codec
 * httpClient
 * CXF
 * Tomcat
 * Maven

and other open source projects (organized by license)

ALv2:
 * Netty
 * Spring
 * Spring-Boot
 * Zipkin
 * brave
 * protostuff
 * Jackson
 * Swagger
 * vertx
 * Netflix ribbon
 * Netflix hystrix
 * rxjava
 * Google guava
 * Google guice
 * Aspectj
 * Okhttp
 * hibernate-validator

MPL:
 * Javassist
 * MIT
 * Mockito
 * SLF4J
 * Bridge-method-annotation
 * EPL 1.0
 * JUnit
 * Logback
 
2.ServiceComb Saga depends on some Apache projects:
 * Commons IO
 * Commons lang
 * Maven
 
And other open source projects (organized by license)
ALv2:
 * servicecomb-java-chassis
 * awaitility
 * kamon
 * disruptor
 * rest-assured
 * wiremock
 * Aspectj

MPL:
 * Javassist

MIT:
 * Mockito
 * SLF4J
 * Bridge-method-annotation

EPL 1.0:
 * JUnit
 * Logback

As all dependencies are managed using Apache Maven, none of the external libraries need to
be packaged in a source distribution.
 
3.ServiceComb Service-Center depends on 
Open-Source Projects(Organized by License)
MIT
 * github.com/Knetic/govaluate
 * github.com/beorn7/perks
 * github.com/boltdb/bolt
 * github.com/couchbase/go-couchbase
 * github.com/couchbase/gomemcached
 * github.com/cupcake/rdb
 * github.com/dustin/go-humanize
 * github.com/karlseguin/ccache
 * github.com/kr/pty
 * github.com/lib/pq
 * github.com/mattn/go-runewidth
 * github.com/olekukonko/tablewriter
 * github.com/onsi/ginkgo
 * github.com/onsi/gomega
 * github.com/pelletier/go-toml
 * github.com/siddontang/go
 * github.com/siddontang/ledisdb
 * github.com/siddontang/rdb
 * github.com/ugorji/go
 * github.com/urfave/cli
 * github.com/xiang90/probing
 * github.com/bgentry/speakeasy
 * github.com/ghodss/yaml

BSD 3-Clause
 * github.com/beego/x2j
 * github.com/belogik/goes
 * github.com/cloudflare/golz4
 * github.com/edsrzf/mmap-go
 * github.com/golang/snappy
 * github.com/spf13/pflag
 * github.com/widuu/gojson
 * golang.org/x/crypto
 * golang.org/x/net
 * golang.org/x/text
 * golang.org/x/time
 * gopkg.in/cheggaaa/pb.v1

BSD 2-Clause
 * github.com/gorilla/websocket
 * github.com/syndtr/goleveldb

Apache-2.0
 * github.com/bradfitz/gomemcache
 * google.golang.org/genproto
 * github.com/astaxie/beego
 * gopkg.in/yaml.v2
 * github.com/cockroachdb/cmux
 * github.com/casbin/casbin
 * github.com/coreos/etcd
 * github.com/coreos/go-semver
 * github.com/coreos/go-systemd
 * github.com/jonboulle/clockwork
 * github.com/prometheus/client_golang
 * github.com/prometheus/client_model
 * github.com/prometheus/common
 * github.com/prometheus/procfs
 * github.com/hsluoyz/casbin
 * github.com/coreos/pkg
 * github.com/garyburd/redigo
 * github.com/spf13/cobra
 * github.com/google/btree
 * github.com/matttproud/golang_protobuf_extensions

Copyright (c) 2013, The GoGo Authors.
 * github.com/gogo/protobuf

Copyright 2010 The Go Authors.
 * github.com/golang/protobuf
 
Service-Center Frontend depends on
	Open-Source Projects(Organized by License)
MIT:
 * angular
 * angular-animate
 * angular-aria
 * angular-material-data-table
 * angular-material
 * angular-messages
 * angular-mocks
 * angular-resource
 * angular-route
 * angular-sanitize
 * angular-swagger-ui
 * angular-translate-loader-static-files
 * angular-translate
 * angular-ui-bootstrap
 * angular-ui-router
 * bootstrap-less-only
 * bootstrap-sass-official
 * chart.js
 * Components-font-awesome
 * mmumshad/angular-yamljs
 * jeremyfa/yaml.js

Apache-2.0:
 * Json-formatter

BSD
 * Angular-charts.js
 * JS Foundation
 * jQuery

== Required Resources ==
=== Mailing Lists ===
 * private@servicecomb.incubator.apache.org (moderated subscriptions)
 * commits@servicecomb.incubator.apache.org
 * dev@servicecomb.incubator.apache.org
 * issues@servicecomb.incubator.apache.org
 
=== Source Control ===
 * https://git-wip-us.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
 * https://git-wip-us.apache.org/repos/asf/incubator-servicecomb-service-center.git
 * https://git-wip-us.apache.org/repos/asf/incubator-servicecomb-saga.git
 * https://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website.git
 
=== Issue Tracking ===
JIRA Project ServiceComb

=== Initial Committers ===
 * Ning Jiang
 * Qi Zhang
 * Xiang Yin
 * JiMin Wu
 * Liubao
 * Mohammad Asif Siddiqui
 * Yihua Cui
 * Roman Shaposhnik
 * Jean-Baptiste Onofre
 * Timothy Chen

=== Additional Interested Contributors ===
 * Jian Zhang coswde@gmail.com
 * Bing Wang wangbb0701@gmail.com
 * Ven Jiang venjiang@gmail.com
 * GeekTJS josephyean@gmail.com
 * Li Zhou eacdy0000@126.com
 * Haiwei Zhang haiwei_zh@foxmail.com
 * Yetiea yetiea@gmail.com

=== Affiliations ===
 * Huawei: Ning Jiang, Qi Zhang, Xiang Yin, JiMin Wu, Liubao, Mohammad Asif Siddiqui, Yihua
Cui
 * Stealth: Roman Shaposhnik
 * Talend: Jean-Baptiste Onofré
 * Hyperpilot: Timothy Chen

=== Sponsors ===
Champion
 * Roman Shaposhnik[rvs@apache.org]
Nominated Mentors
 * Roman Shaposhnik[rvs@apache.org]
 * Jean-Baptiste Onofre [jbonofre@apache.org]
 * Timothy Chen[tnachen@apache.org]

=== Sponsoring Entity ===
 * We are requesting the Incubator to sponsor this project.

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message