Interacting with Opensource projects

Whilst this is intended as a generic bit of info to help people understand and interact with Opensource projects, especially those maintained by a community rather than backed by a company, it also has some specific information with regards to LibreNMS and the way things work here.

To help understand things better, it’s worth getting a view on how someone in the core team sees things.

My favorite things in life don’t cost any money. It’s really clear that the most precious resource we all have is time. – Steve Jobs

Typically people get involved (or start a project) due to an itch they want to scratch or they may just want to get involved in OSS to be able to give back. The only thing people give to a project in reality is time and understanding that simple element is important as it’s a scarce resource. Yes you can allocate more or less time depending on how the mood takes you or what’s going on in life but at the end of the day, time is limited for most people. This means when someone is making the decision to write some code or answer a support issue then they are taking time away from something else - please remember that. In general, we want to help you, we want to add new features, we want to fix things but to do so and to do so effectively, how you engage with a project is key…

Asking for help

9/10 aside from the initial interaction with the project whether that’s looking at what it can do or actually installing and running it, you will no doubt need to ask for help or report a bug at some stage. Most projects have various methods of asking for help such as Docs, Forums, GitHub, IRC, Mailing lists, the main website, Slack/Gitter, etc.

Reading the projects documentation should be your first port of call, go and have a read and potentially - go and have another read

If you’d like to ask for help with the potential of getting responses quickly then in most cases IRC, Slack/Gitter are usually a good choice depending on how active a project is. Timezones can make this difficult, the answer to your question might lie with Fred who’s in CET and you’re in GMT and not everyone in the channels know the answer either so no response doesn’t mean everyone is ignoring you.

Don’t ask to ask, just ask the question and if someone can help, they will.

If it’s IRC, don’t paste more than a few lines of config, debug, logs etc into the channel - it’s considered rude so use a pastebin service.

Don’t private message someone without asking if it’s ok first - it’s extremely rare you need to take a conversation privately especially when it could benefit someone else.

Don’t be afraid to repeat the question - just don’t do it after 10 minutes!

If you are asking for help on GitHub, Forums or mailing lists then check first that your issue hasn’t already been asked and answered. These forms of support are great in that past issues are recorded so others can make use of the answers. If you can’t find the answer you are looking then have a look for a guide on how to submit a new issue or feature request and ensure you provide all of the information asked for. If you have to be chased for information then things can take longer or in some cases just not dealt with.

If you figure out the issue yourself, don’t just close the issue - post the answer for others to see.

Don’t ask where an issue is up to, people work on things when they can and asking for an update doesn’t usually speed that process up.

Be polite when asking for help and not like: https://github.com/librenms/librenms/issues/4930

If you get told that the issue or question doesn’t belong in X place, don’t argue about it: https://github.com/librenms/librenms/issues/5720.

If your issue would have been easily addressed by improved documentation, don’t suggest that to the project - contribute it yourself!.

You get asked to provide a lot of information but get short / blunt responses back. If that’s all that’s needed then please don’t expect anything more, this isn’t a commercial transaction with a support team who are there to make you feel special everytime you get in touch Direct responses aren’t meant to come across rude but again it comes down to time - or in some instances a response might be done from a mobile so typing long winded answers back takes longer.

What happens when a dev tells me they don’t see the point in X, Y or Z being done. Unless your issue gets closed then take that as a personal opinion and hope that someone else wants to see what you’ve requested and will implement it. This is OSS and succeeds based on anyone contributing rather than a single persons goals (most of the time).

Some users say they would like to contribute, but can’t code. In reality, any form of helping will relieve time from others that can write code. This can include updating documentation, helping answer questions or even promoting the project.

It’s helpful to try and ask for help in the official channels, we see questions pop about LibreNMS on a variety of websites now and it can be frustrating to see a lack of response or incorrect information being given. We can’t monitor everywhere so instead we ask that you ask for the help you need in the official channels.

What you should expect in return

This is a difficult one as there should be no expectations to a certain degree The reality is unless a project is no longer actively maintained, you will usually get some response from a developer or another user. If you don’t, then the code is open source meaning you could fix it yourself.

The biggest thing you can expect, is not to be treated badly, that doesn’t mean everything you raise is addressed but it does mean you SHOULD NOT be told to f*$k off just because someone doesn’t agree with you.

Helping others

What would be great to see is where every person who may have asked for help or a feature at one time, helps at least one other person, updates some documentation or provides a code fix. That’s a nice to have and certainly not expected of anyone but it would help most projects out long term.

If you can’t do the above, then the biggest help you can provide is as much information as the project needs to help you.