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
  • Sukesh A C, sukeshac@huawei.com, Java Chassis 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

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

Issue Tracking

JIRA Project ServiceComb

Initial Committers

  • Ning Jiang
  • Qi Zhang
  • Xiang Yin
  • JiMin Wu
  • Bao Liu
  • Mohammad Asif Siddiqui
  • Sukesh A C
  • 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, Bao Liu, Sukesh A C, 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.
  • No labels