In the last bit of time, I have been working in a small community of aspiring open source developers as we all learn the basics of contributing to open sourced projects in a smaller closed environment so that we might learn how to properly approach the problems and situations we may find ourselves encountering on a daily basis in the real environment.
We had all made similar projects to each other, and were tasked with finding two things within the projects of our peers: An improvement or bug fix we wish to make upon another project, as well as an addition of new functionality to another unrelated project. This would in turn, teach us about branches and how to work with them, pull requests, issues, and the overall workflow of contributing to an open source project, still within the safety of a closed environment for the time being.
Personally, I had found a conflict of key binds. A key bind used in a project of a peer of mine would perform two similar but different actions. The CTRL+S key bind is usually used to save items or documents, or even in the case of web browsers, entire pages. Naturally, it makes sense to use this key bind, but in this situation, using this key bind would both save the document, but also open up the save dialogue for the browser, potentially confusing any user who does not know that these may be entirely separate processes. They may be confused as to what the application is asking of them and may think they have saved incorrectly despite the popup window being unrelated to the application at hand. I had filed an issue for this and made a pull request that intercepts the event call to the browser key bind, ensuring the applications key bind is the only one that gets called, removing any and all doubt from a potential users mind. The issue and pull requests can be reviewed here:
Issue and Pull Request
The other project I worked on was the implementation of PaperCSS onto a note program to make the program look like it was being written on paper, as well as centering the program. I had figured the theming of it being a note program would work well with the stylistic additions of PaperCSS and worked upon implementing it by filing an enhancement addition to this project and opening a pull request from one of my forked branches to add this functionality to the project. I was given the go ahead from the repository owner, and started working on it. Those issues and pull requests can be found here:
As it was a community based experiment, that means I was also given the opportunity to see what it is like on the owner’s side of the PR. The requests come in unexpectedly, and the reviews are a major part of ensuring your repository gets held up to your standards. Luckily, GitHub’s diff tools and other great additions by the GitHub community make it easier to look through all the changes made by the contributors to your repository. In my case, I have had contributors who wanted to add enhancements to my code, who opened up their own PR’s. I then looked using the diff tools and ran their own branches to ensure all the code was working properly, made the appropriate comments, and merged the branches.
I also engaged in a bit of discussion on certain java script features while explaining my own contributions, as seen here.
This small microcosm of an open source development style is incredibly helpful and teaches foundations of how to work in Open Source. There is quite a bit more to learn, but this is a good start.