{"action":"created","issue":{"url":"https://api.github.com/repos/dblock/oshi/issues/200","repository_url":"https://api.github.com/repos/dblock/oshi","labels_url":"https://api.github.com/repos/dblock/oshi/issues/200/labels{/name}","comments_url":"https://api.github.com/repos/dblock/oshi/issues/200/comments","events_url":"https://api.github.com/repos/dblock/oshi/issues/200/events","html_url":"https://github.com/dblock/oshi/issues/200","id":161115278,"number":200,"title":"Modularizing OSHI","user":{"login":"dbwiddis","id":9291703,"avatar_url":"https://avatars.githubusercontent.com/u/9291703?v=3","gravatar_id":"","url":"https://api.github.com/users/dbwiddis","html_url":"https://github.com/dbwiddis","followers_url":"https://api.github.com/users/dbwiddis/followers","following_url":"https://api.github.com/users/dbwiddis/following{/other_user}","gists_url":"https://api.github.com/users/dbwiddis/gists{/gist_id}","starred_url":"https://api.github.com/users/dbwiddis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbwiddis/subscriptions","organizations_url":"https://api.github.com/users/dbwiddis/orgs","repos_url":"https://api.github.com/users/dbwiddis/repos","events_url":"https://api.github.com/users/dbwiddis/events{/privacy}","received_events_url":"https://api.github.com/users/dbwiddis/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"hazendaz","id":975267,"avatar_url":"https://avatars.githubusercontent.com/u/975267?v=3","gravatar_id":"","url":"https://api.github.com/users/hazendaz","html_url":"https://github.com/hazendaz","followers_url":"https://api.github.com/users/hazendaz/followers","following_url":"https://api.github.com/users/hazendaz/following{/other_user}","gists_url":"https://api.github.com/users/hazendaz/gists{/gist_id}","starred_url":"https://api.github.com/users/hazendaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazendaz/subscriptions","organizations_url":"https://api.github.com/users/hazendaz/orgs","repos_url":"https://api.github.com/users/hazendaz/repos","events_url":"https://api.github.com/users/hazendaz/events{/privacy}","received_events_url":"https://api.github.com/users/hazendaz/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dblock/oshi/milestones/2","html_url":"https://github.com/dblock/oshi/milestones/3.0","labels_url":"https://api.github.com/repos/dblock/oshi/milestones/2/labels","id":1837205,"number":2,"title":"3.0","description":null,"creator":{"login":"dbwiddis","id":9291703,"avatar_url":"https://avatars.githubusercontent.com/u/9291703?v=3","gravatar_id":"","url":"https://api.github.com/users/dbwiddis","html_url":"https://github.com/dbwiddis","followers_url":"https://api.github.com/users/dbwiddis/followers","following_url":"https://api.github.com/users/dbwiddis/following{/other_user}","gists_url":"https://api.github.com/users/dbwiddis/gists{/gist_id}","starred_url":"https://api.github.com/users/dbwiddis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbwiddis/subscriptions","organizations_url":"https://api.github.com/users/dbwiddis/orgs","repos_url":"https://api.github.com/users/dbwiddis/repos","events_url":"https://api.github.com/users/dbwiddis/events{/privacy}","received_events_url":"https://api.github.com/users/dbwiddis/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":0,"state":"open","created_at":"2016-06-20T04:21:03Z","updated_at":"2016-06-20T06:54:49Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2016-06-20T04:32:28Z","updated_at":"2016-06-23T21:08:46Z","closed_at":null,"body":"First issue in a series of API-breaking changes for OSHI 3.0.\r\n\r\nThe JSON functionality of OSHI should be separated into a separate module.  Reasoning:\r\n* The JSON functionality requires added dependencies which are unnecessary for those who do not need that feature. The core class would return to dependencies only on JNA and slf4j-api.\r\n* The functionality is easily abstracted into separate code that need not be installed by users who do not need it (simple copy/paste of the `toJSON()` methods.)\r\n* The same functionality could easily be extended to XML or other concepts, which all belong in separate modules leveraging the core code, rather than adding additional dependencies and footprint to the existing code.\r\n\r\nOverall concept:\r\n* Existing `oshi-core` module would remain as-is except for the inheritance from the `OshiJSONObject` class which specifies the `toJSON()` method.  \r\n* New `oshi-json` module would be created with decorator classes for the OSHI API (`SystemInfo` and the classes in `oshi.hardware` and `oshi.software.os`.  These would be in the package `oshi.json.*` rather than `oshi.*`, and would internally instantiate a private object from the core class, providing the necessary access methods (implementing the interface) to the core object, plus adding the `toJSON()` functionality.\r\n* Consider adding configurability to the `oshi-json` class using Apache Commons Configuration to fine tune what information is returned in the JSON string.  (Default: everything.) (#208)\r\n* Consider switching from `javax.json` to a more flexible/widespread/capable/actively supported JSON provider (Jackson?) (#206)\r\n\r\nQuestions:\r\n* `oshi-core` will have to move to 3.0.  Should `oshi-json` match version numbers or start at 1.0?  Will both versions always be released/incremented together or maintain a separate release schedule and only increment when necessary?\r\n* will @hazendaz do the heavy lifting of rewriting the `pom.xml` files to make this work, including easy publishing of artifacts to the Central Repository and documents to the gh-pages branch?\r\n* is JSON too narrow of a focus?  Should we provide both JSON and xml in a single second project or have two (or more) separate projects?  What widespread db formats (Mongo?) would use it and should we specifically design output in an object easily ingested into those dbs?\r\n"},"comment":{"url":"https://api.github.com/repos/dblock/oshi/issues/comments/228184467","html_url":"https://github.com/dblock/oshi/issues/200#issuecomment-228184467","issue_url":"https://api.github.com/repos/dblock/oshi/issues/200","id":228184467,"user":{"login":"dbwiddis","id":9291703,"avatar_url":"https://avatars.githubusercontent.com/u/9291703?v=3","gravatar_id":"","url":"https://api.github.com/users/dbwiddis","html_url":"https://github.com/dbwiddis","followers_url":"https://api.github.com/users/dbwiddis/followers","following_url":"https://api.github.com/users/dbwiddis/following{/other_user}","gists_url":"https://api.github.com/users/dbwiddis/gists{/gist_id}","starred_url":"https://api.github.com/users/dbwiddis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbwiddis/subscriptions","organizations_url":"https://api.github.com/users/dbwiddis/orgs","repos_url":"https://api.github.com/users/dbwiddis/repos","events_url":"https://api.github.com/users/dbwiddis/events{/privacy}","received_events_url":"https://api.github.com/users/dbwiddis/received_events","type":"User","site_admin":false},"created_at":"2016-06-23T21:08:46Z","updated_at":"2016-06-23T21:08:46Z","body":"I think I've got the site figured out, thanks to good documentation at wagon-git... which answers the two later questions.   So we're down to groupid and module arrangement.   Questions (And @dblock can chime in here too since it's his github groupid at stake).\r\n\r\n1. Do we really need an `oshi-parent`?   Can we not just make `oshi-core` the parent?  That would avoid producing a whole artifact for a parent with no code in it, just metadata.\r\n2. Should we leave  `oshi-core` and `oshi-json` at the root level of the `com.github.dblock` groupID or put them together in an `oshi` subdirectory?  (I was more worried about this with the extra `oshi-parent` as well but if we make `oshi-core` the parent then this may not be as big a deal.)"}}
{"actor":{"display_login":"dbwiddis"}}