{"action":"created","issue":{"url":"https://api.github.com/repos/dart-lang/observe/issues/77","labels_url":"https://api.github.com/repos/dart-lang/observe/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/dart-lang/observe/issues/77/comments","events_url":"https://api.github.com/repos/dart-lang/observe/issues/77/events","html_url":"https://github.com/dart-lang/observe/issues/77","id":113087738,"number":77,"title":"create observe_base and move stuff there","user":{"login":"skybrian","id":129084,"avatar_url":"https://avatars.githubusercontent.com/u/129084?v=3","gravatar_id":"","url":"https://api.github.com/users/skybrian","html_url":"https://github.com/skybrian","followers_url":"https://api.github.com/users/skybrian/followers","following_url":"https://api.github.com/users/skybrian/following{/other_user}","gists_url":"https://api.github.com/users/skybrian/gists{/gist_id}","starred_url":"https://api.github.com/users/skybrian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skybrian/subscriptions","organizations_url":"https://api.github.com/users/skybrian/orgs","repos_url":"https://api.github.com/users/skybrian/repos","events_url":"https://api.github.com/users/skybrian/events{/privacy}","received_events_url":"https://api.github.com/users/skybrian/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-10-23T19:48:03Z","updated_at":"2015-10-23T20:02:57Z","closed_at":null,"body":"I'd like to move parts of the observe package to a different package to avoid a circular dependency.\r\n\r\nWe plan to use parts of the observe package in protobuf, and we're also thinking about using protobuf in the analyzer. So this creates a cycle analyzer->protobuf->observe->analyzer. Open source tools can handle circular dependencies but Google's build system (similar to bazel) cannot.\r\n\r\nEven if we could handle the cycle, making the protobuf library depend on analyzer seems like a bad move given how many things depend on protobufs and how many things the analyzer depends on.\r\n\r\nThe classes I'd like to move to observe_base are:\r\n  Observable\r\n  ObservableList\r\n  ChangeRecord (used by Observable)\r\n  ListChangeRecord (used by ObservableList)\r\n  ChangeNotifier (used by ObservableList)\r\n\r\nThey would be imported and exported by observe, so callers should be unaffected."},"comment":{"url":"https://api.github.com/repos/dart-lang/observe/issues/comments/150676295","html_url":"https://github.com/dart-lang/observe/issues/77#issuecomment-150676295","issue_url":"https://api.github.com/repos/dart-lang/observe/issues/77","id":150676295,"user":{"login":"skybrian","id":129084,"avatar_url":"https://avatars.githubusercontent.com/u/129084?v=3","gravatar_id":"","url":"https://api.github.com/users/skybrian","html_url":"https://github.com/skybrian","followers_url":"https://api.github.com/users/skybrian/followers","following_url":"https://api.github.com/users/skybrian/following{/other_user}","gists_url":"https://api.github.com/users/skybrian/gists{/gist_id}","starred_url":"https://api.github.com/users/skybrian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skybrian/subscriptions","organizations_url":"https://api.github.com/users/skybrian/orgs","repos_url":"https://api.github.com/users/skybrian/repos","events_url":"https://api.github.com/users/skybrian/events{/privacy}","received_events_url":"https://api.github.com/users/skybrian/received_events","type":"User","site_admin":false},"created_at":"2015-10-23T20:02:57Z","updated_at":"2015-10-23T20:02:57Z","body":"protobuf doesn't currently depend on the analyzer or observe. We're adding a mixin that depends on observe in Google's private fork and ran into a different circular dependency, which made me think of this. Eventually, observe support in protobufs might become a first-class feature, assuming the observe package is here to stay.\r\n"}}