Why participation in Open Source projects is interesting and useful. New Open Source projects

January 1, 2018 at 01:14

How to start creating an Open Source project in the new year

  • Ruby,
  • Programming

Six months ago I came up with the idea of ​​creating my own open source project. Instead of test problems for an interview, all I had to do was send a link to the repository, and the prospect of helping my colleagues with their everyday problems energized me even more.

I have always not liked gems for creating administrative panels; any unnecessary movement requires redefining classes; to change fields, you need to make changes in files. After reflection and conversation with colleagues, it was decided to create a new library that would be flexible and would not require dashboards or configuration files.

Define your goals

Each open source project solves a specific problem. Chat with colleagues, chats, forums, tell us about your idea - all this will help you at an early stage to form a picture of what solutions already exist and hear criticism from the outside. Talk to people who already have their own open source projects, they can give very valuable advice, don’t be afraid to ask and take the initiative.

One of the valuable tips that I received at this stage is to pay attention first of all to the project documentation. You can have a very good project, but no one will read the source code and try to understand how it works.

The most important aspect, without which further stages are impossible, is motivation. The idea of ​​the project should appeal to you first of all. Most often, people get used to the tools they work with and fall into a comfort zone.

Planning

Tasks should be recorded and have a clear picture of what stage the project as a whole is currently at. Break down tasks into subtasks, ideally so that completing one task does not take more than 3-4 hours, it is important to enjoy completing small tasks, this will help avoid burnout and loss of motivation.

Choosing a specific task manager is a matter of taste. I use pivotal tracker, the main advantage is that it has a free version for open source projects, tasks are sorted by type (feature, bug, chore, release), tasks can be grouped into releases and a deadline can be determined.

Another nice feature of pivotal tracker is integration with github. If you follow a certain commit naming convention, then within an issue all related changes to that issue will be automatically displayed.

Decor

Every open source project should have the following things:
  • README
  • open source license
  • Contributing guidelines
The README file not only explains how to use your project, but also what the purpose of your project is and how to start using it. If you don’t know how to properly format a README, you can look at other well-known open source projects or use a template.

The license ensures that others can use, copy and modify the project's source code. You need to add this file to every repository of your open source project. MIT, Apache 2.0 GPLv3 are the most popular licenses for open source projects, if you are not sure which one to choose, you can use a convenient service.

The CONTRIBUTING file will help other developers contribute to the project. At the first steps of the project, it is not necessary to pay close attention to this file; you can use a ready-made template from another project.

My mistakes

If you analyze the initial stage, I had an idea, but there was no clear plan. I decided that I wanted to do this without having a clear idea of ​​how long it might take or a specific representation of the functionality that will be in the first version of the library.

I just had a lot of desire and lack of a clear plan
Having also read the history of other projects, not just open source, I noticed that at an early stage there are overly optimistic plans and an overestimation of one’s strengths and capabilities. It’s not so easy to find time every day to write a new feature for a project. In the end, most of the tasks had to be eliminated and the required minimum was left for

Open source software has become a driver of innovation. And in this article you will see this. We will look at the best OpenSource projects according to the Black Duck Open Source Rookies.

This is the eighth edition of Black Duck Open Source Rookies. Each year, Black Duck takes a look at the world of free software and finds the best new Open Source projects that were released that year.

Most of the projects that receive the Black Duck award are developed or funded by commercial companies. Some projects are additions to the sponsors' core products or internal offshoots, while others become opportunities to build on those core projects.

Typically, award winners exhibit three industry trends:

It is an open source web platform for creating chats. Focused on communities and companies that want to create their own internal chat. The Rocket development team has taken a modular, packaged approach, allowing Rocket.Chat to offer an impressive set of features to enable seamless collaboration and real-time communication, from simple text messaging with emoji support, to video calling, multi-user audio conferencing, screen sharing and more. other.

RocketChat has native applications for Linux, Windows, MacOS, as well as mobile applications for Android and iOS. It even has its own app for FirefoxOS, for desktop and mobile devices. And since this is an Open Source project, it is an excellent choice for developers who would like to build and develop their own chat platform.

Mattermost

Another great alternative to Slack is Mattermost, which began as an HTML 5 game development company. It was originally a gaming portal and messaging app aimed at reaching gamers outside of Facebook. As a result, the program was converted into a solution for collaboration within the company, for such cases when the company does not want its data to be received by the provider. At the moment, this is an excellent open source Slack alternative written in React and Go.

