Participating in Open Source Projects

We all have different skills, and different interests.

I’m not a brilliant programmer. I have worked with enough people who are brilliant to know my own limitations. But I’ve also worked on enough large commercial software projects to know that coding is a fairly small part of the overall effort. There is also, in no particular order: specification, design, management, leadership, developer documentation, user documentation, testing (alpha, beta and regression), marketing, fixing bugs, and so on.

Non-commercial voluntary projects are massively different. We all do whatever we want to do, which is often adding new whizz-bang features that no-one else understands. The developer doesn’t need documentation, so why bother spending time writing it when the next whizz-bang feature needs developing?

When I started using ImageMagick, I knew little about image processing. The official documentation and Anthony’s usage pages didn’t answer my questions.

I stumbled around, and sometimes faced problems I knew I had solved before, but forgotten how. So I kept notes, and figured that some might be useful for other users, hence snibgo’s ImageMagick pages.

And, yes, I added new whizz-bang features. I documented them because my memory is useless.

If there is a lesson in this, it is JUST DO IT.

4 Likes

I started Filmulator to do what I wanted: make an open-source raw editor that gives good results out of the box. As far as duplication of effort goes, I didn’t actually do much investigation. I was totally unaware of darktable until only a few years ago, actually. But it seems like Filmulator is still the only open-source raw editor with this goal, so no effort is being duplicated… if only by chance. Within the project, I have been doing the vast majority of the work recently, so there are no toes for me to step on.

I started librtprocess because it needed to be done after LibRaw removed the functions I wanted, and it required not too much effort beyond what I would have to do anyway. So I decided to share the result and also accept contributions from others.

If I need something, I just do it myself. That’s what open source is about for me. The ecosystem enables me to do things, and then I share my results back.

6 Likes

I think there are other projects with this goal, though there might be different views on how to get there…

2 Likes

I will try to reply only to this question: “What motivates people to put their efforts into an open-source project?

I interacted with a dozen of developers in the last twenty years so I can tell you this.

It is one of the main questions that I asked. I was always curious to know how they started building or participating in their project.

The most common reason that I found was passion. Most people that I talked with told me that they just wanted to create something or found a solution at a specific problem only to discover later that a bunch of other people appreciated their effort. For some, this became a hobby, or for very few, it became both a hobby and a way of living.

The passion goes away because of real life. Family, job, health, and other reasons that might put what is seen as a hobby in the second place. Thanks to Open Source others will continue your work.

Get in, see how it works, do something else, hopefully, better. That’s how the web grew.

Thank you!
Sam - FossHub

4 Likes

Thanks, Sam. This is very similar to how I feel. I don’t do programming, but I think I can help with user documentation for some of the software packages, which seems like a common weakness among them.

I’d like to have excellent, free tools available for people to reduce the barrier to entry. I think about a creative and inspired artist or photographer who may not have a lot of money and can’t afford an Adobe subscription. The more user-friendly the FLOSS tools are the better it is for that person.

4 Likes

This is literally the exact reason I try to help wherever I can (and tried to start a community around Free Software photography tools). I used to be the poor kid who couldn’t even dream of owning an Adobe product (that was pirated). Somewhere out there are more people who might be talented but encounter a barrier-to-entry to realize that creativity. That makes me sad.

So hopefully we can fix it.

3 Likes

It hit home for me when I was talking to a good friend of mine who is a hardware wizard. He told me that he collects old computers, discarded computers, or even parts from them, and re-assemble them into a new system. He’ll then put some lightweight Linux variant on them, and give them away to community organizations or families that can use them.

Local to me is a photographic arts center that hosts shows, and produces affordable classes to teach photography techniques. They do a lot of programs targeted at poorer areas in the city. They have whizz-bang computers with all the Adobe stuff that people can rent out by the hour.

A couple years ago, I asked them if they knew anyone with expertise in GIMP, and they did not. At the time, I was just getting started in OSS image manipulation and didn’t know anything, but at this point, I think I could probably teach a beginner class in GIMP. The next time I am there, I will pitch the idea to them, as it would be nice to spread the knowledge that I’ve gained and put the tools into more people’s hands.

4 Likes

These two sentences don’t make a ton of sense. Hopefully the price could become cheaper because of FOSS, or even free.

1 Like

It is possible that Adobe have done them a deal, perhaps with free licenses. In the same way that drug pushers give out free samples, hoping to get users hooked. I don’t mean to imply that Adobe is doing anything illegal, of course.

I suppose you could get some useful answers from people if you ask them directly. But people often give poor explanations explaining why they do things, for all kinds of different reasons. So you’ll get a truer explanation by observing what people do.

1 Like

I’d be especially interested in the feelings of others here who put food on the table via programming, and also contribute to open source projects. Do you have some dividing line in your mind between those subject areas where you will contribute to open source and those you won’t? What’s that line?

For me, the distinction is whether the software category is primarily used by for-profit entities. In my business life, I work on software that is only used by large corporations. In that environment, I think it’s entirely appropriate to charge for my work. On the other hand, software that is often (or mostly) used by individuals/hobbyists seems ideally suited to FOSS, and contributing freely to such projects not only is good, but feels good!

2 Likes

I think I’m in the same boat as you. The dwindling day-job is all about aerospace, and my hobbies do not relate at all to that. My primary concern is with intellectual property, being able to contribute to that at work on their terms, but being able to contribute to my personal endeavors on my terms.

But the day-job is what enables me to do open-source software development. it maintains the household, so to speak, and lets me dabble with software for not only photography, but model railroad control and other things that interest me personally. Others are not so fortunate, in that their core interests are firmly anchored in their profession. The backstory behind the development and sustainment of the Network Time Protocol (NTP) is illustrative in that regard.

