
Rookies in the Bike Shed - jashkenas
http://david.heinemeierhansson.com/posts/44-rookies-in-the-bike-shed
======
jashkenas
The Rails commit that spurred this post, apparently:
<https://github.com/rails/rails/pull/5329>

~~~
lucisferre
Bah, I can't be bothered to read the whole thing. Before the request was
closed, if I understood correctly, the argument was about whether or not
`xhr?` needed to return a boolean rather than what it's doing which is
aliasing a regex match.

Hmm, call it bike-shedding if you want, but I have to be honest part of the
beauty and value of Ruby is how semantic it can be made when you follow some
conventions. How hard or awful is it to just actually return a boolean here? I
mean is anyone expecting or relying on the clearly undocumented feature that
it also returns the offset of where `/XMLHttpRequest/i` is found in the
request?

The problem with throwing out the 'bikeshedding' defence is that it goes both
ways. It's their choice to fight a small, trivial pull request that appears to
make logical sense, and arguably reduces the potential for cognitive friction.

It's debatable who's actually bikeshedding here.

~~~
dhh
Dude, that's deep. You're bike shedding the bike shed. So meta. Turtles all
the way down. Touché!

~~~
CodeMage
Upvoted you despite the slightly obfuscated phrasing, because it's essentially
true. This turned into a bikeshedding discussion on bikeshedding the moment
lucisferre misrepresented his own definition of bikeshedding as the canonical
definition.

~~~
lucisferre
Did I? Perhaps you could elaborate for my benefit then.

------
jasonlotito
And this is why people reinvent the wheel. If you disagree with the core teams
decision here, you are at an impasse. So, you fork and move on. Or, you think
about it, and decide to create your own framework that will be _like_ Rails,
but do things the way you want to do them, including making xhr? work the way
you think it should.

Reinventing the wheel gets a bad wrap. People suggest you should contribute to
existing projects. The problem is when that existing project's direction
diverges from your needs. Reinventing the wheel is part of the power of open
source.

On a side note, considering the sheer number of types of wheels, "reinventing
the wheel" comes across as a bit odd.

~~~
dhh
This is exactly the point of the original post. That if you're willing to redo
Rails because a predicate method does not return singletons, you're a rookie
who don't know the value of time.

Of course, people don't actually do this. They talk about doing it, but don't
actually carry through.

~~~
jasonlotito
> That if you're willing to redo Rails because a predicate method...

I wasn't clear. My mistake. The issue isn't one of a predicate method, but
rather, overall approach. If Rails doesn't work the way you want, you don't
whine and complain it doesn't work. You either accept it, or move on and do
something better.

The if the attitude demonstrated here is something you can't work with, you
move on. It's not just this issue, but every issue like it as well.

I agree with the premise of the post (bike shedding is pointless); however, if
you need a garage and not a bike shed, trying to get people who want that bike
shed and are building that bike shed to instead build a garage, your better
off moving on.

------
parfe
I saw one post mention File.world_readable? I don't know Ruby and the result
surprised me.

    
    
      irb(main):002:0> File.world_readable?('/etc/passwd')
      => 420
      irb(main):003:0> File.world_readable?('/etc/shadow')
      => nil
    

420 is decimal for octal 0644 which is the permissions on my /etc/passwd file.
Fair enough, but as someone looking from the outside it seems weird to leak
partial and unreliable information like that. Especially if I was to write

    
    
      readable = File.world_readable?('/etc/passwd')
    

and later readable has an integer in it representing an octal value which
can't be used for more than a true/false value. Is it common to throw !! in
front of truthy/falsey calls to get down to the boolean literal?

~~~
nfm
It's not a common idiom to use !! in Ruby.

------
spacesuit
This post raises some interesting points about the difficulty of contributing
to open source for the first time. Over the last year, I've taught myself to
code. I want to contribute to open source, and I think I can provide value to
smaller projects. But the public nature and unique culture of open source have
left me feeling a bit overwhelmed. So I observe instead.

What's the best way for a rookie to find small, welcoming open-source projects
to contribute to?

~~~
rohitarondekar
Try to get into a bugmash of some kind. I started this way with Rails and I
wrote about it [http://www.rohitarondekar.com/articles/my-first-rails-
bugmas...](http://www.rohitarondekar.com/articles/my-first-rails-bugmash)

Many companies and tech groups have these around the world during meetups and
conferences.

But most importantly dont let this pull request fool you. Rails is nice to
contribute to even if you are starting out and the rails core team especially
jose valim and santiago pastorino are super helpful.

------
sunir
I agree this is a good approach for any open source project leader to have.

It's valuable to let rookies argue small debates so they can learn the ropes
and get a feel for the community; it's even more valuable for the veterans and
leadership to make decisions, set priorities, and maintain focus on what's
important. Both are necessary to grow and sustain an open community project.
You bring people in and get them engaged whilst reinforcing what the project
is focused on, its tone, style, and mission.

Making a decision civilly, whether everyone agrees or not, is very reassuring
to newcomers and oldtimers alike. It proves that the community is fun and
worthwhile.

------
mvgoogler
This reminded me a bit of this thread:

<https://bugzilla.redhat.com/show_bug.cgi?id=638477#c38>