Mattermost brings all communication tasks together in one place, through a user-friendly and intuitive interface that's easy to search and accessible everywhere. Users can exchange messages and files using their computers and smartphones, keeping all important information within the IT infrastructure. Mattermost's interface is compatible with Slack and powers software developed for Slack. There are two versions of the program - one is designed to work with teams of up to 50 people, and the other allows you to organize communications between hundreds and thousands of users.

hubl.in

Video conferencing solutions WebEx and GoToMeeting have become standard tools in many offices. These solutions relied not only on native desktop applications, but also on new capabilities in web browsers.

Hubl.in is a free, open-source video conferencing solution from Linagora, the creator of the collaboration platform OpenPaaS. Hubl.in takes real-time communication to the next level by allowing you to use your browser for video conferencing, even without any plugins.

If you are reading this page, then you can try Hubl.in right now. It is based on WebRTC, which allows decentralized communication between browsers. This means your conference is not transmitted to Hubl.in in any way, increasing security and adding another layer of privacy.

MXNet

Deep learning techniques aim to teach computers to teach themselves by simulating the neural network of the human brain and then feeding that network massive amounts of data to learn.

MXNet is a lightweight machine learning library created by DMLC developers CXXNet, Minerva, and Purine2. It applies the experience gained in these projects, and also mixes imperative and symbolic programming styles. MXNet uses a dynamic dependency scheduler that automatically parallelizes both symbolic and imperative operations on the fly. The focus on optimization makes MXNet fast and light on memory. The library is portable and lightweight, and easily scales even across multiple machines. It can even be used for tasks such as image recognition on a smartphone. The DMLC group wants to make open source software widely available. The MXNet project also contains a set of guidelines and diagrams for building machine learning systems.

Bazel

Bazel aims to speed up the build process and improve reliability through a shared code repository where all software is in an open source state. It automates testing and releases and uses both concurrency and caching to speed up processing. Particularly suitable for projects with large code bases, based on multiple programming languages, or across multiple platforms. The main feature of Bazel is thorough testing in the difficult conditions of working at Google. The current version supports Linux, OS X, but not Windows.

React Native

Mobile app developers face a difficult choice: develop apps for iOS or Android using native tools, or use cross-platform ones. On the one hand, native apps are faster and offer a better user experience. However, developing such an application means writing it at least twice in a variety of different programming languages. Cross-platform tools like JavaScript allow them to write a program only once, but these applications often perform poorly and don't look very nice.

React Native is an open source project supported by Facebook. It allows you to move in two directions at once. By creating your applications using the React JavaScript library, you preserve the logic of JavaScript applications, as well as the user interface is completely native for both iOS and Android shells. For developers, React Native represents a new approach to writing mobile applications - learn once, write everywhere.

Kontena

Docker containers are a revolutionary way to deploy applications. But many organizations are still struggling with a container management solution.

Kontera is an open source project for managing containers. Kontera has many new technologies and capabilities to speed up deployment. There is support for multiple hosts, multi-AZ containers, Weave network technology, VPN access to containers, and an intuitive deployment wizard. Kontera has everything a company needs to develop, deploy and manage container systems. It can be installed on any cloud infrastructure. Since it is open source, it will soon expand beyond Docker and support Windows containers, CoreOS PKT and other container technologies.

Nuclecule

The Docker open container initiative provides an excellent wrapper for applications. But it still cannot manage asset dependencies and relationships between instances in multi-container applications.

Nulecule is a specification for packaging complex multi-container applications to ensure proper deployment. Nulecule, supported by Red Hat, offers a holistic system for managing relationships between containers. Most container management systems treat multi-container applications as individual objects rather than as a whole. This approach limits the flexibility and portability of the entire application. In contrast, a Nulecule-based solution creates a standardized way to describe an application, including all dependency references and communication metadata within each container image.

InSpec

The DevOps workflow is often bogged down with complex specifications and slow development. InSpec provides a path that speeds up work by automating the compliance verification process. If compliance is an integral part of the development process, this is one of the best solutions.

As an open source solution for determining compliance, security, and policy requirements, Inspec offers many sophisticated features. Including tests to verify compliance with metadata for periodization, as well as a command line interface for convenient execution of tests. Users can control the process using a specially designed programming language. Because Inspec runs on a local system, it can examine any node in the infrastructure.

Hygieia

Tech giants are not alone in investing in free software. This year, Capital One tried to find a toolbar for developers, and neither commercial solutions nor OpenSource projects were found. Therefore, the company created its own - Hygieia. The panel was released last year and its source code is published on GitHub.

