{"action":"created","issue":{"url":"https://api.github.com/repos/MeteorCode/Pathway/issues/54","labels_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/54/comments","events_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/54/events","html_url":"https://github.com/MeteorCode/Pathway/issues/54","id":91613650,"number":54,"title":"Start planning for model refactoring","user":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MeteorCode/Pathway/labels/architecture","name":"architecture","color":"5319e7"},{"url":"https://api.github.com/repos/MeteorCode/Pathway/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/MeteorCode/Pathway/milestones/5","html_url":"https://github.com/MeteorCode/Pathway/milestones/API%20refactor%20and%20code%20cleanup","labels_url":"https://api.github.com/repos/MeteorCode/Pathway/milestones/5/labels","id":1141781,"number":5,"title":"API refactor and code cleanup","description":"Summer 2015 API refactor and code cleanup project.\r\n\r\nThis includes:\r\n\r\n - [ ] Rewrite test suites\r\n - [ ] Decouple Java and Scala APIs\r\n - [ ] Refactor Scala API to be more idiomatic\r\n - [ ] Miscellaneous code cleanup and quality improvement\r\n - [ ] Improve API documentation","creator":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":15,"state":"open","created_at":"2015-05-31T17:29:48Z","updated_at":"2015-09-17T16:34:16Z","due_on":"2015-08-25T04:00:00Z","closed_at":null},"comments":4,"created_at":"2015-06-28T16:25:50Z","updated_at":"2015-09-17T16:34:16Z","closed_at":"2015-09-17T16:34:16Z","body":"`pathway.model` is currently a huge mess that needs some serious love. \r\n\r\nIt would be nice if we could do something similar to #42 and separate the Scala and Java APIs so that we can make them both more idiomatic rather than having to write code that compromises between those two languages. \r\n\r\nHowever, unlike `pathway.io`, I feel like `model` doesn't have as much of a logical entry point for inversion of control. In `io`, everything comes directly from a `ResourceManager`, so as long as you make sure to start with either a Scala or Java `ResourceManager`, we can ensure that you're handed the correct `FileHandle` types. Unfortunately, `model` doesn't really have a single entry point. You create lots of things via their constructors. \r\n\r\nIt would also just be really nice if a lot of the weird and ugly code in there could be cleaned up and made more elegant. The telescopic constructors could be de-uglified using named arguments with defaults (and possibly the addition of [builders](http://stackoverflow.com/a/16292757) for Java clients). `GameObject` doesn't do most of the stuff it will eventually handle. I don't really know why `Payload` is necessary, considering that it's mostly just a wrapper for a `Map` with the addition of stamping (which could just go on the `Event`s themselves?), but at the very least we could make it less gross by just mixing in one of the Scala `Map` traits (like we do in `ForkTable`) rather than having to wrap all of the underlying map's various operations. Obviously `script` is going to be completely ripped out and rewired as well (#52), so maybe there would be opportunities to build in some easier script integrations at this stage as well."},"comment":{"url":"https://api.github.com/repos/MeteorCode/Pathway/issues/comments/141141906","html_url":"https://github.com/MeteorCode/Pathway/issues/54#issuecomment-141141906","issue_url":"https://api.github.com/repos/MeteorCode/Pathway/issues/54","id":141141906,"user":{"login":"hawkw","id":2796466,"avatar_url":"https://avatars.githubusercontent.com/u/2796466?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkw","html_url":"https://github.com/hawkw","followers_url":"https://api.github.com/users/hawkw/followers","following_url":"https://api.github.com/users/hawkw/following{/other_user}","gists_url":"https://api.github.com/users/hawkw/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkw/subscriptions","organizations_url":"https://api.github.com/users/hawkw/orgs","repos_url":"https://api.github.com/users/hawkw/repos","events_url":"https://api.github.com/users/hawkw/events{/privacy}","received_events_url":"https://api.github.com/users/hawkw/received_events","type":"User","site_admin":false},"created_at":"2015-09-17T16:34:16Z","updated_at":"2015-09-17T16:34:16Z","body":"We nuked everything in the `nashorn-script` branch; closed by merging 87529d0e47cb4963777037849b4dec1aa1de9861."}}