Hi, Willem,

This is the historical issue we are going to resolve recently.

We've reduced the incompatible modifications on facebook/rocksdb [1] where
pegasus-rocksdb was forked, and I believe we will soon no longer need to
maintain
this repo. It will be completely used as an external dependency.

As for rdsn, since the original repo (fully MIT-licensed)
microsoft/rDSN [2] has been
unmaintained for a long time, we plan to merge the two repo together. We've
endeavored a lot
to improve and refactor rdsn. I'm not sure if we should ask microsoft for
any CLA for the
donation of our code.

[1] https://github.com/facebook/rocksdb
[2] https://github.com/XiaoMi/rdsn

Willem Jiang <willem.ji...@gmail.com> 于2020年6月8日周一 下午4:12写道:

> Hi,
>
> I just went through the proposal and found there are two source code
> repos[1][2] which are forked.
>
> Are you planning to donate these two repos into Apache as a part of
> Pegasus project?
> It makes the donation of the Pegasus complicated as we need to address
> this two code repo belonging issue first.
> Normally we just contribute the patch to the upstream as it consume
> lots of resources if we maintain the forked repo.
>
> [1] https://github.com/XiaoMi/rdsn
> [2] https://github.com/XiaoMi/pegasus-rocksdb
>
>
> Willem Jiang
>
> Twitter: willemjiang
> Weibo: 姜宁willem
>
> On Tue, Jun 2, 2020 at 3:49 PM 吴涛 <wutao.as.nevercha...@gmail.com> wrote:
> >
> > Dear Apache Incubator Community,
> >
> > I'd like to open up a discussion about incubating Pegasus at Apache. Our
> proposal can be found at https://pegasus-kv.github.io/community/proposal
> and is also included below.
> >
> > We are looking for possible Champion if anyone would like to volunteer.
> Thanks a lot!
> >
> > Best regards
> >   Tao Wu
> >
> > Pegasus Proposal
> >
> > == Abstract ==
> >
> > Pegasus is a distributed key-value storage system that is designed to be
> horizontally scalable, strongly consistent and high-performance.
> >
> > - Pegasus codebase: https://github.com/XiaoMi/pegasus
> > - Website: https://pegasus-kv.github.io
> >
> > == Proposal ==
> >
> > Pegasus is a key-value database that delivers low-latency data access
> together with horizontal scalability, using hash-based partitioning.
> Pegasus uses PacificA protocol for strong consistency and RocksDB as the
> underlying storage engine.
> >
> > We propose to contribute the Pegasus codebase and associated artifacts
> (e.g., documentation, website content, etc.) to the Apache Software
> Foundation, and aim to build an open community around Pegasus’s continued
> development in the ‘Apache Way’.
> >
> > == Background ==
> >
> > Apache HBase was recognized as mostly the only large-scale KV store
> solution in XiaoMi Corp until Pegasus came out in 2015. The original
> purpose of Pegasus was to solve the problems caused by HBase’s two-level
> architecture and implementation, including high latency because of Java GC
> and RPC overhead of the underlying distributed filesystem, and long
> failover time because of single point of RegionServer and recovery overhead
> of splitting and replaying the HLog files.
> >
> > Pegasus aims to fill the gap between Redis and HBase. As the former is
> in-memory, low latency, but does not provide a strong-consistency
> guarantee. And unlike the latter, Pegasus server is entirely written in C++
> and its read-write path relies merely on the local filesystem.
> >
> > Apart from performance requirements, we also need a storage system to
> ensure multiple-level data safety and support fast data migration among
> data centers, automatic load balancing, and online partition splitting.
> >
> > After investigating lots of existing storage systems in the open source
> world, we could hardly find a suitable solution to satisfy all the
> requirements. So the journey of Pegasus begins.
> >
> > === Rationale ===
> >
> > Pegasus is a mature and active project which has been widely adopted in
> XiaoMi. After the initial release of open source project in 2017, we have
> seen a great amount of interest across a diverse set of users and companies.
> >
> > Our experiences at committers and PMC members on other Apache projects
> have convinced us that having a long-term home at Apache foundation would
> be a great fit for the project, to ensure that processes and procedures are
> in place to keep project and community ‘healthy’ and free of any
> commercial, political or legal faults.
> >
> > === Initial Goal ===
> >
> > Move the existing codebase, website, documentation, and mailing lists to
> Apache-hosted infrastructure.
> > Work with the infrastructure team to implement and approve our code
> review, build, and testing workflows in the context of the ASF.
> > Incremental development and releases along with Apache guidelines.
> >
> > == Current Status ==
> >
> > Pegasus has been an open-source project on GitHub
> https://github.com/XiaoMi/pegasus since October 2017.
> >
> > === Meritocracy ===
> >
> > The intent of this proposal is to start building a diverse developer and
> user community around Pegasus following the ASF meritocracy model. We plan
> to invite more people as committers if they contribute to this project.
> >
> > === Releases ===
> >
> > Pegasus has undergone multiple public releases, listed here:
> https://github.com/XiaoMi/pegasus/releases.
> >
> > These old releases were not performed in the typical ASF fashion. We
> will adopt the ASF source release process upon joining the incubator.
> >
> > === Code Reviews ===
> >
> > Pegasus’s code reviews are currently public on Github
> https://github.com/XiaoMi/pegasus/pulls.
> >
> > === Community ===
> >
> > Pegasus seeks to develop developer and user communities during
> incubation.
> >
> > === Core Developers ===
> >
> > Currently most of the core developers of Pegasus are working in the
> KV-Storage Team of Xiaomi. Yingchun Lai is one of the Apache Kudu PMC
> members. Zuoyan Qin is an experienced open-source developer who created
> sofa-pbrpc in his last job in Baidu. Wei Huang is also an active
> contributor of Apache Doris (Incubating).
> >
> > - Zuoyan Qin (https://github.com/qinzuoyan)
> > - Yuchen He (https://github.com/hycdong)
> > - Tao Wu (https://github.com/neverchanje)
> > - Yingchun Lai (https://github.com/acelyc111)
> > - Wei Huang (https://github.com/vagetablechicken)
> > - Shuo Jia (https://github.com/Shuo-Jia)
> > - Liwei Zhao (https://github.com/levy5307)
> >
> > === Alignment ===
> >
> > Pegasus is aligned with several other ASF projects.
> >
> > We are working on a new feature to load data from the HDFS filesystem.
> Pegasus can also generate and store checkpoints to HDFS, for both backup
> and analysis purpose. We currently support offline analysis on checkpoints
> powered by Apache Spark.
> >
> > == Known Risks ==
> >
> > === Orphaned Products ===
> >
> > The core developers of XiaoMi’s Pegasus team work full time on this
> project. There is very little risk of Pegasus getting orphaned since at
> least one large company (XiaoMi) is extensively using it in production,
> with currently a scale of 70+ clusters, 800+ tables, and more than 70TB
> data. Furthermore, since Pegasus was open sourced at the beginning of
> October 2017, it has received more than 1200 stars and been forked more
> than 200 times, and also received some issues and pull requests from
> developers and users outside XiaoMi. We plan to extend and diversify this
> community further through Apache.
> >
> > === Inexperience with Open Source ===
> >
> > The core developers are all active users and followers of open source.
> They are already committers and contributors to the Pegasus Github project.
> All have been involved with the source code that has been released under an
> open source license, and several of them also have experience developing
> code in an open source environment.
> >
> > Several of the developers in XiaoMi’s storage team are committers and/or
> PMC members on other ASF projects (Kudu, HBase, Doris, etc.). They will
> guide others to practice the Apache Way together along with other incubator
> mentors.
> >
> > === Homogenous Developers ===
> >
> > The project has received some contributions from developers outside of
> XiaoMi, and is starting to attract a user community as well. We hope to
> continue to encourage contributions from these developers and community
> members, and grow them into committers as they have time to continue their
> contributions.
> >
> > === Reliance on Salaried Developers ===
> >
> > XiaoMi invested in Pegasus as a general key-value storage used in
> company widely. The core developers have been dedicated to this project for
> nearly five years.
> >
> > Besides, we look forward to attracting more people outside XiaoMi to
> contribute to this project, either payed engineers working on storage area,
> or individual volunteers, as long as they have enthusiasm for the Pegasus
> project.
> >
> > === An Excessive Fascination with the Apache Brand ===
> >
> > Pegasus is proposing to enter incubation at Apache in order to help
> efforts to diversify the committer-base, not so much to capitalize on the
> Apache brand. The Pegasus project is in production use already inside
> XiaoMi, but is not expected to be a XiaoMi product for external customers.
> As such, the Pegasus project is not seeking to use the Apache brand as a
> marketing tool.
> >
> > == Documentation ==
> >
> > Information about Pegasus can be found at
> https://github.com/XiaoMi/pegasus. The following links provide more
> information about Pegasus in open source:
> >
> > - Pegasus Website: https://pegasus-kv.github.io
> > - Codebase at Github: https://github.com/XiaoMi/pegasus
> > - Issue Tracking: https://github.com/XiaoMi/pegasus/issues
> > - Releases: https://pegasus-kv.github.io/releases
> > - Community Guide: https://pegasus-kv.github.io/community
> >
> > == Initial Source ==
> >
> > Besides the core codebase, Pegasus also hosts its side projects on
> Github under XiaoMi Group. Specifically, the initial source includes:
> >
> > Client libraries with different languages:
> >
> > - Java-Client: https://github.com/XiaoMi/pegasus-java-client
> > - Scala-Client: https://github.com/XiaoMi/pegasus-scala-client
> > - NodeJS-Client: https://github.com/XiaoMi/pegasus-nodejs-client
> > - Go-Client: https://github.com/XiaoMi/pegasus-go-client
> > - Python-Client: https://github.com/XiaoMi/pegasus-python-client
> >
> > Components of Pegasus:
> >
> > - rDSN: https://github.com/XiaoMi/rdsn
> > - RocksDB: https://github.com/XiaoMi/pegasus-rocksdb
> >
> > rDSN was initially a distributed framework developed by Zhenyu Guo from
> Microsoft, and we have heavily refactored and improved it to make it more
> fit for Pegasus. rDSN is MIT & Apache-2.0 dual-licensed. The code licensed
> Apache-2.0 belongs to XiaoMi and the copyright of MIT-licensed code is
> assigned to Microsoft. It’s in our plan to merge Pegasus and rDSN as one
> project.
> >
> > RocksDB is a Facebook-developed storage engine. Pegasus added some
> enhancements and modifications that may be incompatible with the original
> implementation. RocksDB is licensed under Apache 2.0 License.
> >
> > == External Dependencies ==
> >
> > Pegasus has the following external dependencies.
> >
> > - RocksDB (Apache)
> > - Apache Thrift (Apache Software License v2.0)
> > - Boost (Boost Software License)
> > - Apache Zookeeper (Apache)
> > - Google s2geometry (BSD)
> > - Google gflags (BSD)
> > - fmtlib (BSD)
> > - POCO (Boost Software License)
> > - rapidjson (Tencent)
> > - libevent (BSD)
> > - Google gperftools (BSD)
> > - cameron314/concurrentqueue (BSD)
> > - cameron314/readerwriterqueue (BSD)
> > - XiaoMi/galaxy-fds-sdk-cpp (No License)
> > - jupp0r/prometheus-cpp (MIT)
> > - curl (The curl license)
> > - nlohmann/json (MIT)
> > - abseil-cpp (Apache 2.0)
> > - antirez/linenoise (BSD-2)
> > - antirez/sds (BSD-2)
> >
> > Build and test dependencies:
> >
> > - Apache Maven (Apache Software License v2.0)
> > - cmake (BSD)
> > - Google gtest (Apache Software License v2.0)
> >
> > == Required Resources ==
> >
> > === Mailing List ===
> >
> > There are currently no mailing lists. The usual mailing lists are
> expected to be set up when entering incubation:
> >
> > - priv...@pegasus.incubator.apache.org
> > - d...@pegasus.incubator.apache.org
> > - comm...@pegasus.incubator.apache.org
> >
> > === Git Repositories ===
> >
> > Upon entering incubation, we want to move the existing repository from
> https://github.com/XiaoMi/pegasus to Apache infrastructure like
> https://github.com/apache/incubator-pegasus.
> >
> > === Issue Tracking ===
> >
> > Pegasus currently uses Github to track issues. Would like to continue to
> do so while we discuss migration possibilities with the ASF Infra committee.
> >
> > === Other Resources ====
> >
> > The existing code already has unit tests so we will make use of existing
> Apache continuous testing infrastructure. The resulting load should not be
> very large.
> >
> > == Source and Intellectual Property Submission Plan ==
> >
> > Most of the current code is Apache 2.0 licensed and the copyright is
> assigned to XiaoMi. If the project enters incubator, XiaoMi will transfer
> the source code & trademark ownership to ASF via a Software Grant Agreement.
> >
> > But due to historical issues, Pegasus was based on an MIT licensed code
> that was initially written by microsoft/rDSN, which has long been actively
> developed by Pegasus because the original project is unmaintained (modified
> code is licensed under Apache License 2.0). We aren’t sure if we should
> request Microsoft for any Contributor License Agreement (CLA) during the IP
> clearance process.
> >
> > == Initial Committers ==
> >
> > - Zuoyan Qin (https://github.com/qinzuoyan, qinzuoyan@xiaomi dot com)
> > - Weijie Sun (https://github.com/shengofsun, luckyweijie@gmail dot com)
> > - Yuchen He (https://github.com/hycdong, heyuchen@xiaomi dot com)
> > - Tao Wu (https://github.com/neverchanje, wutao1@xiaomi dot com)
> > - Yingchun Lai (https://github.com/acelyc111, laiyingchun@xiaomi dot
> com)
> > - Wei Huang (https://github.com/vagetablechicken, huangwei5@xiaomi dot
> com)
> > - Shuo Jia (https://github.com/Shuo-Jia, jiashuo1@xiaomi dot com)
> > - Liwei Zhao (https://github.com/levy5307, zhaoliwei@xiaomi dot com)
> > - Liuyang Cai (https://github.com/LoveHeat)
> >
> > == Affiliations ==
> >
> > Seven of the initial committers are employees of Xiaomi.
> >
> > == Sponsors ==
> >
> > === Champion ===
> >
> > TODO
> >
> > === Nominated Mentors ===
> >
> > TODO
> >
> > === Sponsoring Entity ===
> >
> > We are requesting the Incubator to sponsor this project.
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
> > For additional commands, e-mail: general-h...@incubator.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
> For additional commands, e-mail: general-h...@incubator.apache.org
>
>

Reply via email to