For better or worse, the world is organized around structures where individuals need to work at something to nuture their survival and comfort. The concept of open-source software challenges this, as it requires one to make effort that doesn’t necessarily contribute to their participation in the “structure”. Not directly, at least; in my case, doing open-source software has definitely helped me at work in keeping up with things like C++ evolution. But I couldn’t tell you what part of my paycheck directly benefited from that connection…

4 Likes

It’s also amazing to me the number of core/essential tools being maintained by just a small team not getting really compensated by so many others using the tool. A good example is Werner Koch and GNU Privacy Guard (GPG):

Or most of the webcam drivers for Linux from Michel:

4 Likes

Hopefully! Some projects never get a significant base of co-developers and as a result wither and die when the lead burns out. They may get picked up again years later (this appears to be the case for siril), although it’s always in this case a rougher transition than if there’s a slow and gentle handoff.

Years ago, myself and a few other developers founded an AOSP-derivative Android firmware project (Omni) in reaction to a licensing dispute over the Focal camera app that had been written by one of the other developers for CyanogenMod. I made a point of mentoring new developers as best as I could, giving advice on workflows (keep your commits verbose and descriptive, don’t make megacommits, comment your code, this is roughly how this part of Android is architectured, I don’t have time to improve Y but you might want to look at subcomponent Y, etc.)

At this point I’m less proud of the software than of the organization that sprang from my efforts. (Not to say that I’m not proud of the software, there were a number of cases where we outperformed an organization with massive venture capital funding for certain metrics… Strangely, those metrics were in theory at least the ones most important to said company continuing to exist, which is why I’m not surprised they had massive layoffs and “pivoted” after three years.) I eventually burned out and slowly wound down my involvement to the point where I haven’t made a commit to the project in years. (Also, upstream AOSP and stock Android have improved to the point where I don’t even bother with custom firmware any more.) Because I wound down slowly and tried to educate so many others, the project is still (or at least appears to be) healthy 3-4 years onwards.

5 Likes

This is pretty much how it actually works:

open_source_development

3 Likes

I didn’t know that. I’m working on LOS right now. However Android is still a horrible community. However Omni is a bit better place in that community :wink:

Sometimes I wish I could code. However, I decided to walk a different path in life. Since I’m using software like GIMP and Darktable I figured I’d participate in the community by creating tutorials. That way I’m not only consuming but contributing as well. Because I don’t know how to code, but I do know how to create videos :)!

5 Likes

Yeah, Android in general is a pretty horrible community. It doesn’t help that the way Google runs AOSP seriously discourages upstreaming. I heard at one point that some Android engineers at Google were disappointed at how little was being upstreamed from all of the AOSP-derivative projects, but what you you expect when:

  1. You keep your active development in hidden branches, publishing publically only once per year, leading to a high risk someone’s upstreaming effort will just silently get ignored because Google is NOT going to tell you low-level details of what’s coming in a future release - so you don’t even get a “yeah this conflicts with something we’re already working on” until you see it in the next public release.
  2. You restrict your hardware support to only your own devices, which effectively means that 75%+ of people who MIGHT have something upstreamable don’t actually own a device that allows them to test against YOUR codebase. See the results of Sony’s attempts to upstream support for their NFC chipset - it was -2ed due to not being in a Nexus device. 9 months later, a Googler submitted nearly identical patches for the exact same chipset and they were accepted. (No surprise, the next Nexus/Pixel product had that chipset.) When questions were asked about what was going on (pointing to the old patchset) - no comment.

XDA is a mixed bag. There’s not really any viable replacement for it, but since it’s such a large forum with so many people, there’s a lot of malfeasance that winds up falling through the cracks, because the really knowledgeable developers don’t want to also deal with moderation, so sometimes mods screw up. However if you can prove that someone is taking someone else’s work without proper credit, they WILL react. I actually wound up getting one guy banned because I was able to prove with diff that:

  1. Their “lionheart” governor was just “conservative” with 2-3 lines changed
  2. Those 2-3 lines were written by another developer (netarchy) without credit.

Some of the projects outside of CM/LOS do have good communication - Alex Cruz of Dirty Unicorns and the Omni guys get along well. CM’s leadership were always arrogant and drove a lot of people away, and their behavior when Cyngn was founded deepened the rift even further to an unrepairable state. We also got along well with SOME of the PA guys, but not all. PA was basically destroyed by the OnePlus hiring mess. All of the developers that got hired became completely inactive in PA, but sought to kick out anyone who was critical of OnePlus’ negative impacts on PA. One of the PA developers disappeared for months, only to resume activity SOLELY to kick out the critics - even at a time when half of the OnePlus PA hires had already given notice that they were leaving the company within a month or were seriously considering it. None of them ever resumed activity in Android circles afterwards to my knowledge.

I’m not against commercial involvement in Open Source (The Linux kernel is a great example of a GOOD working relationship), but Cyngn and OnePlus are perfect examples of how NOT to model a healthy relationship between a commercial company and an opensource community project.

Gotta go…

Edit: The community here overall is much better. There are a few severely abrasive personalities, but overall there is a much greater amount of cooperation.

1 Like

I was just wondering, is there any kind of “future vision” for filmulator,
long-term goals, project vision, etc. You name it.

I’m still low-key looking for the new ship to sail with in the raw development department,
and technology-wise filmulator seems to check many of the boxes.

The UI is already decent for experienced users given how simple I’ve kept it, but it’s not clear for beginner users how to start off, so I need to improve the onboarding process somehow.

Technical aspects of image processing? I’m planning on adding Lensfun for distortion correction. Maybe when hanatos’s Vulkan experiment is further along I’ll redo the Filmulator pipeline for insanely fast GPU computation.

For organization, I want to add tagging support to the library.

Finally, I want to have various output options: batch resizing, output sharpening, maybe contact sheet generation.