Capital One uses Hygieia in the software development process to give teams and leaders a simple, accessible, and fast way to gain insight into the current state of the development process. Instead of showing only part of the development process, as other panels do, Hygieia offers a complete overview in two options: widget and slider.

The widget option shows more detailed information: features of the current stage, code contributions, integration, code analysis, security analysis, functional testing and deployment resources, etc. The slider shows the degree of progress of each element, in the development, testing and deployment stages.

Glucosio

When programmer Benjamin Kernes was diagnosed with type 2 diabetes in May 2015, he realized there were no open-source tools to track glucose levels or other metrics for people like him. In September 2015, he and a small team released Glucosio, the first open source glucose monitoring app.

Glucosio users can track their blood glucose levels and get helpful tips through the Assistant app. Users can also contribute to diabetes research by providing anonymous demographic or personal information. Glucosio is currently available in 20 languages ​​and has been downloaded on every continent. The developers also plan to offer a free API for researchers so they can access the data users leave in the program.

Vault

San Francisco-based HashiCorp is known for its tool for creating and configuring a lightweight, portable development environment - Vagrant. The company's new open source project is Vault, a tool for securely managing secrets. This may contain keys, APIs, passwords, certificates, employee credentials, and other sensitive information. HashiCorp has excellent Open Source projects, we can say - keep it up.

Vault encrypts and decrypts data without storing it, and also allows security teams to define encryption parameters and developers the ability to store encrypted data without developing their own encryption algorithms. Vault can even generate private keys when prompted by AWS or SQL databases, and then automatically revoke them once they've been used. It maintains a single access interface with tight controls, as well as detailed audit logs, so users can rest assured that their secrets are safe.

Rancheros

Rancher Labs has developed highly efficient container running technology - a miniature operating system with everything you need to run containers, but nothing more. RancherOS is a 20MB Linux distribution specifically designed to provide an easy way to run and manage Docker containers. The idea is that it is similar to CoreOS, but with one difference - everything here runs through Docker containers, even the operating system itself.

In RancherOS, Docker runs directly on top of the Linux kernel and distributes all user space services as Docker containers. The Docker system instance initializes all system services (Udev, DHCP, TTY), each of which runs in a separate container. A Docker user instance creates separate containers for all users, within the user's main container. RancherOS also provides updates via containers and can use various container management systems.

OWASP Security Knowledge Framework

The OWASP Foundation (Open Web Application Security Project) is a non-profit community that provides resources and tools for securing web applications that OpenSource projects develop. Many developers are unaware of the security risks of vulnerabilities they face. To this end, OWASP SKF (Security Knowledge Framework) provides a free and open source tool for securing web applications. It can also serve as a tutorial to teach the basics of web application security.

SKF supports software developers throughout the entire life cycle of their product, ensuring its safety. It analyzes the processing methods that developers use to edit their data, and then looks at patterns for known vulnerabilities. Once completed, solutions are provided to fix security issues.

conclusions

These were all new Open Source projects awarded the Black Duck Award. The awards take place every year, so we will see new Open Source projects for 2016 only in 2017.

This is not an empty call, in this post I will tell you what bonuses free services and open source projects bring...

And so I’ll start by listing my projects (I’m not modest or prolific):

  • Free service: Charts Builder (~3,000 visits)
  • jQuery plugins: (a) Slideshow (~2,500 downloads), (a) Sexy Images (~500), jQuery iPhone UI (~3,500)
  • WordPress plugins: (a) Slideshow (~14,000) and (a) QR Code (~300)
  • WordPress themes: Constructor (~200,000), Black Urban (~16,000)
  • PHP libraries: ZFCore (~800), jQuery PHP (~7 500), Yandex XML (~700), (~1 200)
  • Miscellaneous: iCMS (~700)

Now about the benefits that each of these projects gave me:

Development experience

When developing open source projects, you understand that your code will be viewed, analyzed, compared, and thanks to this, when writing code, you keep a tight rein on yourself. Your code becomes more beautiful and simpler, it becomes easy to learn and flexible to change. This is especially true when you are not developing a final product, but a library that will be used by other developers.

// Create new instance of Yandex class $Yandex = new Yandex(); // Set Query $Yandex -> query($query) -> host($host) // set one host or multihost -> page($page) // set current page -> limit(10) // set page limit -> geo($geo) // set geo region - http://search.yaca.yandex.ru/geo.c2n -> cat($cat) // set category - http://search.yaca.yandex. ru/cat.c2n -> request() // send request ;

