November 30, 2023
By João Reis, Jaime Bernardo, Jamal Robinson
In the 1950s, when academics and corporate researchers were the primary producers of computer software and compilers, most software came free with hardware purchases. Much of the software from this era was shared as public-domain software, i.e., software with no ownership. Towards the 70s, as OSs and programming languages evolved, it was clear that bundling software with hardware for free was not financially viable. Software providers had no incentive to maintain programs as they weren't getting paid for it.
In 1974 software was legally considered copyrightable, and over the next decade, companies charging for software became the new norm. As large-scale operating systems matured, fewer organizations allowed modifications, and eventually, operating systems became closed to modification. By the 80s, companies were no longer distributing source code with products. Despite this shift towards closed-source software, open source (or free software) advocates used alternative means to share their source code freely with other programmers and users, such as computer magazines and bulletin board systems.
In 1983, the same year Apple won a lawsuit clarifying that a program's source code and binary code were covered by copyright, Richard Stallman launched the free software movement. Motivated by incidents where the lack of access to source code prevented users from fixing software problems, Stallman initiated the GNU Project intending to create a complete operating system free from constraints on using its source code. In 1989, the GNU General Public License was published, providing a legal framework for software's unrestricted use, modification, and distribution.
A couple of years later, in 1991, we saw the birth of arguably the most significant open source project to date, the Linux kernel, released under the GNU General Public License. Today, this massive collaborative project powers 85% of all smartphones, it's used by major space programs such as those of SpaceX and NASA, and the kernel ran on all of the world's 500 supercomputers in 2021.
Although 90% of companies are now using open source, the movement has democratized creating, using, and sharing software for everyone. This blog delves into the importance of open source, featuring insights from seasoned developers with first-hand experience working on some of the world's most significant open source projects.
Open source refers to software with publicly accessible source code. It allows developers to build on top of software, reverse engineer it, and repurpose it however they see fit. Anyone can inspect, modify, or distribute the software's source code, encouraging collaboration, transparency and fostering a developer community. Today, dozens of open source licenses exist with varying terms and conditions for modifying and distributing modified works. Some allow users to take open source code to be edited and used in commercial, closed source settings. Others ensure that open source stays open. The rise of Open Source projects has enabled the success of platforms like GitHub, where developers worldwide contribute to thousands of projects every day.
Open source continues to revolutionize software development. It empowers organizations and individuals to tailor software to meet specific needs. It's a much more cost-effective solution to developing closed source software because it avoids vendor lock-ins and costly license fees. It also stimulates rapid innovation from a large developer community, increasing the quality of software, the number of features, and its security because it is constantly under review. Open source also bolsters interoperability, often being compatible with other open source and proprietary software. It fosters community, creating robust support networks, forums, and resources for troubleshooting and learning. With all of this, it creates a higher level of trust. Users can verify what the software is doing instead of relying on vendor assurances.
Here at Janea, we have over 18 years of experience working on open source projects and even more tinkering in our spare time. Across Janea's portfolio of ventures, our diverse team of open source advocates work across several operating systems and hardware setups. It's because of this that we know, all too well, the annoyance of system incompatibility, and it's one of the primary reasons why a lot of our open source work revolves around interoperability. Our open source work ensures developers can utilize systems and programs in settings that feel native to them, whatever their setup.
Our Founder and Chairman of the Board, Alexis Campailla, stuck a ThinkPad keyboard on a MacBook Air.
"Essentially, there are two kinds of open source projects.
(1.)Projects started in the community, driven by people who want to build and share code online altruistically.
(2.) Then you have open source projects from companies. These projects could be closed source, but being open source is mutually beneficial for the open source community and the company because it gives anyone access to the software, and companies get help to support more features."
João Reis, Lead Software Engineer at Janea Systems
Take a look at just a few of the open source projects we've worked on and what our developers have had to say about them.
Our ongoing work enables developers and data scientists to utilize PyTorch to its full potential across the Windows ecosystem. Our team is trusted to maintain PyTorch for the Windows open source community. This work includes ensuring stability by resolving PyTorch Continuous Integration (CI) test failures, actively contributing to TorchSharp - an initiative aimed at extending the PyTorch API to the .NET ecosystem, and transitioning PyTorch to C++17 which our Lead Engineer, João Reis, describes below:
"One piece of work from this project that we're really proud of was enabling C++17 on PyTorch. This was blocked on Windows because of a few issues, but we reviewed them, fixed them, and helped move it forward. Now PyTorch is coded in C++17 to keep up with the C++ standard, essentially modernizing the code base."
Our work on React Native provided a unified developer experience across the Windows ecosystem, enabling devs to create Windows desktop applications. While React Native successfully served iOS and Android developers, there was a significant gap for the Windows user base. Several mobile platform modules were unavailable on Windows, which hindered the development process. Our work porting 16 core modules was significant to many Microsoft clients and the broader developer community.
Jaime sums up the project here:
"Native modules allow you to access information specific to the device. Let's say you want to access photos or get information on what OS the hardware is running or the available Ram on mobile. You don't get access to any of that when you're just doing an application with JavaScript and HTML because it's supposed to run in a browser. But these are native desktop apps, so for each platform, there needs to be some code that accesses this information. This was already in place for iOS and Android. Our work on this project helped bring this functionality to Windows so that people could pick up the web apps they've done in iOS and Android and port them easily to also work on Windows, using their original React Native code."
We were trusted to develop the core feature set of the recently reinvented Microsoft PowerToys. This includes utilities such as Color Picker, FancyZones, Video Conference Mute (Experimental), File Explorer Addons, Image Resizer, PowerToys Run, Keyboard Manager, Shortcut Guide, and PowerRename.
Jaime tells us about a problem the team overcame while working on FancyZones:
"One specific challenge we faced was with a particular set of screens or monitors. Screen manufacturers should set a unique string that identifies the screen, but one set of monitors would send the same ID for that model on every screen. So, there was no way for us to see which screen was which. This was especially problematic working on modules like Fancy Zones. We had to implement and iterate on many strategies to ensure the zones wouldn't reset when, for example, people disconnect and reconnected screens, or when they restarted a computer or went to their lock screens."
This is just one small example of the diverse set of problems our team must overcome while working on open source projects. We're particularly proud of our work on this project and the great reception from the open source community. GitHub’s 2022 State of Open Source report ranked PowerToys:
When working on open source projects, no two days are the same. With anyone being able to contribute, there's always something new to work on, but this also poses challenges.
One difficulty with open source projects is learning new frameworks and working methods. For example, our work on react native covered 16 diverse modules from text to speech systems to media player functionality. This keeps our developers on their toes because they must have an intricate understanding of a module to successfully work on it. Our developers see this as a challenge and an opportunity as every new codebase endeavors to expand on their deep tech-agnostic expertise.
When working for a company on open source, multiple stakeholders are often involved at varying levels. Some programs are owned by one company but maintained by another for specific OSs and hardware. In addition, the open source community is a significant stakeholder in projects. Prioritizing and juggling requirements can sometimes prove difficult, but we've managed to overcome this over the years by ensuring clear communication with all stakeholders and holding ourselves accountable.
Much of our work revolves around solving incredibly complex software engineering challenges. More significant bugs must be solved quickly to ensure that the program works for most users but "minor" issues can sometimes be left by the wayside, especially when it comes to edge cases with unique hardware setups. One of the challenges we face in this work is being unable to replicate and troubleshoot bugs because of the hardware setups.
Open source allows us to harness collective intelligence for exponential innovation. Here at Janea, embracing open source affirms our commitment to transparency, collaboration and inclusiveness while enabling developers of all skill sets to thrive.
Open source encourages us to transcend the traditional silos of knowledge, inviting us into a global workshop where collaboration, creativity, and transparency lead. We firmly believe that no matter how smart the people you hire inside your company, there are always smarter people outside. That's why we're committed to open source and will continue to contribute to it, absorb its lessons, and help shape our collective digital future with it.
Get in contact with us to find out more about our open source work.
Ready to discuss your software engineering needs with our team of experts?