How can i teach myself to contribute to these projects?
from philanthropicoctopus@thelemmy.club to selfhosted@lemmy.world on 14 Aug 05:33
https://thelemmy.club/post/54304985
from philanthropicoctopus@thelemmy.club to selfhosted@lemmy.world on 14 Aug 05:33
https://thelemmy.club/post/54304985
I use open source self hosted software everyday. I love the community and I would love to be able to contribute to some of these projects.
As far as code goes, I basically no nothing about how it works. I see the development section of the repos I use and again, I’ve go no idea how it works.
How can I teach myself how to offer small improvements to the projects I use?
threaded - newest
Not all support of oss is code related. Updating documentation is a really important part too but programmers are generally bad at it.
Translating documentation to other languages too.
For a project I liked I saw that the translation of the UI was only about 1% complete for my native language. I decided to dedicate the weekend to get it above 95%. This was apparently the part that seemed too hard for most to make a dent in, but across several new versions my language is still 100%. I think my groundwork made it easier for some sporadic contributors to get a small bit of dopamine when updating the few new strings in a release to see it hit 100% again.
You are the hero your community needed! It makes a huge difference for a lot of people when they can read a screen without having to guess what the English words mean.
Please dear god let STM or Nordic someone hire some technical writers for Zephyr, not just Nordic documentation.
The data structures, macro basics, and core concepts are OK, but for example ADCs have literally 0 documentation at all, documentation about DMAs is barebones at absolute best, non-led PWMs is not good, etc…
Pretty much every single peripheral needs 5x-100x the documentation it currently has lol.
Sounds like you gave yourself a hobby there mate.
I am already trying to understand all of it first myself. In the middle of a full-strip renovation; I don’t think I will have time to spend on it 😂
And translations for the application itself in some cases, so that it can be ran and used in different languages. Human contributions to the language files of the application is what my project needs more than anything else, and if you do speak a non-English language fluently, I’d be very grateful! Here’s how I’ve worded it for my project:
First: Great that you’re motivated to learn this stuff! When it comes to programmers I’ve worked with, usually the best ones are those who learned programming to do something for FOSS or wanted to create a thing themselves.
Second: If you’re planning on university, an IT degree doesn’t hurt. You’ll learn a lot of stuff that -can- be useful. At the same time you don’t need one.
Practically though, start learning a programming language that is relevant to one of the projects you care about. If you want to learn programming in general, start with Python for a very easy introduction to the basics. If you want to learn more about how computer work (you should), learn C. For learning programming, I recommend books instead of websites, especially if you learn a system level language like C.
Once you’ve learned a bit of programming - apply it! Go through the bugtracker of the software you use, and find a bug someone has already solved. Read what the bug was about, then read what changes were made and understand why that fixed the bug. The most important practical skills for a programmer are reading other people’s code (especially for what you want to do) and debugging. Remember that the most common question a programmer asks is not “how do I do this” but “how does this work?” Another common one is: “WHY does this work?”
But you may also be able to contribute without programming. Many of the software you use requires people who understand how the operating system works to configure it, package the software, and help others like you to solve problems. All of this can be done without much understanding of programming if you spend some time to get familiar with the manual of your software and how the software interfaces with your operating system.
Good luck!
Actual “C” or can you do C++? I’m currently learning Python and was thinking about getting into C++ as well.
Don’t learn C++ before C. C++ is a massively more complex language whereas C, once you understand the fundamentals, is quite simple.
If you want to work with projects that use C++, then by all means.
Programming in general?
Probably more that if you want to work on graphics software, you need to understand graphics programming?
That’s unfortunately very difficult. I know of no good way to do that. With specification based software, you can at least read the specification or related standard and then it flows from that how it should work. With programs that server a different, specific use case, there is a manual, and flow to things and then “things stick out”.
If there are issues, you just read a bunch of issues and read the code that they are about and get a feeling for why the issue is an issue and why the code is the way that it is.
I remember one thing I helped with for a short while, didn’t use the python “with” file writing dialogue, because the file they were writing was massive and opening it in one place, then doing a bunch of functions that wrote and appended to the file and then closing it somewhere else, was the best solution, even though it looked unclean at first.
Which projects?
Can you look at the source code in the repos and make any sense of it?
Are there open issues connected to the repo, that you think you could make some headway with?
If you have 0 experience writing code, I think contributing to an existing project isn’t a good way to start. Better to text a textbook and work through some exercises, and do a few small projects of your own, before trying to join an existing team where as a total newbie, you’ll be a burden. Note that “small project of your own” can involve forking something that exists and making your own changes or additions. That doesn’t require much attention from other people.
Then, contribute once you feel you are ready to contribute.
If you really want to contribute to some projects, the first step would be to take a course in that project’s programming language. There are many decent free courses on YouTube, and even more fantastic courses for very cheap on websites like Udemy or Skillshare.
Next, you’d probably want to keep learning the language (e.g., by solving LeetCode challenges), read more about programming and software development in general, as well as check out another course or a tutorial about the specific frameworks/libraries or even just paradigms that the project works with.
A good starting point is FreeCodeCamp on YouTube. Courses there are excellent for the proce of 0€. If you have difficulties with anything - you can always ask a chatbot. If you opt for courses on something like Udemy - you can always just ask the instructor and they’ll usually respond within 2 hours, timezone permitting.
Quick mention about Chatbots: In general they can be useful if you already have a grasp on something, so you can detect potential nonsense better. Additionally they can act like a drug especially on lonely people, and any company tries to sell them to you as awesome code generators. Yet Mistral AI already generated an answer to me telling me to dd my encrypted root hard drive for a speed test, even doubling down on it being safe.
Not saying they can’t be useful for OP. Just that they’re like a handheld circular saw*, a powertool better only used by people who already know sufficient basics about wood.
*where the salesman got rid of the safety handle and tells you to “just let it go on its own”.
True, it’s always important to be careful with chatbots, even when used for simple tasks.
From my experience, they work fairly well when asked to explain code or error logs. For reference, I mainly tested Gemini and Deepseek. Apparently Claude is the best for coding, but I haven’t really tried it yet.
Personally I’d avoid both Mistral and Copilot. I used to work on Copilot, so unfortunately had a lot of exposure to it. Tried Mistral for a while too.
These two are the worst LLMs I’ve used so far. Honestly probably worse than local Qwen with 27-35B parameters. I feel a little bad hating on a European company, but unfortunately it’s way behind competition. At least from my testing.
Interesting. I tested ChatGPT and Mistral and oh my god, ChatGPT was abysmal. Hallucinated way harder. Mistral is okay if being used on highest settings.
Did you create an account with Mistral? Without it they only expose a low-end model to the web, which isn’t properly declared last time I checked. Can be the free plan, I guess they just want to avoid their infrastructure being hammered.
Personally all those Silicon Valley pricks can offer whatever, I don’t even have a Google account anymore and couldn’t be happier with that. Not saying Mistral is optimal, but at least they’re not part of the current US swamp. And I at least somewhat believe they actually read the damn GDPR. I’m totally fine with it not being the “cutting-edge”, especially given the cutting-edge cuts straight through culture and people’s lifes on purpose and with maximum brutality, and I seriously liked to see their image generator being way worse as well as Mistral refusing to open sites that banned it in the past (if they changed that behaviour please let me know). Not to mention their site isn’t even remotely as infected with trackers and other junk as the others, at least that’s what I’ve read (forgot to bookmark that hackers’ analysis I’ve read a year ago unfortunately).
Yes, I did make a Mistral account. Forgot to mention that I tested all of the mentioned chatbots on free plans, except Copilot, which I had the highest tier plan for, as part of my job. Needless to say, even on the highest tier Copilot performed the worst. Congratulations, Microsoft.
I do appreciate Mistral being European and maintaining better values than American competition. That’s why I feel bad rating it so low. Although as you said, many tasks that LLMs are useful for don’t require the cutting edge at all.
In fact, Mistral Vibe (I preferred the name Le Chat, but oh well) is probably more than enough for most people. It’s just that availability of much better models makes it look worse than it is.
There’s also the question of system prompts. ChatGPT has been known to work considerably better with a good prompt setup, to the point where it’s not one of the worst chatbots anymore. I was only testing the defaults. It’s entirely possible that setting the right system prompt for Mistral improves it noticeably.
At the end of the day, however, if I can run a small, open-weight model locally with comparable results - using a huge, cloud-based and closed model makes no sense to me. I’m not connecting to any cloud unless I really need to.
Alibaba is releasing Qwen 3.8 27B in a little over 3 hours from now, so I’ll have to try that too. Though I’ll probably wait for fine-tuned community releases to make a more detailed comparison.
Echoing that the best place to start is to get a handle on programming as a concept. Not because we’re trying to gatekeep the good stuff behind the scary programmer voodoo, but because otherwise you’re basically attempting to edit a book in a language you don’t speak (and the reader is very picky about grammar).
That said, you can absolutely teach yourself to code! Hell, if you figured out self hosting I’m willing to bet you’ve probably already got a handful of transferable skills.
In the interest of disclosure, I learned programming as part of my degree (took a Java class as a resume booster my first semester and ended realizing that I preferred coding to calculus and switched my major), so I’m not exactly a wealth of knowledge in the self study department. However I would recommend a course that has labs/ challenges/ projects to practice what your learning. Everyone learns differently, but I’ve personally found that I picked up programming concepts better when I got hands-on and applied them in my assignments.
The programmer’s open secret is that generally once you know one programming language, it’s pretty easy to pick up another. For example, Java and Python might write them in different ways, but at the end of the day a loop is a loop and as long as you know you need to repeat some code until some condition is met, it’s perfectly acceptable to Google “loop in Python” or “[Java concept] in Python”. In other words, it doesn’t super matter which language you start with; just pick something and stick with it (bonus points if you can turn around and tinker with an OSS app with what you’re learning).
It depends on the project. Often there’s a “Contributing” page on its website or a file named
CONTRIBUTING.mdor similar in the source tree. Start from reading it. Sometimes information there is aimed at experienced developers, but sometimes it is very friendly for beginners.Train yourself on the tech and you’ll be able to contribute more. Also, you are contributing greatly already by making posts like this.
Self taught programmer here. If your goal is to contribute code. Get the project’s code, learn how to run it. Go pick an issue, great if it has a first time contributor tag or something. Try to fix it. If someone fixes it before you, now you can compare fixes. Sounds simple? It kind of is, but there are some side quests involved. This processes will force you to learn the bare minimum to get the task done. Your solution will most likely be shit but that’s great, you can only get better. Programming is less about knowing how to do something and more about figuring it out as you go. Google, chatbot/llm, read the docs, ask others. Edit: Forgot something important: Be open to critique, programming is a craft and there is a lot to learn. Being bad at it is a given for most. Also most programmers are kinda bad at communicating so they may sound harsher than they are.
I’m going to echo what others have said here but hopefully clarify it somewhat. For most FOSS projects you can contribute by code, documentation, writing/reviewing bug reports, or other project management tasks. The projects probably have a “Contributing” section on their website that will help you get started and might even have an “easy tasks” or “good for beginners” section.
If you’re primarily interested in contributing by writing code, then you need to learn to code. Pick a language that a project you care about is written in and find the beginners tutorials.
You going to want to learn the basic tools the project uses even if you’re not writing code just so you can interact with the project’s community, so probably git, their bug tracker, and whatever they use for documentation and translation.
And don’t be surprised if it takes a while to get that first contribution in. FOSS developers tend to become grumpy with time and generally have high standards, and due to the massive amount of LLM slop being thrown their way these last few years have often become even more so. But your work will be appreciated if you stick with it.
Just a note to say that devs of large, well established projects are always receptive to donations. A lot of these projects have demo sites, which cost money. So, if you can’t contribute to the code side of the project, a few $$ here and there is always welcome in my experience.