Communication experience

In my daily work, I rarely communicate directly with customers, but when I support my projects, I do so all the time. Someone asks something, someone asks for features, and someone points out errors. I remember there was a time when every bug or change in functionality in working projects was met with hostility, with an open source project such a trick will not work, you either react adequately or lose the user. This arrangement disciplines quite well. There are no unanswered letters in my mailbox, although sometimes I have to start a letter with the phrase “sorry for the late reply letter.”

If your product begins to be in demand, then a little by little a community begins to grow around it. So on the topic support forum I don’t need to answer all the questions; there are already people who help me. Somehow there was a message like this:

Thats all when ANTON says anything listen to him he is always right:D

Monetization

The Charts Builder service, like most home pages, is monetized using Google AdSense, with Text-Ads-Links hanging here and there, the income is ~$20 with AdSense and $60 with Text-Ads-Links per month (that’s only 8 links).

Of course, some true SEO specialists will say that this is a meager income and will recommend SAPE, XAP, Begun, etc., or some other system, but I’ve already tried a lot, and I can say that you advertise these products exclusively with referrals links (although at first the return is impressive, until the little ones are blown away).

On each project home page I have a “PayPal Donate” button - this is what brings results. Since its appearance, which is December 2009, I have received ~$600 from conscious people. To more actively stimulate users, the standard button has been replaced with progress bar:

I also plan to open a page with a list of all benefactors, although of course this is more like buying a link, but who cares? The project page is made in a similar way:

Bonuses

Probably the main bonus is the spread of the story that the author is a “cool developer.” To confirm this theory, a sufficient number of letters with offers for permanent or temporary work have accumulated in my mailbox, the main thing is that there is a desire.

Well, another bonus - I recently liked the IDE PHPStorm, and I now have a free licensed version for open source developers installed:

WordPress theme developers have an additional bonus in the form of incoming links (SEO specialists will be able to translate these numbers into money):

Labor costs

Everything is not so rosy here; development and support of projects naturally takes time. I can tell you about the creation of the service http://charts.hohli.com, there was simply no support or any changes, only development and delivery. The development took me one Sunday day, that’s right, I just read the news, saw a message about the release of the new Google Charts API and spent the whole day on development. The cost of my day off is €165. Later, having gained experience, the service was updated in 16 hours - +€150.

As for support, every day it takes me on average 15-20 minutes, which in no way affects my effectiveness, and on the contrary, you help a person in the morning, and “your mood has improved.”

I practically don’t do any promotion of projects, an article on a blog + an article on Habré, that’s all.

P.S.

In fact, most of my projects are about learning new things, I just don’t want to waste time on simple “hello world” examples, because I want to create something really useful. I learned the Google Chart API - I created charts.hohli.com, I had to learn WordPress - here's the Designer, I studied the capabilities of jQuery UI - and now the iPhone UI has arrived, I can give many examples.

Practice in open-source projects will help when compiling a portfolio for employment. The article provides recommendations for studying this topic.

Before you start...

3. Instant answers DuckDuckGo

If anyone didn’t know, DuckDuckGo is a search engine that does not collect information about users. Instant replies is a feature that allows you to receive answers without having to open the site. Hundreds of people managed to take part in the development of this feature; many ideas for development are on this page. DuckDuckGo also provides good documentation and encourages new users to create cheat sheets for the service. To see what such cheat sheets look like, just type the phrase “wordpress cheat sheet” into a search engine. If you're having trouble, there's a Slack channel and a wiki page on the Github repository.

4.

5. Mozilla Projects

Without a doubt, Mozilla is one of the leading organizations in terms of the number of open-source projects. Contributing to Mozilla projects may not seem very easy at first glance, since it is difficult to find tasks marked as “for beginners” due to the fact that there are a lot of tasks in general. Fortunately, a separate website has been created where you can filter tasks depending on your interests. A beginner should pay attention to the filter simple bugs down in the filters section!

6. Pinax

Pinax is an open source platform made using the Django web framework. This is an ecosystem for reusable Django applications, themes, templates for a new project. In their Github repository, in the Issues section, there are issues for beginners labeled first-timers-only. They are neatly documented so that you know what you should do.

I want more projects, what should I do?

  • Search by tags in repositories that interest you. Surely there will be some task in issues that is marked as easy to solve.
  • Visit the following resources:

