When I started building a 3D printer, I installed a nice big 400GB SATA disk to hold all the software I would need and all the design files I would be downloading and creating. And in a fit of originality I named it “reprap”. So my copy of Replicator-G lives at /media/reprap/replicatorg-0024.
Like several dozen (at least) other people I discovered that Replicator-G doesn’t talk to my extruder controller when it comes to uploading firmware, but the regular Arduino IDE uploads files just fine. So all I have to do is upload the firmware with arduino. Oops, where are the files? Good question. They’re not in any of the directories visible under /media/reprap/replicatorg-0024, that’s for sure
After a couple of weeks of occasional searching of blogs and forums, I find out what I would have known if I’d just read the Replicator-G configuration files more thoroughly and puzzled out enough to understand what I was reading. The firmware files live in /home/username/.replicatorg/firmware, a hidden folder in my home directory. All I have to do is open a shell and cd to it, or tell my file browser to show hidden files and folders, and there it is on a completely different disk from the rest of the Replicator-G software. Well of course. Why didn’t I think of that?
This location is not nearly as senseless as it might seem. But it does highlight the problems people face doing cross-platform software across different operating systems and different kinds of machine with different usage styles. Back in the days when *n*x machines were all multi-user beasts of one kind or another, it made huge amounts of sense for software to live in one place (/bin, /sbin, /usr and so forth) and personal configurations to live in each user’s home directory. And it made sense for those files (yeah, back then they were just files, not entire sprawling trees of subdirectory structure) to be hidden, because most of the time they were none of the users’ business, and you didn’t want them cluttering up valuable screen space in directory listings.
But now times have changed. Most *n*x machines are decidedly single-user, we no longer worry about screen real estate, and most applications have some nice global place where they can put files that pretty much everybody is going to use. So why the arcana?
Well, for one thing, a lot of the machines that control 3D printers might just be multi-user. And if you have a bunch of people doing experimentation, you really want all their different versions of the firmware to live in different places. For another, if you’re going to run on *n*x, windows and macos (yeah, I know) where else would you put the files? On a mac it would be somewhere under /Library or ~/Library, under *n*x it would be in /usr or /usr/local or /var or /etc, and under windows I how no idea whatsoever. And you’d have to figure out the permissions. A home directory seems as safe a place as any.
So maybe I should go back and upload the firmware now that I know where it is. The new motor arrived a while back and feels so much better than than the old one.