Linux is one of the great examples where FOSS has built up momentum and outrun several commercial competitors. Ditto for git (which actually was a bit "FC" in the first place). GCC and LLVM have between them stomped a few commercial compilers.
If you want examples of open source lagging the commercial equivalent: FreeCAD Vs SolidWorks, KiCAD (which is beginning to edge out some competitors: Eagle just went down) vs Altium, GIMP Vs Photoshop, KDEnlive Vs Premiere, Octave Vs MATLAB.
Not to say they're not amazing projects, or that they don't have their own share of technical debt, but they'll all have to play the long game to reach the overtake (and they're all decades into the race, so it's a slog).
Not being into home automation myself, I can't really comment on open source in this space, but the commercial churn puts the FOSS approach in a good place for the software side. Hardware, not so much.
This has always been the end game for me of open source, beyond all the other benefits: offer tools so good for free that when someone tries to charge people for it, they'll be met with a resounding "why would I pay you for that when I can get this for free?"
Not to mention open source software basically reigns supreme in Venezuela, India, Philippines, other places without high capital in global currencies.
In all these examples, the missing part is not the technical prowess, but the optimized math which makes these software useful, which is a serious secret sauce.
Evaluating numerical calculations correctly under all circumstances is a kind of dark art.
Develop better algorithms, and you'll be in the business of disrupting them. See, OpenFOAM.
Disclosure: I did my Ph.D. on this subject.
The big problem is the user experience. FreeCAD has single-handedly soured me on 3D modeling in general because it is awful to work with. There are a dozen incompatible ways to do anything, and they all have weird undocumented limitations. And rather than getting basic 3D modeling working properly, they add a whole architecture workbench.
We saw this with Blender a few years ago. The thing which made it go from "toy product" to "viable commercial alternative" was a huge UI overhaul in 2.7x. Something similar happened in KiCad 6. Both Blender and KiCad have attracted significant commercial backing since then and are slowly starting to become serious alternatives to their proprietary competitors.
It seems like getting a commercial company behind it is pretty much the only way to do it. You just can't tell an independent developer that the UI of their pet project sucks and they need to spend six months rewriting it from scratch. Heck, getting them to agree that the UI sucks is pretty much impossible already! Stuff like this is a lot easier when your primary incentive is "being paid a salary" rather than "having fun with my pet project".
Think this is a bit of a straw man, to be honest. I've done turns at AWS, Microsoft, Dropbox, and now a quant fund. Most of the big-impact projects at all of these places have been bottom-up initiatives, not top-down -- they've been things started by one or a couple people, wedged into spare time, because the existing ecosystem had gaps. Even things that turn into full-fledged, public-facing services usually start quite small. A former teammate at AWS was part of the team who launched Mac on EC2 -- he was the third engineer on the team, and he started on the project as a part-time engineer on loan from another team. In my experience, this is how things are usually built -- even for things that go on to be part of the re:Invent keynote.
But i think part of it is how fast things can be scaled up. Corporations can go from the tiny to large scale fast of things look good. It takes a lot of time for open source to build momentum.
Evidence of the rapid initial development can still be seen in the famously...quirky...CLI syntax.
LLVM began as a research platform at UIUC. In terms of public record, Apple only began putting money into it around 2005 (primarily by hiring Lattner). It might have received other corporate funding before and during that time that isn’t well documented, but I don’t think it’s accurate to say that it was driven by a big company from the get-go.
Of course, this is actually one of the more unique cases, because it was both well-funded and open-sourced in the end, and, though developed rapidly, is actually a decent project, technically. As opposed to the kind of behind-closed-door too-embarrassed-to-publish shitware that's probably powering things like Hives.
Most everything I like about Linux seems to be driven by the red hat types more than the general community.
Home automation software is pretty trivial, HW is what matters, and until very recently the HW was tied to the proprietary software. Plus the software can't rely on you being the product like commercial stuff, so you have to pay for easy remote access on home assistant.
The other issue is even though the functionality is simple, two important features are good UI, and not randomly breaking on updates, which FOSS isn't great at.
I use FreeCAD, KDEnlive, and others all the time, because the commercial stuff just isn't practical, if you're not making 40k a year or having a company that is tech focused enough to have a license.
I'm glad it exists, I'll continue to contribute in GitHub if I see an easy to fix bug..., I'll probably keep using my DIY automation system because of a few specific features, But I'd really rather FOSS do stuff a tiny bit more like commercial does.
The fit and finish required for a non-technical user is frequently neglected, because that's not a itch that an OS contributor needs to scratch. Design is especially neglected.
And then there's the long term. OS solutions are not immune to bit rot, forked projects, people getting bored and another solution gaining traction. It can start requiring a higher and higher technical bar (e.g. compiling from source, or applying patches to library dependencies) to keep something old running, when the new stuff requires functionality only available in more recent hardware.
Open source hardware is a thing but it's genuinely hard and it's a place where the open source iterative building on a rising base idiom doesn't bring such long term dividends because real manufacturing costs real money, and lots of it, and even the best open source electronic designs eventually go out of date when parts EOL.
Hardware vendors are reluctant to provide access to run open firmware on their devices because not only then it's a hop, skip and a jump to a clone, inevitably cheaper since the design phase costs a lot, but also they'll lose the device lock-in (e.g. Apple) or app-based data siphon (everyone else).
The reality is that most open source projects are playing catch-up, especially in the hardware space. Linux still has many issues with newer GPU drivers (binary blobs instead of actually OSS ones), and even a semi-popular project like OpenWRT doesn’t have WiFi 6E support, even though devices have been out for a while.
I suppose it goes to the heart of what you want open source/free software to be.
If you're happy for it to be a niche thing only for 'geeks' that pov is legitimate. If you want the wider world using it then such answers aren't reasonable.
Your comment implicitly indicates a certain world view.
Like saying, you don't mind people not working, ignoring the fact there aren't any jobs or unemployment benefits.
Ie it's for those that have the ability to write their own code. Or people that have the ability to pay for the specific feature they want.
If you're happy with that, fair enough, but that is the implication.
This is how all human relations operate. It is not specific to free software.
But stopping at that and taking a laissez-faire attitude is a position with implications.
Just like failing to switch the junction and allowing the train to run over X people. You can't say "I didn't do anything" you didn't, and X people are now dead.
>Just like failing to switch the junction and allowing the train to run over X people. You can't say "I didn't do anything" you didn't, and X people are now dead.
Our law has an established distinction between acts and omissions. You are responsible for your acts. If you act in a way that harms another, you are (prima facie) responsible. If you omit to do an act, and that act may have saved another person from harm, you are (prima facie) not responsible.
So actually yes, if you fail to switch a junction and a train runs over 1000 people you are (prima facie) not responsible. Of course if your job is to supervise the junction, it would be. Or if you took responsibility for doing so, or if you make a representation that you would do it and others reasonably relied upon it.
Lawyers and judges didn't just pull the act/omission distinction out of thin air. It's the way that the law has evolved because it actually handles situations that arise in practice in a just and workable way. All that is to say, I disagree that you are necessarily responsible for someone's death if they are tied to a railway track and they're run over by a train, and you stood by and didn't save them. You may be in some circumstances, but in reality nobody is going to actually just stand there for no reason. They will omit to do so for some other reason: they might be paralysed by fear, they might have some other conflicting responsibility, etc. The responsible party is the guy that tied them to the train tracks in the first place. Let's focus our attention on that.
The reason this came up is that you seem to think that someone is doing something wrong if they don't use their programming talents to add features that non-programmers have expressed a desire to have added to free software. Maybe that isn't actually your position and I have misunderstood it. But if it is, I disagree strongly. If someone is capable of adding CMYK support to GIMP but doesn't do so despite the clamouring of the masses, I do not think they're doing anything wrong. There are always other things they could be doing with their time, whether it's lying in a hammock listening to Pink Floyd, or sitting on a beach reading a novel, or sitting on a couch eating fried food and watching daytime TV, or, of course, contributing in some other way to some sort of free software project that they're more interested in and which is more useful to them. I don't think any person has a responsibility to write free software just because some other random people would benefit from him or her doing so.
That's why I don't like the framing of (paraphrasing) "if you want it to just be for geeks, that's fine, but that's what you're saying". It's not that I want free software to just be for geeks. I don't have any preference over who should or shouldn't use free software. It's not my place to say who should or shouldn't use it, because that's up to them. But I don't think that anyone has any kind of obligation, be it moral or legal or otherwise, to do so. I think people that choose to write software they won't enjoy themselves but which will benefit others are probably doing a good thing. It's like planting a tree that will take so long to grow that you will never enjoy its shade, to absolutely butcher that famous phrase. But I think ... I was about to say 'there are plenty of legitimate reasons not to do so'. But it's not even that. I don't think there is such thing as an illegitimate reason not to do so. People should do what they want, in accordance with their obligations to the people around them, not based on what I or you or some other internet person thinks they should do.
For someone who doesn't write C at a "GIMP maintainer" standard (maybe I'm not even a programmer and just want to make pictures) it will be far more cost effective to chuck a few hundred dollars at Adobe than spend person-years learning and working enough to get that kind of feature in, or funding the development. And then while doing that learn C++ to a standard to get your topological naming rework into FreeCAD via OpenCASCADE. And so on. Amortised over the everyone, it's a tiny cost relative to what Adobe costs each person, but that's the open source curse: you can't easily scrape up 10,000 $10 donations to fund development work worth millions in the end (to other people).
I don't really have a solution other then grind onwards.
It seems easier to assume that it just isn't a big deal. I don't really understand the issue myself, but it seems like the simplest explanation. It would be strange for this to be the one random area where 'competent C or C++ programmer' and 'domain expert' doesn't have an overlap.
I mean maybe there's a pattern here with some other areas that lack good free software? I don't know. People complain about other 'creative' software lacking good free software tools but I think that's usually due to a lack of familiarity rather than a lack of quality in the software itself. Creatives seem to be more bothered by UI they're not used to than others are.