This is a translation of a note by Brian Ford.

I wrote this guide to help anyone join or contribute open source projects to GitHub. One of the reasons open source is cool is the desire of people to help each other.

Whether you've been programming for years or are just getting started, there are a few things you need to know to use GitHub productively. There are a lot of guides on “how” to do something from a technical point of view on GitHub: what button to press, what commands to run, and the like.

Publishing your work on GitHub is intimidating in the beginning. There are few guidelines available regarding etiquette, practices, and expectations. This guide aims to fill in the gaps.

As you read this guide, remember that it is normal (and even expected!) to make mistakes. You don't need to memorize every little detail. Do your best and learn as you go.

The guide assumes that you are working with a JavaScript module installed via npm or bower, which is hosted on GitHub. Apart from the commands specific to npm or bower, most of this guide applies to other platforms and languages.

How to ask a question

Please search and read existing posts before asking. Check out the docs, Google, GitHub, and StackOverflow. If your question has been answered many times before, then the developers responsible for the project may be tired of repeating the answer.

If the project is small, it is usually customary to ask questions via an issue (see below). If it’s large, they most likely have a mailing list or IRC channel through which it’s best to ask questions. StackOverflow is also a very good resource. Whenever possible, ask questions in a public forum. This way, anyone can answer the question, and the answer will be available to anyone with the same question. If nothing works, you can write to Twitter or email the project support.

Sending a bug notification (issue)

On GitHub, notifications about bugs or improvements are called "issues".

Has this been asked before?

Before sending a notification, you need to look for existing issues. Don't forget to check both open and closed issues. If you find an issue that's similar to yours, read all about it.

If the issue is the same as yours, you can comment with additions to help the project maintainers debug. Adding a comment will automatically sign you up for email notifications, which can be useful when there are updates regarding this issue. If you have nothing to add, but want to receive notifications of updates by email, you can click the "watch" button, which is located under the comments.

No, no one asked

If you can't find anything in existing issues, feel free to submit yours.

You need to check that the version of the project is specified, as well as the versions of the applications associated with it. For example, make sure to include the version numbers output by the node --version and npm list commands. If you notice that you are not running the latest version, use npm update and confirm that the issue is still present.

The project's developers greatly welcome thorough clarification. This usually helps them deal with the problem faster, which is good for everyone.

Improving the code

The best way is to "Fork" the repository on GitHub. This will create a clone instance of the repository in your GitHub account.

Before you improve your code, it's worth focusing on what you specifically want to do.

Each commit should do one thing, and for each PR (see below) there should be one specific improvement.

Forking

  1. Click on Fork in the repository
  2. Go to your fork inside your account
  3. Do git clone

Correction and testing

Ok, now are you ready to fix the code? Not really! Before you start editing, you need to create a branch. Branch is like an alternate timeline. You can read about git branches.

Making a branch: git checkout -b something

If you're trying to fix a bug, you might want to name the branch "fix-short-description". If you're adding functionality, "feat-short-description" is a good name. When you change something in your code, you might want to try it out inside an application or larger project.

Regarding the code style - just try to imitate the style of the existing one. Don't puff on it too much. If the owners don't like the way your code looks, they will suggest changes.

Most projects use test suites to ensure that existing code functionality does not change due to changes being made. This helps keep the software stable.

Commits and pushes

git commit -m "your commit message"

Using your own changes

Although it's not obvious, you can start using the code in your projects right away.

Sending your changes back to the project

You've made your changes, tested them with git commit, and want to push them back to the project so they can be included in future versions.

On GitHub, this is done by submitting a "pull request" (PR).

Sending a pull request

The golden rule of sending a pull request is to do everything the way the project owners intended. You can't read the minds of those responsible for a project, but you can look at what they've done in the past. Evaluating these actions in advance can increase the likelihood of your changes being accepted.

To put it simply: try to imitate the style of existing code. Pay attention to indentation and the style of curly braces in your code. Does the style contain early return statements or are they avoided?

The code is not the only thing worth paying attention to. Note the time and format of message commits. Some projects use the present tense: "fixes the bug". And some are past: “fixed the bug”.

A good way to check this is to use git log and read the latest commits.

Other things to remember:

Not change the software version number (in package.json or bower.json). The project owners will take care of this themselves when they release a new version.

If the project is supported by a corporation, they may have a Contributor License Agreement (CLA) to avoid legal problems.

Project owners may be busy, so give them some time. Developers involved in open source often contribute to multiple projects. It's not uncommon for a developer to receive dozens of bug notifications a day, so be patient.

