

Underscore and Lodash Merge Thread - msoad
https://github.com/jashkenas/underscore/issues/2182

======
mfkp
For visibility (people aren't reading this)

From the author: "Folks. Please STOP +1 and :+1: -ing GitHub tickets. We get
it, but it makes tickets hard to have conversations on. Contribute with
something substantive instead."

This is a very common problem for github issues posted on HN/any social media.
Would be great if github had a voting mechanism.

~~~
blueside
I don't know what I hate more, the +1's or the excessive use of meme pictures
in github issue threads

~~~
inglor
I really think that GitHub needs better tools to deal with this, this is very
frustrating - the only options right now are deleting a ton of comments or
locking it preventing all discussion. Prompting people with a modal informing
them what comments are inappropriate would go a long way.

~~~
omouse
In the past you would create a few mailing lists; I think sourceforge
automatically did that for you too.

They should have locked the thread or use a wiki page for this. A wiki page is
less likely to be edited to add this kind of comment or at least it would be
easier to clean up with a bot.

------
fokinsean
> Lodash is currently > 12k lines of code, and Underscore is 1.5k.

Never knew that before. Does Lodash have more features than Underscore? I
never got too heavy into using either but I always thought of them as
essentially being interchangeable libraries.

~~~
Derander
Lodash has many features that underscore does not have. Also, I am told that
Lodash has been implemented in such a way that functions are largely
independent of each other so that you can build a custom lodash package that
only includes the subset that you use.

~~~
tracker1
In practice, I'm not sure how truly valuable this is... it's far easier to
just accept it as a whole, and with min/merge versions in the browser it's not
so big at all.

It's not a macro framework like jQuery... the kitchen sink isn't in there...
though, I do think that probably the string templating could/should become a
sub-module... the rest belong together more.

------
arcosdev
both eclipsed by ramda.js >> [http://functionaltalks.org/2013/05/27/brian-
lonsdorf-hey-und...](http://functionaltalks.org/2013/05/27/brian-lonsdorf-hey-
underscore-youre-doing-it-wrong/)

~~~
chamakits
Is it going really? If so in what way?

At least mind share wise I've heard of lodash/underscore much more often than
ramda. Only recently has it come up with some level of frequency.

~~~
arcosdev
currying is properly implemented in ramda, unlike lodash or underscore.

~~~
chamakits
Currying is great and all, but that in itself isn't a end all be all feature
from which you could say that it is enough to eclipse lodash/underscore.

Is there anything else about it to that makes it really "eclipse" them or is
it more like "ramda is also nice, especially because it has Currying"?

~~~
arcosdev
I would say creating a library that enables a "truer form" of functional
programming is probably a pretty good enough feature on its own.

~~~
ufo
My experience with currying in Javascript is that passing the wrong number of
arguments to a function leads to errors that are tricky to debug and ugly
stack traces. In ML-family functional languages this isn't as much of a
problem because of the static type checking.

------
basicallydan
What a great exchange so far, I love it when people in charge of important
software work together cooperatively and without lots of arguments.

~~~
pavlov
Is Underscore.js "important software"? I guess I never thought of it that way.

To me it's more like a nice-to-have -- a helper library of functions you could
write yourself (but probably shouldn't bother to).

~~~
robertfw
I started using underscore, moved to lodash. I find them indispensable.

------
octref
As someone who once contributed some bits to lodash, I don't see how this will
work out.

Other than perf, modularity, etc, I like lodash's doc better. The doc is
written as inline jsdoc in lodash.js, with each parameters documented and
behaviors explained through examples.

But here is @jashkenas's take:

> Documentation style. Ideally I'd like the Underscore docs to be written even
> more conversationally than they are at the moment.

Personally I also trust @jdalton more. Other than technical skills he's very
hard-working and responsive. He seems to be following a zero-issue-and-PR
policy and get all issues/PRs sorted out in 2-3 days.

------
macspoofing
How does that work? You have two fairly mature code-bases, is one just being
dumped (i.e. lodash)?

~~~
idbehold
If anything was to be dumped it had better be underscore.

~~~
smrtinsert
I really don't get why its going from lodash -> underscore. This is a clear
case where lodash has won imo and if anything it obviates underscore.

~~~
omouse
The issue is backwards compatibility and ensuring API compatibility. I don't
care if I can switch from underscore to lodash if I have to change X lines of
code and then test them many times over to make sure that it all works.

------
blueside
big kudos to both these incredibly smart and talented guys for putting their
differences aside (there has been some ugly exchanges between them in the
past) and getting this done, the JS community will greatly benefit from this.

------
halis
You know they're going to have some disagreement about " vs ' and it's all
gonna fall apart...

------
csense
So basically these libraries are like Python's itertools for JS? Except they
made a silly/arrogant choice of using a single character for the library name.

~~~
robertfw
The reason for the single character library name is that by convention, the
library is imported into a variable named "_".

This reduces code noise and amount of typing if you are using these functions
frequently

I'm not sure how that is silly or arrogant

~~~
csense
Imagine if every library you used named itself with a single character. Does
your language have more than 27 libraries available? Then sorry, some of their
choices of letter will overlap and those libraries will conflict, perhaps
requiring you to manually edit the distribution source or build scripts. Do
you ever want to create a project that has more than 27 transitive
dependencies? Yeah, good luck with that. Found a code snippet online and want
to figure out what library it's invoking? Hint: Google is probably going to be
useless when searching for a single-letter name.

The problems with using single-character names for libraries are so self-
evident, I'm not quite sure how to respond to someone who doesn't see it.

------
camenk
It's cute that let's do merge and keep underscore because lodash is just cute.

~~~
Igglyboo
This comment looks like it was written by a bot.

