flitbit / diff

Javascript utility for calculating deep difference, capturing changes, and applying changes across objects; for nodejs and the browser.
MIT License
3k stars 214 forks source link

Goal of the releases folder #96

Closed thiamsantos closed 7 years ago

thiamsantos commented 7 years ago

What's is the main goal of the releases folder? An user install can't junst install an different version of the module? Or use an cdn like unpkg?

flitbit commented 7 years ago

I gotta admit, you've been turning me on to many nifty stuff. Unpkg is cool, and I was not aware of it — when did it come in to existence? I'm skeptical it has been around for more than a few years, but I've been wrong before.

The main goal of the releases folder was to provide a pre-built packages, that's all. I could have built some tooling and published it somewhere other than npm, but honestly, this is a small library, and an extraordinarily small part of my attention.

Keeping current is important indeed, but please consider, there are many users, systems, and processes downstream - hopefully automated, but nonetheless, pre-existing, that use a library like deep-diff once it has been in the wilde for a while. Change for the sake of change is seldom worth it. Good libraries tend to be used for their single utility; it is my opinion that we should fix what is broken, not what is old. Therefore, I have kept up the releases folder so that those that may have relied upon it, particularly in an automated fashion, aren't clobbered.

I'm quite sure that peeps using Unpkg don't give a hoot about the releases folder. However, if someone is relying on it, they will care a whole bunch if it goes away or ceases to get updates.

thiamsantos commented 7 years ago

@flitbit Thanks so much for the clarification!!!

Change for the sake of change is seldom worth it. Good libraries tend to be used for their single utility; it is my opinion that we should fix what is broken, not what is old.

That's a very good point! I never thought about it.

However, if someone is relying on it, they will care a whole bunch if it goes away or ceases to get updates.

That part I still can't understand. A person will only receive the updates if he/she update the package. For that the versioning of the package managers exists, if you want an older version you will install the older version instead of installing the newest version and import the an older version present in a folder at the package.

flitbit commented 7 years ago

@thiamsantos There is life beyond package managers.

All releases are published to npm - that's the only package manager I've supported directly. Bower and Component were special requests that I received at one time or another.

A person will only receive the updates if he/she update the package.

This statement ignores the fact that many good engineers automate their processes by scripting. Think back to a time before package managers (most programming ecosystems didn't use them at all just 10 years ago)... engineers would put together workflows in script (bash, py, perl, etc.) to eliminate the tedium of tracking updates in their dependency graph. I assure you, such scripting is still an integral part of systems deployed all over the world - and until there is a package manager that rules the world, these intermediate scripts will continue to be written to bridge the gaps between languages, operating systems, and the multitude of ways things are "published" on the web.

We'll never know how many scripts monitor the repo's release tags, pull a new release from the predictable place (in the releases folder), and sends it downstream in a larger, scripted workflow.

I am wary of breaking such automation in scripts that I've never seen but can easily imagine. deep-diff is a top 1% npm package. I don't even know what that means in terms of possible users, but if I get aggressive about change I'm likely to find out when a mob shows up with pitchforks.

I myself have many systems in operation that use hand written, automated workflows to pull/monitor published assets from strange locations on the web. I like to author systems for a particular purpose, write it [reasonably] well, and forget it. It is always aggravating when I am forced into a modification of something that has worked well for years. As you can see by the Typescript issue #97, others are aggravated by unexpected change as well.

It is unpredictable what others have chosen to do with what you've published.

thiamsantos commented 7 years ago

@flitbit Now I'm understanding! Thank you so much for taking the time to clarify this question for me.