Open Source Software
Open Source Software
December 31, 2020
As you may know software can be licensed in a variety of methods. There are two main categories of license that can be applied to software: Free & Open Source Software (FOSS) and Proprietary Software (or closed source).
This article is not going to discuss the different license types available under each category, the benefits and drawbacks of each category, or when to choose a specific licensing model; rather, as the title suggests I will be discussing open source software and its importance in modern day software development.
As someone who has been developing software for quite some time now, I have seen the landscape of creating applications shift in a large way towards open-source (and I think that’s great). In days gone by performing “simple” tasks such as JSON serialization and deserialization would have been considered a significant undertaking. Thanks to open-source software this is now a trivial task that is built into, amongst other languages, the .NET ecosystem (in this example mainly thanks to James Newton-King). And that’s exactly what I’m driving at, concepts and ideas in software development have a lifecycle.
This lifecycle in software is the transition of a concept or idea from being proprietary to becoming open-source. When something new is created there’s a good chance that it will be used by someone to make money (and that’s ok). After this others will figure out similar methods, then often times someone or a group of people will release a similar method and open-source it. Finally, for concepts and ideas that become a fundamental part of how applications are developed the method may be integrated into a language or framework.
In my opinion, the change to open-source is when the development community as a whole really stands to advance. As the amount of content available under open-source licensing increases, the time it takes to develop a new application should continue to decrease. Open source tools, plugins, and packages allow developers to maintain focus on the function of the project they are working on. This leads to better software that is easier to create, test, deploy, and maintain. As a result developers have more time to innovate and make cool stuff happen.
I also believe that as developers, whether independent or part of a company, we all have a responsibility to contribute to the open source community. Whether large or small, I would encourage anyone in the software industry to be a part of the open source community. You may be pleasantly surprised.
My Open Source Tools
Here are some open source tools that I have been working on for the past while or plan to release in the near future. These tools have been developed using .NET Standard 2.1 in C# as that provides access to many modern language features and can run on a large variety of devices and operating systems. I created these tools not because other solutions do not exist or are not well built, there are alternatives to these libraries. These libraries were created to have something based on a relatively modern version of C# that is lightweight, flexible, and cross-platform. Hopefully some of these tools will make the lives of other developers a bit easier.
The Easy Password Validator tool was created to provide a C# library that can run across different types of application. Whether Web API, Blazor Client-Side, or a good ol’ .NET Framework desktop application, this is a tool that provides developers with the ability to easily analyze passwords that are provided by a user in a way that is meaningful to the application at hand. By building in flexibility for the developer to define what a good password looks like the library can be implemented in various situations. For example, the type of password required for a user logging into a website will require a much greater level of security than the type of password required for a user logging into a piece of industrial machinery. The library should also serve to assist end-users to create passwords that are easy to remember and hard to guess.
The Easy Logger tool again aims to provide a C# library that can run across different types of application. Recording logs can be instrumental in the debug process for developers; but, when unable to record logs in a way that is meaningful to the application at hand, the debug process can become much more difficult. Logs must be recorded in a way that they can be analyzed to retrieve detailed information on what happened without the need to sift through potentially millions of individual entries. Further, the endpoint where the logs are stored must be accessible without requiring a set of complex steps. Therefore this tool was built to record logs in a standardized format that can enter logs in a large variety of endpoints (ex. text files, Event Viewer, SQL).
The Easy Licensing tool is still in development and I plan to release it in January 2021. The motivation behind this tool is to create a way for developers to generate and verify licenses for software they develop. When creating tools and working on projects there is always that looming afterthought that at some point there needs to be some sort of system to license the software, and typically this is a distraction from working on the task at hand. While the tool itself will be and remain open source, it is intended to reduce the amount of effort required by developers to protect their proprietary software (let’s face it, we all need to earn a living as well).