{"action":"created","issue":{"url":"https://api.github.com/repos/ceylon/ceylon/issues/5851","repository_url":"https://api.github.com/repos/ceylon/ceylon","labels_url":"https://api.github.com/repos/ceylon/ceylon/issues/5851/labels{/name}","comments_url":"https://api.github.com/repos/ceylon/ceylon/issues/5851/comments","events_url":"https://api.github.com/repos/ceylon/ceylon/issues/5851/events","html_url":"https://github.com/ceylon/ceylon/issues/5851","id":122957198,"number":5851,"title":"Module splitting up","user":{"login":"FroMage","id":179265,"avatar_url":"https://avatars.githubusercontent.com/u/179265?v=3","gravatar_id":"","url":"https://api.github.com/users/FroMage","html_url":"https://github.com/FroMage","followers_url":"https://api.github.com/users/FroMage/followers","following_url":"https://api.github.com/users/FroMage/following{/other_user}","gists_url":"https://api.github.com/users/FroMage/gists{/gist_id}","starred_url":"https://api.github.com/users/FroMage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FroMage/subscriptions","organizations_url":"https://api.github.com/users/FroMage/orgs","repos_url":"https://api.github.com/users/FroMage/repos","events_url":"https://api.github.com/users/FroMage/events{/privacy}","received_events_url":"https://api.github.com/users/FroMage/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ceylon/ceylon/labels/m-dist","name":"m-dist","color":"00aa00"},{"url":"https://api.github.com/repos/ceylon/ceylon/labels/os-android","name":"os-android","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/ceylon/ceylon/milestones/15","html_url":"https://github.com/ceylon/ceylon/milestones/1.2.3","labels_url":"https://api.github.com/repos/ceylon/ceylon/milestones/15/labels","id":1590811,"number":15,"title":"1.2.3","description":"","creator":{"login":"FroMage","id":179265,"avatar_url":"https://avatars.githubusercontent.com/u/179265?v=3","gravatar_id":"","url":"https://api.github.com/users/FroMage","html_url":"https://github.com/FroMage","followers_url":"https://api.github.com/users/FroMage/followers","following_url":"https://api.github.com/users/FroMage/following{/other_user}","gists_url":"https://api.github.com/users/FroMage/gists{/gist_id}","starred_url":"https://api.github.com/users/FroMage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FroMage/subscriptions","organizations_url":"https://api.github.com/users/FroMage/orgs","repos_url":"https://api.github.com/users/FroMage/repos","events_url":"https://api.github.com/users/FroMage/events{/privacy}","received_events_url":"https://api.github.com/users/FroMage/received_events","type":"User","site_admin":false},"open_issues":148,"closed_issues":24,"state":"open","created_at":"2016-02-18T14:05:01Z","updated_at":"2016-03-24T13:02:39Z","due_on":null,"closed_at":null},"comments":28,"created_at":"2015-12-18T14:24:01Z","updated_at":"2016-03-24T15:21:06Z","closed_at":null,"body":"I've already split some things up:\r\n\r\n- `com.redhat.ceylon.langtools.classfile` from `com.redhat.ceylon.compiler.java` so that the language module can use it without depending on the compiler. Itself does not depend on anything and is a split of the javac fork.\r\n- `com.redhat.ceylon.tool.provider` from `ceylon.language` which removed the dependencies to the compilers and typecheckers from the language module.\r\n\r\nWe need further splits:\r\n\r\n- Remove the tools part of `com.redhat.ceylon.common` to `com.redhat.ceylon.tools`, because the language module depends on `common` but does not need the tools.\r\n- Remove the CMR dependency from the language module. This requires moving a few things from CMR into `common`.\r\n- Remove jandex dependency. I'm fairly sure we can do what we need with `langtools.classfile`, although we have to make sure it's as efficient.\r\n- Remove shrinkwrap from the Maven equation. Aether seems small and only depends on `httpclient` (already a dependency of `sardine`) and `org.slf4j:jcl-over-slf4j` which drags slf4j but we already depend on it (not sure why). That should make the Maven support smaller. And besides our Aether deps is outdated.\r\n- Possibly make our WebDAV CMR provider optional. That would remove dep on `sardine`, and `httpclient` (even though it's used by aether too). We don't use most of that for Herd and we can easily replace it with the JDK net connections.\r\n\r\nOnce this is done, we should review the minimal size for language module dependencies and see if we can do further improvements. Splitting the metamodel and serialisation out of it may be useful too, but that means untangling \"reified is\" out of the metamodel, which may not be very useful since it depends on the `model` module and I suppose the metamodel is comparatively smaller.\r\n\r\nOTOH if we can split subtyping into its own pure-Ceylon independent module (unlikely) it would mean reusability in JS, which is hard ATM."},"comment":{"url":"https://api.github.com/repos/ceylon/ceylon/issues/comments/200883751","html_url":"https://github.com/ceylon/ceylon/issues/5851#issuecomment-200883751","issue_url":"https://api.github.com/repos/ceylon/ceylon/issues/5851","id":200883751,"user":{"login":"gavinking","id":579974,"avatar_url":"https://avatars.githubusercontent.com/u/579974?v=3","gravatar_id":"","url":"https://api.github.com/users/gavinking","html_url":"https://github.com/gavinking","followers_url":"https://api.github.com/users/gavinking/followers","following_url":"https://api.github.com/users/gavinking/following{/other_user}","gists_url":"https://api.github.com/users/gavinking/gists{/gist_id}","starred_url":"https://api.github.com/users/gavinking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gavinking/subscriptions","organizations_url":"https://api.github.com/users/gavinking/orgs","repos_url":"https://api.github.com/users/gavinking/repos","events_url":"https://api.github.com/users/gavinking/events{/privacy}","received_events_url":"https://api.github.com/users/gavinking/received_events","type":"User","site_admin":false},"created_at":"2016-03-24T15:21:06Z","updated_at":"2016-03-24T15:21:06Z","body":"Excellent."}}