From Foss2Serve
Revision as of 13:20, 27 October 2016 by MJadud (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Matt Jadud wrote this page. His is a member of the faculty at Berea College.

His homepage is

Matt likes coffee, and works too much.

Exploring FOSS

Last spring, I taught:

FOSS Software Engineering, where students took a deep dive into a FOSS project. We targeted OpenMRS, Code Workout, Octoprint, and LibreOffice. In short, I became more (or less) acquainted with each of these projects during the term.

  • I found OpenMRS to be very difficult for students to contribute to, because their build systems could not or would not produce a viable platform on which to experiment. This may be because they were in a version transition. It may be because you need to be Magical in order to build it. I could not, on multiple fresh VMs, build this software, and nor could my students.
  • Octoprint was a joy to work with, with an incredible community and lead developer. Much goodness for students.
  • Code Workout is developed by Stephen Edwards and his students at Virginia Tech. It was easy to work with them, as they live an academic calendar just like us. Students were able to interact electronically and, at one point, join in some design discussion in realtime.
  • LibreOffice was difficult to build, but students managed, and they made contributions to Impress. It was really excellent to see them make it all the way through to the commit/build system for testing of their changes.

This is not exactly the homework, but instead offered as a placeholder for others doing the FOSS exploration homework: I'm happy to discuss my experiences working with students on these projects in greater depth.

Phase 2: Exploring Two Projects

I'm not sure if this is exactly what was expected, but I've gone back and reflected on two of the projects I worked with students on. I did not do the homework exactly as described, in part because I have done the homework before. Instead, I've gone back to re-inspect the communities for two projects that look to be of interest. I don't yet feel this is as deep as it could be, and would gladly push harder/write more if it serves the community.

As part of the upcoming POSSE in Raleigh, organized by the Foss2Serve team, I'm doing a "deep dive" into two projects as part of our preparation. Because I've taught in this space, and done some of these activities before, I'm modifying them a bit. Also, I admit that (at the moment) I would have to be subjected to some *very* compelling arguments as to why I should involve students in OpenMRS. When I brought students to the project, we could not get it to build, and another faculty member and I found the community largely unresponsive in terms of helping us get to a point that we could even consider contributing. Perhaps things have changed, but unless someone says "yes, it's better now," I wouldn't encourage students to touch the project with a barge pole.

The SourceForge exploration is something I would not casually do if I was, at this point, looking for projects for my students to contribute to. I'd instead be picking specific projects I knew about, used, or otherwise wanted to focus on for selfish reasons. For example, we have a 3D printer bay with 5 Printrbots in operation---software that supports our work with these printers is of particular interest to me and students in my lab. So, when teaching open source software development and FOSS participation, I'm inclined to focus on tools that support the work we do locally. (Tools that "scratch an itch.")

I'll take a quick look at OctoPrint and OpenSCAD. Both are blended projects; OctoPrint is primarily Python and Javascript, as it is a Flask application that runs (easiest) on Linux-like platforms (Mac, Linux); the Raspberry Pi makes a particularly good host. OpenSCAD is primarily a C++ application, running on multiple desktop platforms.

I consider OctoPrint to be a mature project, for the simple reason that it runs reliably for our use on multiple printers without fuss. It has a plugin architecture for contributing new features (modifying the core is not the preferred path for most feature additions at this point), and has an active community and an excellent, active, and responsive project lead. While not nearly as "large" as some communities, my experience working with students in OctoPrint's community was that they always received prompt support from the community when they had questions. This is in stark contrast to much larger projects that had dedicated "community leads," who rarely responded in anything resembling a "timely" manner to student questions on forums/lists/emails.

OpenSCAD is also mature, but again, this is measured by several years of on-and-off use; it runs reliably on every platform I've thrown it at. I have not actually attempted to work on the code for this project, nor am I confident I would throw students at it. As a multi-platform build, it is likely difficult for students to validate/verify commits. I say this having had students contribute to LibreOffice, which was a challenging community to make changes and commit changes to on a single project, primarily because it was such a large codebase with so many dependencies. OpenSCAD is at least one order of magnitude smaller (100 KLOC vs. 1 MLOC), which might make things "easier..."

Both OctoPrint and OpenSCAD have active communities on OpenHub, and their blogs are reasonably up to date (Octo more than SCAD). Given that OpenSCAD was a GSOC project this past summer, I would like to have seen more traffic on their "news" page... but, the fact that they were a GSOC project is signal enough to me that their community is living and breathing, because dead projects don't get that kind of support.

Personal tools
Learning Resources
HFOSS Projects