{"action":"created","issue":{"url":"https://api.github.com/repos/json4s/json4s/issues/266","labels_url":"https://api.github.com/repos/json4s/json4s/issues/266/labels{/name}","comments_url":"https://api.github.com/repos/json4s/json4s/issues/266/comments","events_url":"https://api.github.com/repos/json4s/json4s/issues/266/events","html_url":"https://github.com/json4s/json4s/issues/266","id":94995133,"number":266,"title":"JSON4s \"2\"","user":{"login":"mdedetrich","id":2337269,"avatar_url":"https://avatars.githubusercontent.com/u/2337269?v=3","gravatar_id":"","url":"https://api.github.com/users/mdedetrich","html_url":"https://github.com/mdedetrich","followers_url":"https://api.github.com/users/mdedetrich/followers","following_url":"https://api.github.com/users/mdedetrich/following{/other_user}","gists_url":"https://api.github.com/users/mdedetrich/gists{/gist_id}","starred_url":"https://api.github.com/users/mdedetrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdedetrich/subscriptions","organizations_url":"https://api.github.com/users/mdedetrich/orgs","repos_url":"https://api.github.com/users/mdedetrich/repos","events_url":"https://api.github.com/users/mdedetrich/events{/privacy}","received_events_url":"https://api.github.com/users/mdedetrich/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-07-14T17:20:52Z","updated_at":"2015-07-15T03:11:28Z","closed_at":null,"body":"So I have personally started a rewrite of JSON4s, I am going to quickly detail the rationale and reasoning behind why\r\n\r\n1. Current Json4s heavily depends on reflection (thats how extraction works). This has both been historically problematic (scala's internal issues with reflection), has lower performance, and throws errors at runtime when they could be thrown at compile time. The reflection would be replaced with Macro's\r\n2. API Design can use improvements. While the core JSON4s API is fantastic, stuff like `DefaultFormats` could be really designed better and simpler (no reason to have a `DefaultFormats` class which requires its own specific appender. I am thinking of something closer to `Slick`'s `MappedColumnType` for defining custom serialisation for formats\r\n3. Want to remove as many dependencies as possible. Completely ideal scenario is to have 0 dependencies (apart from `QuasiQuotes which is just used for macros`), however I can live with having to use something like `Jawn` strictly for parsing. There will strictly be no Java dependencies, which gets to the last point\r\n4. Modular design. Anything that doesn't satisfy the above will be in separate modules. Stuff like `mongo`/`scalaz` etc etc support will as their own projects. Support for reflection can even be added in, but it would as a separate module\r\n\r\n**Support for Scala.js**\r\nOne of the defining reasons why I wan't to support Json4s is that I wont it to work with `Scala.js`. All of the above needs to be done in order to do this (`Scala.js` doesn't really support reflection, and it doesn't support Java, either as source code or as dependencies)\r\n\r\nThe above points also can also help the possible scenario of having json4s added into Scala's `stdlib`. Although unlikely, the above points do greatly increase its chances of being included (particularly no/minimal dependencies)\r\n\r\nSpoke with @seratch on github about this, and he is generally ok with it. The ticket is here if people want to add anything, currently its in really alpha stage (i.e. not compiling), but I will most likely upload as a separate project once enough of it has been done so its useful."},"comment":{"url":"https://api.github.com/repos/json4s/json4s/issues/comments/121470890","html_url":"https://github.com/json4s/json4s/issues/266#issuecomment-121470890","issue_url":"https://api.github.com/repos/json4s/json4s/issues/266","id":121470890,"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":"2015-07-15T03:11:28Z","updated_at":"2015-07-15T03:11:28Z","body":"I've done rewrites before on a clean branch.  That shows life to the existing user base and provides a nice history for people browsing tags, but cross-contaminates the issue tracker.  Pros and cons, I guess."}}