{"action":"created","issue":{"url":"https://api.github.com/repos/CSSLint/csslint/issues/668","repository_url":"https://api.github.com/repos/CSSLint/csslint","labels_url":"https://api.github.com/repos/CSSLint/csslint/issues/668/labels{/name}","comments_url":"https://api.github.com/repos/CSSLint/csslint/issues/668/comments","events_url":"https://api.github.com/repos/CSSLint/csslint/issues/668/events","html_url":"https://github.com/CSSLint/csslint/issues/668","id":167053699,"number":668,"title":"CSSLint + Stylelint","user":{"login":"ai","id":19343,"avatar_url":"https://avatars.githubusercontent.com/u/19343?v=3","gravatar_id":"","url":"https://api.github.com/users/ai","html_url":"https://github.com/ai","followers_url":"https://api.github.com/users/ai/followers","following_url":"https://api.github.com/users/ai/following{/other_user}","gists_url":"https://api.github.com/users/ai/gists{/gist_id}","starred_url":"https://api.github.com/users/ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ai/subscriptions","organizations_url":"https://api.github.com/users/ai/orgs","repos_url":"https://api.github.com/users/ai/repos","events_url":"https://api.github.com/users/ai/events{/privacy}","received_events_url":"https://api.github.com/users/ai/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":53,"created_at":"2016-07-22T14:10:24Z","updated_at":"2016-08-01T08:05:33Z","closed_at":null,"body":"I think if we will merge CSSLint and [Stylelint](http://stylelint.io/) everyone will win — users will get more features, and we will have more free time. We already have great examples of [ESLint + JSCS](http://eslint.org/blog/2016/04/welcoming-jscs-to-eslint), [Babel + esnext](https://babeljs.io/blog/2015/01/12/6to5-esnext), [Rails + Merb](http://yehudakatz.com/2008/12/23/rails-and-merb-merge/).\r\n\r\n@XhmikosR @frvge @davidtheclark @jeddy3 what do you think?\r\n\r\n### Merging Plan Example\r\n\r\n1. CSSLint developers will get a membership in Stylelint core team.\r\n2. We check Stylelint rules and rewrite missed CSSLint plugin in Stylelint.\r\n3. CSSLint 2.0 will use Stylelint as backend, but work with same old CSSLint config (it will convert CSSLint config to Stylelint config inside)\r\n4. We provide some migration tool to convert CSSLint config to Stylelint config.\r\n\r\n### Benefits for CSSLint Developers\r\n\r\n1. More developers will work for one tool — so less time for boring support tasks and more for developing new smart rules.\r\n2. You will be a bigger project maintainer — more glory and respect. After merging, you will increase user base to 70%. [Facebook](https://code.facebook.com/posts/879890885467584/improving-css-quality-at-facebook-and-beyond/), [Github](https://github.com/primer/stylelint-config-primer), [US gov 18F](https://github.com/18F/stylelint-rules), [Wikipedia](https://github.com/wikimedia/stylelint-config-wikimedia) uses Stylelint. Bootstrap is in [the migration](https://github.com/ntwb/stylelint-config-bootstrap) to Stylelint.\r\n3. Stylelint uses [PostCSS](https://github.com/postcss/postcss) — you will get many benefits from PostCSS ecosystem: [SCSS](https://github.com/postcss/postcss-scss), [Less](https://github.com/webschik/postcss-less), [Broken CSS](https://github.com/postcss/postcss-safe-parser) and [SugarSS](https://github.com/postcss/sugarss) parsers. There are useful development tools for PostCSS: [rules benchmark](https://github.com/postcss/postcss-devtools) and [AST explorer](http://astexplorer.net/#/np0DfVT78g/1). Autoprefixer brings a huge user base to be sure in CSS parser.\r\n4. With PostCSS AST you could fix lint issues in CSS like `eslint --fix` does in JS. Stylelint already could do it for some rules with [Stylefmt](https://github.com/morishitter/stylefmt).\r\n5. PostCSS parser is DOM-like, instead of SAX-like ParserLib. But with [postcss-selector-parser](https://github.com/postcss/postcss-selector-parser), [postcss-value-parser](https://github.com/TrySound/postcss-value-parser), and [postcss-media-query-parser](https://github.com/dryoma/postcss-media-query-parser) it will have same abilities for you.\r\n\r\n### Benefits for CSSLint Users\r\n\r\n1. They will get more rules. Stylelint has around [150 rules](http://stylelint.io/user-guide/rules/) including very smart: [no-unsupported-browser-features](http://stylelint.io/user-guide/rules/no-unsupported-browser-features/), [no-indistinguishable-colors](http://stylelint.io/user-guide/rules/no-indistinguishable-colors/), [no-browser-hacks](http://stylelint.io/user-guide/rules/no-browser-hacks/), [no-descending-specificity](http://stylelint.io/user-guide/rules/no-descending-specificity/)\r\n2. They will get [SCSS](https://github.com/postcss/postcss-scss) and [Less](https://github.com/webschik/postcss-less) support.\r\n3. With [Stylefmt](https://github.com/morishitter/stylefmt) they will be able to fix CSS automatically according to linter rules.\r\n4. They will be able to parse CSS once for Autoprefixer and linter. Parsing is the longest part of CSS tools.\r\n5. They will have [postcss-browser-reporter](https://github.com/postcss/postcss-browser-reporter).\r\n6. Also people like modular architecture for linters — ESLint is the great example. Stylelint based on same ESLint modular philosophy.\r\n7. Users love when two awesome projects merge, so they are free from choosing what is best — for example, look at the reaction on ESLint + JSCS merge."},"comment":{"url":"https://api.github.com/repos/CSSLint/csslint/issues/comments/236515012","html_url":"https://github.com/CSSLint/csslint/issues/668#issuecomment-236515012","issue_url":"https://api.github.com/repos/CSSLint/csslint/issues/668","id":236515012,"user":{"login":"ai","id":19343,"avatar_url":"https://avatars.githubusercontent.com/u/19343?v=3","gravatar_id":"","url":"https://api.github.com/users/ai","html_url":"https://github.com/ai","followers_url":"https://api.github.com/users/ai/followers","following_url":"https://api.github.com/users/ai/following{/other_user}","gists_url":"https://api.github.com/users/ai/gists{/gist_id}","starred_url":"https://api.github.com/users/ai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ai/subscriptions","organizations_url":"https://api.github.com/users/ai/orgs","repos_url":"https://api.github.com/users/ai/repos","events_url":"https://api.github.com/users/ai/events{/privacy}","received_events_url":"https://api.github.com/users/ai/received_events","type":"User","site_admin":false},"created_at":"2016-08-01T08:05:33Z","updated_at":"2016-08-01T08:05:33Z","body":"@nschonni\r\n\r\n> Yup, definitely. The point I was making was that JSCS and ESLint wasn't 2 functional linting projects merging.\r\n\r\nSure, JSCS and ESLint had more differences. But I think that idea difference is main reason against merging. If some project has some idea, they should merge to solve this idea in the best way.\r\n\r\n> Is there a standalone web version?\r\n\r\nJust use browserify or webpack to build client side. Most of PostCSS plugins are client side ready.\r\n\r\n> We had problems because of bugs in the last official release (when I looked), but were fixed in the unreleased version.\r\n\r\nHow did you test it? We could implement this testing in Stylelint too.\r\n\r\nBut, honestly there was no WSH/Rhino issue reports in entire PostCSS ecosystem (it is much bigger) — seems like most of users was migrated to node.js."}}
{"actor":{"display_login":"ai"}}