I'm not sure if this was sarcasm, or simple platitudes about open source, but this whole "contribute to make it better" is really a hit-and-miss affair. Best case scenario is that the code is clear, easy to update the UI, and the only reason it hasn't been done is because no one cares about the UI. That seems incredibly unlikely (the caring part - someone built it, maintains it, and will probably be upset if you "fix" it).
On other projects, you first get a huge range of code complexity/quality, making contributing perhaps simply not feasible. After that, you can run into all sorts of stuff. My real world experience:
"We won't take this because we use linked lists, not hashtables, because <original maintainer> likes linked lists."
"We won't fix this broken XML parser because this code is fast."
"Why did you fork and create those modules without telling us? That's really rude to all of us that spent so much time on this." (In response to an announcement a company had ported a project to another platform, and wanted feedback and was going to open all their work. They ended up just keeping it internally.)
And some of that is on projects that are actually very friendly otherwise and to which I've contributed large and successful pieces. (To those involved if you happen to read this: you already know my criticisms ;)).
In short, the whole "hey it's open so go fix it" is a rather trite simplification. It does not reflect the usual or even possible experience for the majority of users.