Since people messaged me directly about Medical Device Developer Linux this requires more posts. Quite possibly I’ll have to add a “user forum” to this blog. Doubtful many of you will post though given the secured environments some of you message from. I didn’t want to put more thought into it right away so thanks for that! :P
Our featured image was provided by blog.giddyup.io.
Scope
Younger developers have been a bit confused about the scope of such a project. CI/CD will play no part because Agile isn’t Software Engineering or valid software development. Many of you still have the invalid idea that pushing out a busted hand polished turd is a good idea.
Please look at installing Ubuntu 10.04 in 2022. That is the scope for this project. Once it is birthed into the world it does not change. The ISO install for this will prompt with default repo locations allowing the user to point to local repo sources instead.
True Software Engineering has releases, not Sprints that poop out hand polished turds every couple of weeks. Once a release comes out that’s it. Won’t be touched again. Any new release will be in a different location. The files in each release repo will be locked for all time.
Not Allowed
No Qt or anything written with it. Wireshark is OpenSource so it can be forked and converted to something else of a slightly different name, CopperSpice is a fork of Qt 4.8 with all of that icky-nasty QML removed so that would be path of least resistance. If anything below actually uses Qt it will have to be ported to something else to remain on the list.
When an API has a bug database north of 18K it is unfit for use. They actually pushed that out and keep pushing out releases that add to the bug list. To be fit for use in the medical device world you have to focus on fixing bugs first! If all you care about is new features to sell more licenses then you can be gone from the industry.
No 32-bit x86 support. Most every desktop distro still has quite a pile of 32-bit libraries and software. This needs to cleanly be jettisoned in its entirety.
No upgrades. You wipe and install a completely different release.
No Snap support. A growing number of distros are removing all Snap support and some are blocking the ability to install Snap support. This distro will not include it and will actively block installation of it.
No background task of any kind checking for updates. W have no need for such a virus as unattended-upgrades.
No Vi or any flavor of it. Time to take that out to the woods and put two behind the ear. If you use Vim you won’t find it here.
Visual Studio Code never will be here. Microsoft can track someone else. The version without the tracking is on servers that are too slow and I don’t want to open that can of worms.
No Wayland. This will be X11 only. Maybe in another 15-20 years Wayland will get good enough but the reality is we don’t need it for Medical Device Linux. Almost all of our tried and true tools work with X11.
What to Include in Medical Device Developer Linux?
My initial thumbnail sketch. These all need to be installed with ISO.
Application Frameworks
Full dev packages with full source because we have to perform full source code analysis on what we submit for 510K.
Editors and IDEs
RedDiamond will be the default text editor once I complete it. Dev branch is getting pretty complete now but still needs spell check, csm support, gdb support and a few other things. If I’m going to be part of this it is going to have my editor and once you learn EDT Keypad editing/navigation you will wonder how you ever lived without it. Getting the debugger keypad interface will make it phenom.
GUI Emacs with EDT support pre-installed. If it wasn’t for the age-old Emacs can’t see the NumLock key I wouldn’t have had to start writing RedDiamond. (You can learn more about Emacs in my latest book on Emacs.)
Eclipse IDE with C/C++ development
JED text editor for terminal – will be default terminal editor and will have EDT enabled by default
Nano editor just because so many can’t function without it and it was supposed to kill all forms of Vi. Will not be the default editor though.
LeafPad because you always need an editor that does almost nothing. By that I mean it doesn’t try to interpret or format anything.
CudaText simply because someone put an awful lot of effort into it. One could almost forgive the use of Object Pascal.
General Tools
The install dependencies for above (sans any Qt). C++ compiler, ninja build, CMake, CppCheck and a few other static analysis tools. Artistic Style for command line source formatting. Git, svn, and Mercurial. Python3 and probably the Mercurial GUI. It is doubtful GitKraken is licensed in such a way that it could be included as well. Some kind of calendar and Guake like drop-down terminal.
CppLinuxSerial with full dev and source. Didn’t have a better place to put this.
Whatever the port of WireShark ends up getting called.
LibreWolf as the default browser.
Brave and Vivaldi as alternate browsers.
Thunderbird for email.
Postgresql full client dev with database itself. This is a production quality database. Many of the above application frameworks have support for it only if found during build. Medical devices that aren’t insecurely exposing user’s private data to “the cloud” will be connecting to a local database either directly or via API.
User will be asked to choose between OnlyOffice or TextMaker at installation time. They could choose none but you do need a word processor and Libre Office simply isn’t compatible/stable enough release to release. I have several books I wrote with older versions that simply cannot be edited with newer versions.
Sqlite3 because everyone uses sqlite instead of indexed files these days.
Flatpak/Flathub support. ISO install will ask user for additional package hubs other than Flathub. Know that installing Flatpaks from Flathub where new versions get pushed out completely defeats the purpose of this distro. You really need to put your paks on a local server.
Additional Items in Repos
Mumps database and programming language. If not the linked package another. The VA wrote their hospital/pharmacy software in Mumps and they are the largest healthcare system in America. The OpenSourced the early version which became the foundation of several major commercial versions. At some point your device will communicate with Mumps. Perhaps you will always have a gateway, but I would not bet on it.
Docker build/test and full Arm cross compile toolset.
NVIDIA drivers that were actually tested with both the OS and supported video cards! I am sick and tired of kids who think they can test everything with a script pointing at NVIDIA and blaming them. No! It is your fault because you didn’t test shit! Agile is not a valid software development methodology!
Development Will not be Open
Developers can ask to be part of it and we will look at your resume. Only developers who’ve made medical devices that are currently on the market will be allowed. If you were on a team that pushed something like this out onto the market, where development was obviously sloppy (Agile) you won’t be allowed. A recall with a body count means you can’t ever be here.
Summary
For an initial list which will piss many people off I think this is pretty complete. I’m sure there is stuff I missed that matters.
If your favorite editor/IDE isn’t on the list I don’t care. Know that it won’t be. I didn’t list all of the build dependencies, but if you are installing the packages needed to build each one from source, there will be a lot of overlap with things like Alsa, etc. We will use Debian packaging. Don’t know yet (because I haven’t thought about it) if we will include BuildRoot, et-al for packaging.
For the professionals who’ve been reading this and providing input I thank you. I didn’t proofread this post. Just let it roll off my fingers. I appreciate your input. This relentless spewing from the CI/CD sewer pipe has got to stop. We are not Alpha testers!