I think it would be harder to use from the perspective of a new developer trying to learn D3. selectAll already has way too many responsibilities in my opinion, making it totally opaque what d3(...) really does. OTOH I guess it's kind of the same with jQuery(..), since it can do both selectors as well as create new Elements.
D3 is one of those libraries that I really admire from a conceptual point of view, but boy do I wish the API was more newbie-friendly.
It's rather indicative of an API that has room for improvement when you start noticing just how many tutorials, videos and books that have to explain D3.selectAll. "Well, you see — sometimes it doesn't really select anything, instead it does this other thing"
Not to mention the source code. Very sparsely commented.
Should we design our tools so that you can pick them up immediately or should we design them so they give us as much power as possible? I, personally, would prefer Englebart's violin.
A thoroughly false dichotomy.
It's not either or, it's varying degrees of both.
D3 is a powerful _drawing_ library and I've used it for totally custom visualizations where no canned tool would suffice. I think there's an un- or only partially-filled niche for more customizable _charting_ library that is more user-friendly.
$ = d3.selectAll.bind(d3);
Since `this` in the `selectAll` will refer to whatever is before the period. When we reassign to `$` in `$ = d3.selectAll`, we lose that. Silly, isn't it? d3.selectAll('.foo').selectAll('.bar');
$.find('.foo').find('.bar');
are consistent, whereas d3('.foo').selectAll('.bar')
$('.foo').find('.bar')
are not. IMHO, d3's API is cleaner.