https://github.com/adobe/brackets/issues/10071
https://github.com/adobe/brackets/pull/10141
As the last release of the course, I decide to contribute to Adobe Brackets. It is because Brackets is a big project and I heard good things about it from Habib. When the first time I check out Bracket, I was surprised. Brackets code are really well organized, fully commented and clean. It made me revise my original impression of Adobe (since Adobe Flash). I become having passion to work for this project.
The bug I picked for this release is implementing file type detection for extensionless file. It was a quite challenging bug to me. I decided to implement for bash script only at the moment. At the beginning, it was not easy to find information about the syntax highlighting. After a while, I realized that Brackets uses CodeMirror to handles the languages and syntax highlighting. Though, I had no luck with it. I ended up getting hints from the file LanguageManager.js and Document.js.
Then, here came the question about the proper way to implement the functionality. After getting help from redmund on irc, I got the ideas which are keeping detection in LanguageManager.js and it should not depend on Document object. The first attempt of implementation wasn’t that good, but I think it was on the right track. After getting a code review by dangoor, I got a clear mind about the code to write. Instead of hard coding, adding new attribute to language object is proper way to normalize the detection process. At the end of Wednesday, I finally finish it and wait for new feedbacks.
It was such a good experience to contribute to Brackets. Since it is a serious project, it encouraged me to be more careful when writing my code. Also, there are doc comments, indention, and unit test which are needed to be done whenever a new feature implemented. Overall, I think I got interested in this kind of challenge project. It is helpful for learning.