I’m a FLOSS/linux enthusiast. Over the years I have learned some scripting, and can get around in git. Occasionally I fork someone else’s project to suit it to myself. Shell scripts, webapps, browser extensions etc. The kind of thing you can work in the source of without actual programming knowledge by just looking at text files.

Recently I modified a C program to have more legible/useful (to me) terminal output. I gave it a slightly different name and for compatibility have both versions running on my system. For my use-case it is a huge improvement over the original so I want to have it publicly available where I can install it from any system. And to share in case anyone else would enjoy it.

I don’t think my changes would be appreciated by the original maintainer. For one thing, no changes have been made to the code in >10 years. The dev is still active so I guess the program is considered complete. For another, my changes are breaking and specifically disrupt the “linux philosophy” aspect of the program. I think having both version co-exist is the best way.

  • I don’t want to confuse anyone who is trying to find the repo of the original program.
    • The original is hosted on github whereas I use codeberg; so the “forked from” relationship is not as clear as if I stayed on github
  • I ?do? want to update documentation such as README in the repo to describe my changes and relationship to the original
  • I ?do? want to update and --help/man in the terminal to reflect the fork’s name and possibly clarify how it works
  • Should I make some sort of courtesy PR or repo issue offering my changes even though I think it would be (even should be) rejected/ignored? It seems kind of time wasting.
  • In the case where the original upstream was being updated, how do I integrate those with my changes? I’ve had some luck so far with doing my best to guess about the git process, I think using branch, sync, merge. But I couldn’t tell you more than that. Any insight on how this is supposed to go? I have spent lots of time wading through git’s documentation but still find the main ideas kind of confusing.
  • Anything else to consider?

Since I’m just dabbling, I try to stay away from more complicated workflows, or those which require specific system set up, when possible. My experience is that when I come back to it in a few months, a year or two years, I will have forgotten a lot; it might be a different system environment. I need to be able to re-learn everything at a later time. Simple solutions that are widely-compatible, and do not rely on my memory are preferred.

I don’t mind doing a bit more work than is strictly required to learn about the FLOSS process. I’ve done it a few times before and it is useful to me to understand things.

  • PhilipTheBucket@ponder.cat
    link
    fedilink
    arrow-up
    9
    ·
    4 days ago
    • I would give it a similar but distinct name, and just be aboveboard in the docs about where people can find the original project, what the differences are, and about what’s going on. As long as you’re open about what’s up I think it would be hard for any reasonable person to take offense if you prefer a less unixy style of output or whatever.
    • I would create an issue on the original project just explaining what you like and what you implemented in the new one, and saying you’re happy to contribute although the changes may not be wanted et cetera. Just be honest. You’re fine. More communication is usually a good thing.
    • git is powerful. It’s worth learning about the concepts if you do decide to invest the effort. You don’t have to get into a crazy workflow, but having your own ongoing branch and being able to merge/rebase changes from upstream as they happen can make your life easier. However, like a lot of tools from that type of toolbox, it can also make your life a lot harder if you’re not certain of what you’re doing, so YMMV. I would try to read a specific guide about how to set up the workflow you want, not just the reference documentation. Git has a ton of features, 90+% of which you don’t need, and many of its core features are called strange things or work in an unintuitive way.