SPO-Lab1 (Comparison of Open Source Patches)
Redis is an open-source in-memory database developed by Salvatore Sanfilippo and is currently sponsored by Redis Labs. It is one of the most popular key-value databases with support of different kinds of data structures including strings, maps, sorted sets & sets, lists, maps etc..
Library was released under BSD-3 Clause license, source code is published on github: https://github.com/antirez/redis
Redis provides extensive guidelines for code contribution standards. Users and developers report bugs or detailed feature requests through GitHub Issues Tracker. The community also uses redis subreddit (http://reddit.com/r/redis) and stack-overflow (http://stackoverflow.com/questions/tagged/redis) for communication.
For major requests, contributors are asked to create a post with detailed description on redis subreddit or drop a message to the mailing list with a proposal. Proposed features need to get an acknowledgement from the project leader before code is merged into the main repo. For minor fixes, users can just open a pull request on Github.
For Redis, I decided to track down this https://github.com/antirez/redis/pull/2134 PR as an example patch. Author of the code outlined proposed feature in PR comments and linked additional information in the description. He received a feedback a month later and was asked to fix some parts of his code as well as open an additional PR with documentation additions. Overall, It took more than one month for patch to get approved.
Kubernetes is a system for automating deployment, scaling and management of containerized applications. The library was originally designed by Google and its first version was released on July 21, 2015.
Kubernetes is licensed under Apache License 2.0 and its code base is hosted on github (see : https://github.com/kubernetes/kubernetes ). The repo has very active community: over 1,000 contributors and about 1,301,598 lines of code. The community seems to be quite welcoming towards new contributors (google devs use ‘help-wanted’ or ‘for-new-contributors’ labels for newcomers).
New bug reports or features proposals are submitted through GitHub Issues Tracker. Google provides extensive guidelines ( see https://github.com/kubernetes/community ) for code and contribution standards. Interesting fact, they make contributors sign Contributor License Agreement (CLA, either individual or corporate) prior to accepting pull requests (If you don’t do it, google bot will track you down).
I chose PR #51505 as an example (see https://github.com/kubernetes/kubernetes/pull/51505 ). The author referenced github issue in PR description (see https://github.com/kubernetes/kubernetes/issues/47889). Google devs approved code for testing with ’/ok-to-test’ comment ( this was picked up by a google bot that initiates automatic testing ). PR author was asked to modify some code and it was approved in less than 10 days (in total).
Overall, it seems like Redis has a lot of ‘stale’ issues and pull requests with no comments from repo maintainers (some open PRs are dating back to 2010…). If you decide to open a PR for Redis, there’s a good chance it will be ignored.
Unlike Redis, Kubernetes enforces more code standards and has established development flow that involves testing and code reviews. Kubernetes repo seems to be more structured and PR authors are almost 100% guaranteed to receive some feedback.