If they don't respond within 2 weeks, you can comment to bring the topic to the top. Something like "ping @ProjectMaintainer" is usually sufficient. Even if you don't hear from them after that, email is a good way to get in touch.

The team can respond in three possible ways:

  1. Everything merges (merge). Hooray!
  2. The person in charge of the project asks you to correct something in the PR before accepting you. We'll discuss this below.
  3. The PR closes without your changes being added. Typically, those responsible for the project will provide a little clarification. If there was a new feature from you, there may already be a way to make the code do what you want, you just didn't notice it. If it's a bug fix, they might want to solve the problem differently. Don't let difficulties discourage you from continuing.
Fixing issues in pull request

When the team asks for changes to a PR, newcomers mistakenly close the existing one and create a new one. You shouldn't do that! Existing PR can be easily updated.

First, make changes to the relevant files. Add the file using git add as you already did:

git add some-file

Then you can change your previous commit like this:

git commit --amend

This command puts your incremental changes into the previous commit.

To update a commit in your PR, you need to force push:

git push --force

The --force command tells git that you want to overwrite the previous commit.

Another common mistake is making multiple commits instead of making one change.

My PR was closed, but I want to use my changes!

Good news: Even if your change is not accepted into the contributor's repository, you will still be able to use it. npm allows you to install from a GitHub repository

$ npm install user/repo

You can also use your changes and simultaneously see changes to the repository source code. This is usually called "maintaining a fork" of the project. To do this, you will need to add another remote .

Creating your project

Before starting your project, please study the existing ones well to see if there is anything very similar to yours.

Search existing projects

$ npm search

Sometimes you find an old project that is no longer supported, but it solves your problems. See above for how to fork.

Bonus: Make a list of notes as you work. If you find a module you like, you can use the notes to improve the “See Also” section of the modules you came across while you were searching by sending them a PR. If you don't find the module you're looking for and don't create your own, you can turn these notes into a "See Also" section for your module!

Start of the project

Starting a new open source project should be a last resort. Why?

Practical experience: Don't publish anything to npm until the project has a reasonable minimum functionality.

Remember: you can always use npm link or npm install user/repo

Project name

If your module is a plugin, usually the best way is to prefix it, depending on what the plugin is for. Some projects have guides or agreements on how to do this. For example, AngularJS components are usually called "angular-something", Gulp plugins are called "gulp-something", and Karma plugins are called "karma-something".

Write Readme

A good readme should consist of the following parts:

  • An explanation that fits into one sentence.
  • Installation
  • See Also

This is true important. If there are other modules with similar functionality, your module should explain how it is different from the others. This section must be linked to other modules. This will help others decide when to use yours.

Writing tests

There are many ways to write tests. Their importance is that if they fail, the process will exist with an error code. You can use assert or if (condition) ( process.exit(1) ) for this.

Bonus: You use a CI tool like TravisCI.

Publishing to npm

Before publication:

  1. You wrote a README.md that explains what the module does. It should include a See Also section that links to other similar packages.
  2. You've written the tests. The tests should be run with npm test and they should pass.

Bonus: Find someone to help support the project. It’s great if someone can help review issues and merge PR. It's impossible to guess how much free time you'll have in the future. It’s a shame to have unresolved bugs or unresolved PR in a useful project.

Etiquette

Typically, people leave communities that seem unfriendly to them. To ensure that everyone feels welcome, it is important to treat everyone gently and with respect.

Most often this is not a problem. But sometimes developers have breakdowns, emotions run high, and they get offended.

Assuming everyone is doing their best

this problem should be obvious to solve! why hasn't anyone solved it?

Perhaps the project owner has other important things in life that he needs to attend to. Prioritizing life's tasks does not mean being lazy. The health, happiness and well-being of a real person on the other end of the Internet is much more important than any bug.

One of the powerful aspects of open source is that you can always make a copy and debug errors yourself.

You obviously don't understand what I'm talking about!

This type of comment is especially off-putting to newbies. Making mistakes should be completely acceptable.

This is also problematic because the feeling of guilt also spreads to the surrounding participants. Perhaps you could explain the flaw more clearly.

It is absolutely normal to feel angry because you are powerless. Programming is one of the most complex human activities. But despite this, we must not lose sight of other people's points of view. Community is a much more valuable component than code, and being respectful is more important than being right.

Conclusion

Thanks for reading. I hope this guide will help you get what you wanted from open source.