views:

116

answers:

3

I`m reading the code of some open source project. I see that in one of the places code is not written well and could be changed a little bit to increase readability/design/anything else here that improves code and makes it easier to work with this code.

Is there a common way to report such changes? I know you can become a contributor, make a patch, suggest something. But If you do not want to dedicate too much of your time to this project, you just downloaded, read, thought of a change, wrote it, posted it somewhere as a suggestion.

Actually I'd prefer ability to post suggestion for all to be seen and it's like learning with community, but just made flexible.

+3  A: 

You could post snippets with comments to the project forum, bug tracker or mailing list. Each project manages communications and reporting in a different manner. Example: I've heard Mozilla devs tends to ignore the comments on Bugzilla, so that's maybe not a good place to comment about Firefox changes.

If you want to write a very long piece on it, you might be better off blogging about it and then linking to that. I'd be careful about the tone of your words. Things may be that way for good reasons. Try to understand where they are going with the project and their schedule. Perhaps ask why things are that way, and clearly state what the issue might be and who might be impacted.

Making patches for changes is considered to be good practice and encourages people to accept your inputs. If you are not actively creating patches for projects is it often not as quick to turnaround a patch for something like this, but it might give you more influence. My personal opinion is that this is a good thing. It separates the wheat from the chaff in terms of submissions and people need to be persistent.

BrianLy
A: 

Unless your efforts to fix a particular project fulfill some kind of minimal requeriment, will it only be possible to contribute there. It takes some time to adapt your change, take a look at your patch, verify, integrate etc. And if you spend too little time, it's more likely for your patch to have low quality, address an already discussed issue or be a mere misunderstanding of the concepts.

So developers, who mostly work for free, risk their valuable time to take a look into your patch with probability to eventually completely rewrite it and waste time they were going to devote to more important issues. But if you spend more time working, it would be less risk for them. How to determine you worked much? Well, then the effort required to contact developers would be smaller fraction of your total effort, thus you'd find it not problematic to overcome some sort of bureaucracy in reporting problems.

The fastest ways are:

  • Post the patch to the mailing list with a brief description.
  • Go to IRC channel of the project and pastebin the patch, making sure someone eligible will take care of it.
  • File a bug in their bug tracker, briefly describe a bug or an improvement and attach your patch there.

Too complex? Ha! To contribute to OpenJDK project you have to sign an agreement and send it to Sun (by usual mail or fax). Well, that's what "complex" means! And register in bugzilla, activate your account and open an issue with a patch is not complex.

Pavel Shved
You are all talking on quite a huge changes. But I`m suggesting like a pair programmer with all the internet: can you do pair programming when you need to post code, then wait it`s acceptance for quite a long time etc? What if changes are small? You just like to read code and find small things that could be done better. All you need is one person that knows the part you are going to improve and make him read your suggestion. I`d like to be able to comment on that but it`s not mandatory.
Yaroslav Yakovlev
In pair programming you work with a person you know and who shares responsibility with you. _This_ allows the technique to bypass such a bureaucracy as bug-trackers, mails, etc. When you contribute to someone else's project, he's responsible for its work and therefore he uses a different _process_ for writing the code. OTOH finding small things to be improved is sometimes not worth it -- not all software can be made ideal with a resonable effort.
Pavel Shved
Agree that you work with person you know. But why not change it? If you see the suggestion is good why not make it, especially if it is fast? Didn`t you ever asked for solution on forums? Solution can be given with people you do not know. You are just asking people to share their experience with you and they do. Why not make it possible for people who want to suggest improvements fast let them suggest it? You can always refuse it. It`s just a way to share experience and get a feedback from project team.
Yaroslav Yakovlev
It's saving time for you, the improvement suggester. It's not saving time for a project developer. And what I was talking about is not matter of _knowing_ people, Ii's a matter of _responsibility_. And since you can't even register to bugzilla, that hardly makes you responsible for a project.
Pavel Shved
you are suggesting. It`s not about being fully responsible for the project. Actually don`t want to push but it seems all the arguments are about "now people doing it other way. and what my suggestion doesn`t match the common pattern". I don`t think it`s evil and why not give it a try? Or you think it is hopeless anyway? :-)
Yaroslav Yakovlev
It is hopeless. OSS developers are so tired of such sage advice. Register to bugzilla, send patch and you're a responsible peer trying to help developer in the way _he or she_ wants to receive help. You're cool and your patch gets accepted. Anyway, you spent more time writing comments here ;-)
Pavel Shved
A: 

To start out, in The Netherlands there is a saying that goes something like this:

"Advice that nobody asked for is seldom appreciated"

If you want to help out, then make sure that you're being helpful.

Don't try to look smart merely by pointing out other people's mistakes without helping out any further. That's not going to benefit the project, it demotivates the developers, and it's going to make you look bad. Besides, most likely the writer of the software is more aware of problems that threaten the project than you are.

Good example:

"I saw that you use technique x and y in the code. I've got good experience with z. Did you ever consider using that?"

Good example:

"Hey, I use this software every day with great pleasure. I've noticed that loading of files is a bit slow. I checked the code and I suggest caching the result of x and y between iterations. Unfortunately I don't have time to make a patch, so I've reported the issue with my suggestion in your bugtracker."

Bad example:

"Dude, I just looking into your code. Man, what a mess. Any noob knows that you should use useful names for variables. No wonder the software is all unstable."

To put it short, make sure your feedback is positive.

Wouter van Nifterick
I`m not talking about that :-). I don`t know how to express it. Let me make an example:I`ve noticed you have it implemented this way: ...If you implemented it that way ... it would give you the benefits of x and y.About possible spam comments it can be done in such a way that people need to get some reputation, like on stack overflow. After they have some they can make suggestions. Every project can set min reputation required to suggest changes. I think good advice is always good if it was made by smart person.
Yaroslav Yakovlev
Also you are pointing the bad sides, like you know people can spam, and no need to suggest any changes as project people are more aware ...well think of benefits: people who are also aware and can give you a good advice can give it to team members. They do not need to create patches or verify their credentials to make sure they can do anything. They just making their suggestions. One can always accept them or refuse them.
Yaroslav Yakovlev