{"action":"created","issue":{"url":"https://api.github.com/repos/travisbrown/circe/issues/343","repository_url":"https://api.github.com/repos/travisbrown/circe","labels_url":"https://api.github.com/repos/travisbrown/circe/issues/343/labels{/name}","comments_url":"https://api.github.com/repos/travisbrown/circe/issues/343/comments","events_url":"https://api.github.com/repos/travisbrown/circe/issues/343/events","html_url":"https://github.com/travisbrown/circe/pull/343","id":169989514,"number":343,"title":"Replace Xor (do not merge)","user":{"login":"travisbrown","id":316049,"avatar_url":"https://avatars.githubusercontent.com/u/316049?v=3","gravatar_id":"","url":"https://api.github.com/users/travisbrown","html_url":"https://github.com/travisbrown","followers_url":"https://api.github.com/users/travisbrown/followers","following_url":"https://api.github.com/users/travisbrown/following{/other_user}","gists_url":"https://api.github.com/users/travisbrown/gists{/gist_id}","starred_url":"https://api.github.com/users/travisbrown/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/travisbrown/subscriptions","organizations_url":"https://api.github.com/users/travisbrown/orgs","repos_url":"https://api.github.com/users/travisbrown/repos","events_url":"https://api.github.com/users/travisbrown/events{/privacy}","received_events_url":"https://api.github.com/users/travisbrown/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/travisbrown/circe/labels/in%20progress","name":"in progress","color":"ededed"},{"url":"https://api.github.com/repos/travisbrown/circe/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-08-08T18:17:29Z","updated_at":"2016-08-09T02:47:22Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/travisbrown/circe/pulls/343","html_url":"https://github.com/travisbrown/circe/pull/343","diff_url":"https://github.com/travisbrown/circe/pull/343.diff","patch_url":"https://github.com/travisbrown/circe/pull/343.patch"},"body":"This is in response to the [proposal in Cats](https://github.com/typelevel/cats/issues/1192) to get rid of `Xor` now that the standard library's `Either` will be slightly less terrible in 2.12.\r\n\r\nI'm still opposed to that proposal, but it seems like I'm the only one, so I wanted to put together a quick proof-of-concept of what this would look like in Cats. This PR still needs a lot of polish, but all JVM tests pass."},"comment":{"url":"https://api.github.com/repos/travisbrown/circe/issues/comments/238438493","html_url":"https://github.com/travisbrown/circe/pull/343#issuecomment-238438493","issue_url":"https://api.github.com/repos/travisbrown/circe/issues/343","id":238438493,"user":{"login":"rossabaker","id":142698,"avatar_url":"https://avatars.githubusercontent.com/u/142698?v=3","gravatar_id":"","url":"https://api.github.com/users/rossabaker","html_url":"https://github.com/rossabaker","followers_url":"https://api.github.com/users/rossabaker/followers","following_url":"https://api.github.com/users/rossabaker/following{/other_user}","gists_url":"https://api.github.com/users/rossabaker/gists{/gist_id}","starred_url":"https://api.github.com/users/rossabaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rossabaker/subscriptions","organizations_url":"https://api.github.com/users/rossabaker/orgs","repos_url":"https://api.github.com/users/rossabaker/repos","events_url":"https://api.github.com/users/rossabaker/events{/privacy}","received_events_url":"https://api.github.com/users/rossabaker/received_events","type":"User","site_admin":false},"created_at":"2016-08-09T02:47:22Z","updated_at":"2016-08-09T02:47:22Z","body":"I added [benchmarks with EitherSyntax](https://gist.github.com/rossabaker/ae49d2716e47b2f2cb8542a6186dd638).  I'm unsure why my numbers are not more proportional to yours for the same tests.\r\n\r\nI share some of your misgivings.  `Either` with syntax can perform as well as `Xor`, but the typeclass syntax is a subtle trap.  `EitherSyntax` wins when both are in scope, so a simple `import cats.implicits._` could do the right thing.  Except when you have have a `_[_]`-kinded alias, as does circe, and you hit SI-2712.  These problems have easy solutions, but they are awkward conversations to have with the new user who just wants to parse some JSON.\r\n\r\nAll that said, converting between `Xor` and `Either` because we couldn't all agree comes with its own runtime and cognitive overhead.  While a move to `Either` will irritate us library cross-builders for a long time, application developers get a good experience starting in 2.12.  `Either` is only going to look better over time, and increasing circe uptake is going to make this migration more expensive over time.  My crystal ball reluctantly puts me on Team Either.\r\n"}}
{"actor":{"display_login":"rossabaker"}}