Week 1
Week 1: An Introduction to Open Source
The first time I heard about open source was when I had just known programming, someone told me that there are tons of open source projects on Github that I can learn from. So by my intuition, I thought that open source means that I can view the raw code of a project and I can use the code given to build up exactly the same thing myself. Now, speaking more precisely, by the material we are offered in class, open source “comes with a free software license, granting the recipient the rights to modify and redistribute the software” (wiki), some people also suggest that there are 10 criteria: “free redistribution, source code, derived works, integrity of the author’s source code, no discrimination against persons or groups, no discrimination against fields of endeavor, distribution of license, license must not be specific to a product, license must not restrict other software, and that license must be technology-neutral.” (Open Source Initiative)
We can think of many advantages of open source compared to closed source. For instance, open source means the spread of the corresponding project, which gains popularity. For customers, they welcome free products, and as for the company or the organization, gaining reputation is not a bad thing. Coming with popularity is the collection of many people’s wisdom. Since everyone can read and contribute to the source, bugs may be more easier to be discovered, and there is higher possibility that new ideas emerge. This helps to improve the project quickly. One example is a little joke that Windows developers may not even know what is wrong with the operating system when there is a bug because Windows is not open source. From a larger scale, we can also notice that existing open source project offers inspiration to potential great projects. People can learn from them, get inspired by them, build cool new things from them that even pushes the whole industry forward.
It is unquestionable that open source has plenty of advantages, but it also has some problems that we may want to be careful about. For example, since contributors to an open source project vary a lot, someone may want to check the quality of these contributions, especially when things are about essential issues like security. Another thing is the loose control on intellectual property, which is ingrained with open source. Companies can lose a lot benefit from making a project open source. So there is an issue of balance here.
Back to the main point, open source is still widely-used and welcomed in the industry. We have to admit that many open source projects have made our life easier. And here are some open source projects that have influenced me in some way.
- Linux I used cims server, which is based on the open source operating system Linux, for compiling my programs in Operating System course. Compared to Mac OS and Windows that we usually have on our computers, Linux is prudently written, liable and faster to a certain extend
- Wireshark Wireshark is an open source network protocol analyzer catching packets. With simple instructions, Wireshark can display what is going on through the internet. I used it for my Computer Networking course to see what is contained in a UDP or TCP packets, for example, how the lifetime is specified. It also helped me to see, for example, how handshake process is accomplished
- Scrapy I learned about Scrapy when I was trying to do a distributed web crawling project. I searched online about how to write such a project and found that most people suggested using scrapy since it provides a great basic framework and the task would be much easier compared to writing everything by oneself.
- Visual Studio Code I have been using VsCode from the very beginning of my programming experience. Its UI is well designed, it provides a lot of extensions that can meet most needs, for example, a markdown extension that helps me to edit this blog. Though I found it sometimes unfriendly when implementing C environment, overall, it is really helpful.
Based on the fact that many software is associated with open source to some extend, I believe this course would be helpful to let me have a vivid insight of the ongoing software industry. At the mean time, I believe it is valuable that I get familiar with corresponding tools like Git and Github. I am looking forward to stepping into the industry.