FOSS in Engineering Education

This content was first created for a talk at MEC.Conf, organized by the students of MEC Kochi on 06 October 2024.

FOSS in Engineering Education

FOSS in Engineering Education

This content provides an opinionated journey into the FOSS communities. The journey is heavily inspired from my own personal journey from being a heavy FOSS user to eventually contributing to FOSS projects. Over the course of your college experience, I hope to show the audience how they can navigate the FOSS ecosystem, while staying grounded in their college curriculum.

This content is primarily aimed at STEM (Science, Technology, Engineering, Medicine) students, no matter how involved they already are in the FOSS ecosystem. The content was originally written for an audience that was primary first-year students at a FOSS-savvy south-Indian Engineering college but most of it should apply broadly to STEM fields. The content is a Work-In-Progress, especially in regards to the FOSS examples shared below.

Use FOSS in various aspects of college life

Use FOSS

Personal Computers have become an integral part of the Engineering education and whenever you're using your PC, we would recommend using a FOSS tool instead of a Closed-source tool. Instead of using the Windows Operating System (OS), you could use a FOSS OS like Debian, Ubuntu, Rocky Linux, etc. Instead of using the Chrome Browser, you could use Chromium, Firefox, etc.

Examples of daily use FOSS projects

Examples of daily use FOSS projects

Here are a few FOSS alternatives to closed-source tools that students usually use.

Help your friends use FOSS

Help your friends use FOSS

Unlike commercial closed-source software, FOSS projects don't have paid staff who can help new users understand the software. So FOSS communities need you help to onboard new users. Help your friends use the FOSS that you are comfortable using.

Assignment - find FOSS alternatives

Assignment #1 : Discover FOSS alternatives

Commercial, closed-source software has been able to capture a significant number of PC users and usecases. In most situations, commercial closed-source software is the default option that comes to users' minds.

The internet should be able to help you understand if the tool that you're using is closed-source or open-source. The internet should also help you discover FOSS alternatives to the closed-source tools that you're using.

Assignment - make friends from different academic backgrounds

Assignment #2 : Make friends from different academic backgrounds

FOSS is by everyone, for everyone and not just by Computer Science (CS) students for CS students. CS students are exposed to FOSS more often than students from other Engineering disciplines but Computational Thinking can be applied to all Engineering disciplines. Interdisciplinary groups of people can help one another e.g. CS students help other Engineering disciplines adopt FOSS and the other Engineering disciplines can help CS students identify and solve domain-specific Engineering problems.

Assignment - find FOSS communities to participate in

Assignment #3 : Participate in FOSS communities

FOSS user communities are everywhere and you can participate in them physically or virtually. It might be a particular FOSS software that you use, a programming language that you like, a community that you appreciate. Participating in these communities is the first step in understanding the dynamics of FOSS.

Assignment - speak, write in English and listen to English

Assignment #4 : Learn to speak and write in English, listen to English

Statistically, a majority of FOSS communities use English as the medium of communication - you will listen to people speaking in English, you will be speaking to them in English, and you will likely be communicating asynchronously in English. Even with the ongoing localization/translation efforts in many FOSS communities, English is still the default medium of communication, so becoming comfortable with English is sadly a pre-requisite to participating in FOSS communities.

Contribute to FOSS

Contribute to FOSS

Code isn't the only way to contribute back to FOSS. Helping your friends use FOSS is a way to contribute back to the FOSS project. Addressing issues in the documentation is incredibly helpful as documentation efforts are often under-resourced. FOSS projects also need user testing e.g. consider using a beta, an alpha version, or a rolling release of the FOSS project to help them discover issues with the project because they are publicly released to the broader community.

FOSS projects, especially the popular projects, receive tens, if not hundreds, of tickets every day. The FOSS project maintainers are usually overburdended and any help to triage the issues is greatly appreciated. Triaging the issues involves verifying that the poster provided all of the necessary information, attempting to reproduce the issue locally, adding additional debugging information, etc.

Examples of Engineering-specific FOSS projects

Examples of Engineering-specific FOSS projects

  • Robot Operating System is a set of software libraries and tools that help you build robot applications.
  • scikit-image is a collection of algorithms for image processing.
  • scikit-bio is a community-driven Python library for bioinformatics, providing versatile data structures, algorithms and educational resources.
  • eSim FOSSEE is a free/libre and open-source EDA tool for circuit design, simulation, analysis, and PCB design.
  • CircuitVerse enables users to design circuits quickly and easily with a modern and intuitive user interface with drag-and-drop, copy/paste, zoom, and more.
  • QGIS is a spatial visualization tool.
Help your friends contribute to FOSS

Help your friends contribute to FOSS

It's good to contribute back to FOSS projects that you use. It's great if you could help your friends contribute to FOSS projects that they care about, especially if they belong to a different Engineering discipline. Students from a non-CS engineering discipline might not have the necessary technical background to contribute to FOSS projects but that doesn't mean that they don't understand what could be better in a domain-specific FOSS project.

Report issues that your friends discover, help them understand FOSS communities, and if possible help them participate in the FOSS community and contribute technically.

Assignment - Continue looking for FOSS alternatives

Assignment #1: Continue looking for FOSS alternatives

The search for FOSS alternatives is a continuous process, especially if you are helping non-CS engineering students discover and use FOSS alternatives to closed-source software that is a part of their curriculum.

Actively engage with FOSS communities

Assignment #5: Actively engage with the FOSS communities

Actively engaging with the FOSS communities can take different shapes or forms. You could help newcomes who are joining FOSS community that you are a part of, you could help organize physical meetings of the community, etc. At the end of the day, as your awareness and understanding of the FOSS project increases, your engagement with the community should increase.

