{"action":"closed","issue":{"url":"https://api.github.com/repos/mbostock/d3/issues/2361","labels_url":"https://api.github.com/repos/mbostock/d3/issues/2361/labels{/name}","comments_url":"https://api.github.com/repos/mbostock/d3/issues/2361/comments","events_url":"https://api.github.com/repos/mbostock/d3/issues/2361/events","html_url":"https://github.com/mbostock/d3/issues/2361","id":64672017,"number":2361,"title":"Factor out inessential parts","user":{"login":"fresheneesz","id":149531,"avatar_url":"https://avatars.githubusercontent.com/u/149531?v=3","gravatar_id":"","url":"https://api.github.com/users/fresheneesz","html_url":"https://github.com/fresheneesz","followers_url":"https://api.github.com/users/fresheneesz/followers","following_url":"https://api.github.com/users/fresheneesz/following{/other_user}","gists_url":"https://api.github.com/users/fresheneesz/gists{/gist_id}","starred_url":"https://api.github.com/users/fresheneesz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fresheneesz/subscriptions","organizations_url":"https://api.github.com/users/fresheneesz/orgs","repos_url":"https://api.github.com/users/fresheneesz/repos","events_url":"https://api.github.com/users/fresheneesz/events{/privacy}","received_events_url":"https://api.github.com/users/fresheneesz/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-27T01:41:56Z","updated_at":"2015-03-27T03:22:35Z","closed_at":"2015-03-27T03:22:35Z","body":"Why does d3 provide so many inessential APIs?\r\n\r\nOn [the homepage for d3](http://d3js.org/), it states:\r\n\r\n> D3 is not a monolithic framework that seeks to provide every conceivable feature. Instead, D3 solves the crux of the problem: efficient manipulation of documents based on data. \r\n\r\nHowever, I see that d3 implements \r\n* its own jquery/sizzle-like selector API rather than just expecting dom-nodes given to it by another library\r\n* Its own map and set objects\r\n* A \"nest\" object\r\n* Array manipulation methods\r\n* A set of methods for generating random data\r\n* a set of ajax utilities\r\n* string formating\r\n* csv formatting\r\n* localization\r\n* color utilities\r\n\r\nAnd *many* more components that I don't understand well enough to evaluate whether or not they're relevant to data manipulation.\r\n\r\nNONE of the above things seem necessary to data manipulation for a library that purports to rely on modern web standards. Shouldn't each of these things be split out into their own separate libraries, and then referred to as a recommended selection/array-manipulation/ajax/string-formatting/etc library?\r\n\r\nI'm very wary of a library that says upfront that it isn't a monolithic framework, and then proceeds to go ahead and be one."}}