6502 - Some Thoughts on Open Source Projects
Tags: opensource
Published: 2021-10-01 02:43:05

Here, I am going to pick two open source packages to talk and compare with. [Pandas](https://github.com/pandas-dev/pandas) VS. [Prefect](https://github.com/PrefectHQ/prefect).

These two open source packages are using two different licenses, where Pandas is licensed under the [BSD 3-Clause "New" or "Revised" License](https://github.com/pandas-dev/pandas/blob/master/LICENSE), and Prefect is licensed under the [Apache License 2.0 License](https://github.com/PrefectHQ/prefect/blob/master/LICENSE).

Pandas is a large active open source project in data engineer world, published in Github, and they hold [regular developer ZOOM meetings](https://pandas.pydata.org/docs/development/meeting.html) on the second Wednesday of each month at 18:00 UTC. In terms of Prefect, the core dev team has started a [start-up company](https://www.prefect.io/about/company/). This project remains as a public open source project on Github, but all contributors are more closely connected through Slack.

I believe Pandas is more open to new(random) contributers compared to Prefect. Here, I will demonstrate the differences between these two projects during the "code patch update" process, which is the issues submit and merge pull request steps in Github.

Using [Pandas issue #43659](https://github.com/pandas-dev/pandas/issues/43659) as an example, the whole process consists of issue submit, review/update issue, issue assignment, submit pull request, review/update pull request, and finally pull request merged. During the whole process, usually there are more than one reviewers, one contributor and one who found the issue. Particularly, this issue is about a function `rename` which can not find index values and it takes about 10 days to fix this issue. All participants during this process are very responsive and professional. First,  [@bustawin](https://github.com/bustawin) found and submitted the issue, and checked this issue is new, and found in laster version of Pandas. Then, [wojtek2kdev](https://github.com/wojtek2kdev) took this issue by submiting a [pull request](https://github.com/pandas-dev/pandas/pull/43667) to reproduce and test this issue (unit test), and fix this issue in another [commit](https://github.com/pandas-dev/pandas/pull/43667/commits/5534697c910a435e047524bbbe50a2a22a79e1e7). Then, a member in the core Pandas team asked him to confirm this bug on master branch. Meanwhile, two other code reviewers checked the code of the contributors and asked him to check for code style and write concise [test cases](https://github.com/pandas-dev/pandas/pull/43667/commits/7db707a787e46c5cd3338cc6bb86a32cce73c901) (several times). Eventually, the bug got fixed by adding a if-else condition in the right place to get the indexer and a corresponding unit test case was provided. At this stage, the contributor was asked to update the whatsnew document. This is the first pull request of this contributor submitted to this project. From my point of view, the community and core members of Pandas are very helpful during the process. 

The Prefect community is also very active. It is very interesting that the most of discussions of this project have moved to Slack. However, the code update process is very similar to Pandas previously. Using a recent [closed issue as an example](https://github.com/PrefectHQ/prefect/issues/5000), this issue was generated by [marvin-robot](https://github.com/marvin-robot) automatically from the chat history in Slack. This issue was also closed by [marvin-robot](https://github.com/marvin-robot) automatically. In this scenario, this whole code update process is not very open to new contributors.

Both projects are very professional and popular, contributors need to follow their development documentations on their website in order to make contributions successfully.