- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
Software Portability and Optimization
Introduction
In this blog post, I will research two open-source projects with different
licences and discuss the procedure used by those projects to review and
accept fixes or new functionality from the community.
Projects/Packages:
SciKit-Learn
Scikit-Learn is an open-source Python module used in Machine Learning and
Big Data analysis. It is built on ScyPy Library and distributed
under the 3-Clause BSD license.
There are many clearly described ways to contribute to the Scikit-learn
module in the guide above. Some of the common are fixing a bug, adding a
feature, improving the documentation or test coverage. Code contribution is
performed via GitHub, where you can create a bug issue or post a pull
request for adding a new feature or functionality.
I will only examine the procedures of fixing a bug and contributing code.
To start, if you experience any issue, bug or misperformance while using the
SciKit-Learn package, you can submit a ticket to
GitHub Bug Tracker using the guidelines provided on the contributing documentation page.
You can even curate the issue resolving process and review proposed
fixes.
But if you want to fix a bug yourself or add a new feature, you need to
consider a pull request, which should meet the following requirements:
- Check the GitHub Bug Tracker for the duplicate work
- Fork and clone the GitHub repository
- Use the main branch to submit the work
- Make changes or add a feature
- Give your pull request a helpful title
- Make sure all tests passed
- Make sure the code is properly documented and does not violate PEP8
- Add non-regression tests
- Create a pull request to be reviewed
Example
In one of the closed issues, the developer proposes a change to the stack implementation, arguing the
speed of the current solution with benchmarks. There is also a discussion
that leads to the approvement and the extensive tests that ensure the
working state of the change.
Vue.js
Vue.js is a progressive JavaScript framework used in front-end web development. It was created from
scratch to be adoptable for any project and stack.
According to the guide above, you can contribute by fixing a bug or adding
a feature for the Vue.js framework using GitHub. The procedure consists of
the following steps:
- Create an issue on the Vue.js Issue page
- Fork and clone the GitHub repository
- Choose an appropriate branch(not main) and only work in the src folder
- Make changes or add a feature
- Commit changes with the proper naming convention
- Make sure all tests passed
- Create a pull request to be reviewed
However, there are minor details that differ from each use case. If it is a bug fix, you should consider adding tests if applicable. Additionally, there should be a comprehensive description(live demo preferred) and a title explaining an issue in the pull request.
To add a feature, you first need to open a suggestion issue and then wait for the community and core developers to approve it, so you can start implementing new functionality. And do not forget to add accompanying test cases, so it is likely to be integrated.
Example
Examining
one of the closed issues, we can see a convenient form that determines the scope of contribution
and adds details for a review. It is also clear that changes must pass all
the tests. After the required checks are completed, the pull request can be
sent for a community review and merged by a developer with write
access.
Conclusion
Both projects use GitHub as the source code platform that simplifies the
process of contributing. The advantages of such an approach are transparency
and agility. Additionally, both packages provide comprehensive videos
explaining how to contribute, improving the overall experience. Also, it
means that becoming a part of a community is much easier, but sometimes the
community might be rude to you and your contributions, so you need to keep
it in mind.
Author: Iurii Kondrakov
Email: deezzir@gmail.com
GitHub: github.com
p.s this blog post is created for the SPO600 Lab 1
Comments
Post a Comment