Contributing to the MadWifi project

A lot of people have a lot of suggestions for how MadWifi could be improved. This is fantastic, as it shows that people genuinely care about MadWifi, and want to see it improve.

However, it is unrealistic to expect every request to be implemented. MadWifi is developed by a community of volunteers, and since there are more things to be done than there are people to do them, those volunteers are forced to pick and choose their battles. Changes also take time; even changes which are "technically" simple (such as modifying some of the messages the drivers may throw out) need to be given consideration in terms of how useful they will be to the community as a whole, whether there are any adverse effects to doing so, and whether or not effort is best spent there or in another area which may have a greater long-term benefit.

Therefore, a much better and more effective approach than merely asking for change is to take steps to enact change yourself. "Own the problem" -- if you see something you don't like, resolve that you will do what you can to help fix it. MadWifi's community provides countless ways in which to do this: participating directly in development discussions, adding or submitting corrections to documentation pages, submitting modifications to the code, and so on.

The success of how your ideas are received depends a lot on your approach. While there is no guarantee that an idea will be adopted into the project, here is an outline of steps detailing the best practice method that more experienced members of the community tend to follow in order to get their ideas heard:

1. Inquire
Ask "why is this like this?" Don't make assumptions. Maybe there's a good reason. Try to find out who the people are behind the decision-making process for your particular issue, and talk with them to see if there's a way to create a solution that both meets your own needs and satisfies the existing requirements.

2. Research
See what other solutions are out there that you might be able to extend to meet your needs. See how other people are handling the problem you're currently facing. Talk with other community members to see if they see merit in your idea, or if they have an alternate approach.

3. Propose
In as much detail as possible, outline the steps to fix the problem. Do a mock-up of what you think the solution would look like, and describe how it would work. Anyone can propose an idea. "I think MadWifi should do this." Great! But an idea that has been researched, that is backed up with a plan, and which is able to quantify its purpose and effectiveness is far more likely to get attention and to later be implemented.

4. Refine
Get feedback from the community, as this can often improve upon your original idea. Take criticisms and either address them or incorporate them into your plan.

5a. Be patient
Depending on how well you've written your proposal, you might catch the eye of a developer who says, "Yes! I know exactly what you mean, and I want that very thing too!" You might catch the eye of someone with money who says, "Yes! I will pony up $500 to put into a pool for that feature!" which will in turn attract a developer.

However, bear in mind that change in the MadWifi community is evolutionary rather than sudden and immediate. Change occurs over weeks and months rather then days and hours. Discussion tends to occur in a time lagged fashion on the mailing lists and the IRC channels over time in collaboration. It's not just one person that makes the decision, it's generally a group consensus. Keep in mind that while your proposal makes sense to you, it may not make sense to a majority of others at first.

5b. Be willing to DIY
On the other hand, you might receive luke-warm acceptance, or you might get a lack of response because people don't fully understand your idea and how it would work. Sometimes the best matter is to take things into your own hands, and MadWifi gives you literally dozens of opportunities to do so. You can:

  • Prepare a patch to improve the driver or fix known bugs
  • Check the list of open tickets and see if you can solve some of them
  • Engage in discussion with developers via the mailing lists or the IRC channel to improve infrastructure
  • Add new content to this Wiki to improve documentation
  • Put forward money to hire a developer who would otherwise be working on something else to address your issue.

....and on and on and on.

By contrast, here are some things that will NOT help enact change:

Accusations
Some people take the approach of talking in a very accusatory manner toward developers, implying that they are lazy, selfish, uncaring, and worse. Nothing will make people less sympathetic to your cause than taking this kind of attitude toward them.

Demands
No one from this community is being paid by "MadWifi" (or Atheros) to do work, so they tend to go after issues that interest them, or issues that they're being paid by their employers to address, and so on. That may mean that no one has the interest or the time to fix your specific issue. Either accept that, or take steps to fix the issue yourself, as outlined above. Demanding that it be done only makes people less willing to help.

Impatience
Rome wasn't built in a day, neither was MadWifi, and neither will be your brand new concept. Things take time in order to be properly thought-out, planned, and implemented. Accept this, do not be frustrated by it. If every idea was thrown in willy-nilly, we would not have a chance to reach the stability of a system which we all know and love.

Does this sound like a lot of work? You're right, it is. While none of these steps need take a ridiculous amount of time and preparation individually (an "inquiry" could be a 5 minute conversation on IRC, and a "proposal" could just be a mailing list post), it requires free time, energy, patience, commitment, and skill to see changes through. And even after all of this work, sometimes ideas *still* aren't implemented for various reasons. So try to realize that it is really pretty unreasonable to expect other people both to have all of these qualities, AND to be willing to drop everything and work on your specific issue, all at no cost to you. Have some compassion for the fine folks running and participating in the MadWifi community, and take responsibility to do what you can in order to make it easier for your ideas to see the light of day.

Welcome to the community!


This text is largely based on the Enact change within the Drupal community HOWTO offered by the Drupal project. The original text as well as the one on this page is available under the Creative Commons Attribution-ShareAlike-2.0 license.