Assignment - Migrate course or lab to FOSS

Assignment #6 : Migrate course or lab to FOSS

A significant number of courses in college curricula, especially in non-CS engineering curricula, rely on closed-source software. In most of these cases, there is no particular reason why the closed-source software are used instead of FOSS alternatives. The FOSS communities rely on users and volunteers to spread the word and a great way to significantly impact the usage is to ensure that future students can use the FOSS projects as part of the college curriculum itself.

FOSSEE at IIT Bombay, Mumbai has been putting together content to help Engineering education migrate away from closed-source software to FOSS alternatives.

Assignment - Find problems from different academic backgrounds

Assignment #7 : Find problems from different academic problems

There is a lot of value in applying Computational Thinking to solve fundamental Engineering problems, which is essentially what the nascent deep-tech startup ecosystems around the world are attempting to do.

I hope it now makes sense why I was recommending making friends from other domains. Only if you know the problems that exist in non-CS engineering disciplines and have access to people with the domain expertise can you actually solve such problems.

Understand FOSS

Understand FOSS

Some of you in the audience might feel that i'm introducing FOSS fundamentals too late. In my humble opinion, if the FOSS users find value in the projects, it is easier to motivate them to understand the FOSS fundamentals. Pushing new users to understand the history and philosophy of the FOSS movement before they understand the value of FOSS might be a sure shot way of losing them.

Open Sources and Producing OSS

Open Sources and Producing OSS

Open Sources: Voices from the Open Source Revolution and Producing Open Source Software are two great references to understand the history and the philosophy of the FOSS movement.

Assignment - what is the history of your favorite FOSS project?

Assignment #8 : What is the history of your favorite FOSS project?

Assignment - what is the difference between MIT and GPL licenses?

Assignment #9 : What is the difference between an MIT license and a GPL license?

Or any other Free Software Foundation licenses or Open Source Initiative licenses.

Assignment - Follow FOSS leaders

Assignment #10 : Follow FOSS leaders

Maybe the creator of your favorite FOSS project, maybe the leaders of a FOSS community that you are a part of, etc.

Create FOSS

Create FOSS

Solve the problems that you experience in your day-to-day life. Create something that can become a part of your college curriculum.

Examples of Science and Technology-specific FOSS projects

Examples of Science & Technology-specific FOSS projects

  • Osdag - Open steel design and graphics is an open-source software for the design (and detailing) of steel structures
  • Open Source Hardware Association aims to foster technological knowledge and encourage research that is accessible, collaborative and respects user freedom
  • RISC-V is an open standard Instruction Set Architecture (ISA) enabling a new era of processor innovation through open collaboration.
  • Computational Fluid Dynamics - FOSSEE is a branch of fluid mechanics that uses numerical analysis and data structures to solve and analyse problems that involve fluid flow
  • Bioconductor project aims to develop and share open source software for precise and repeatable analysis of biological data.
  • Astropy is a collection of tools for astronomy and astrophysics in Python
  • QuantEcon is a collection of open source computational tools for economics, econometrics, and decision making
  • MFEM is a free, lightweight, scalable C++ library for finite element methods
  • DWSIM - Chemical Process Simulator allows chemical engineering students and practicing engineers to model process plants using rigorous thermodynamic and unit operations models
Work with your friends to create FOSS

Work with your friends to create FOSS

As you can see from the above list of FOSS projects, and like i've mentioned earlier, you can create a lot of value by applying Computational Thinking to non-CS Engineering disciplines.

Assignment - what problems do you care about?

Assignment #11 : What problems do you care about?

On a fundamental note, it's important to know the problems that you care about. Not just within the Engineering domain that you are specializing in but broadly in society. Because most (all?) successful FOSS projects are built by people who care about solving the problem.

Assignment - what problems do your friends care about?

Assignment #12 : What problems do your friends care about?

I feel like i'm repeating myself at this point but working with your friends, you could create FOSS that solves problems that a broad group of people care about.

Talks that influenced this presentation
Solving an amorphous problem

Solving an amorphous problem

I don't know what GenerativeAI will or will not be capable of in four years but GenAI is already able to write code for simple solution e.g. a webpage that contains rows where each row contains an image on the left and text on the right.

It isn't sufficient for professional software developers to simply take solutions and write the necessary code. We need to be able to take amorphous "problems" and break it down into structured problems, which can then be broken down into smaller problems that are accessible to GenAI or beginner developers.

Please watch the "Rethinking the Developer Career Path" by Randall Koutnik above because he explains it much better than I can.

The difference between a happy engineer and a sad engineer

The difference between a happy engineer and a sad engineer

A happy software engineer has solved different kinds of problems over the course of their career unlike a software engineer who has only solved the same problem over and over again.

Please watch the "Rethinking the Developer Career Path" by Randall Koutnik above because he explains it much better than I can.

References to understand problem solving in FOSS

References to understand problem solving in FOSS

The Architecture of Open Source Applications The Performance of Open Source Applications are excellent resources to understand how popular FOSS creators handled the task of breaking down amorphous problems into meaningful FOSS solutions.

Thank you

Thank you

Examples of Engineering courses where FOSS should be applicable

Examples of Engineering courses where FOSS should be applicable

This content is a Work-In-Progress so please share relevant examples of FOSS in Engineering education which should be included here.

Inspired by the excellent talk Choose Boring Technology and the awe-inspiring work of Maciej Cegłowski.

Built with help from Claude 3.5 Sonnet, content is licensed under CC0 1.0 Universal license.