{"action":"created","issue":{"url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/56","labels_url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/56/labels{/name}","comments_url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/56/comments","events_url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/56/events","html_url":"https://github.com/haskell-fswatch/hfsnotify/issues/56","id":56087577,"number":56,"title":"DISCUSSION: Breaking changes","user":{"login":"mlacorte","id":2569502,"avatar_url":"https://avatars.githubusercontent.com/u/2569502?v=3","gravatar_id":"","url":"https://api.github.com/users/mlacorte","html_url":"https://github.com/mlacorte","followers_url":"https://api.github.com/users/mlacorte/followers","following_url":"https://api.github.com/users/mlacorte/following{/other_user}","gists_url":"https://api.github.com/users/mlacorte/gists{/gist_id}","starred_url":"https://api.github.com/users/mlacorte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlacorte/subscriptions","organizations_url":"https://api.github.com/users/mlacorte/orgs","repos_url":"https://api.github.com/users/mlacorte/repos","events_url":"https://api.github.com/users/mlacorte/events{/privacy}","received_events_url":"https://api.github.com/users/mlacorte/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-01-30T21:33:58Z","updated_at":"2015-02-25T09:34:06Z","closed_at":null,"body":"I'm working on a Haskell project that requires cross-platform filesystem notifications, and unfortunately, hfsnotify doesn't currently provide all the features that I need.\r\n\r\nI'm going to begin work on a fork that will include the following breaking changes:\r\n\r\n* Add `Moved FilePath FilePath UTCTime` constructor to `Event`\r\n* Rename `eventPath` to `eventOrigin`\r\n* Add `eventDestination`\r\n* Update fsnotify to report on changes made to directories\r\n* Update reporting logic to account for the tracking of changes to directories\r\n\r\nIf these are changes you'd like included in hfsnotify, I'm open to discussing changes to their semantics, however I require both the \"move\" and \"directory\" changes for what I'm working on, so they come as a set. If you want just one of them, you'll have to backport it from my fork.\r\n\r\nI'll make a pull request when I believe it's stable on Linux, OS X, and Windows. This ticket is just a heads-up so that there is more time to discuss the implications/semantics of these changes."},"comment":{"url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/comments/75930655","html_url":"https://github.com/haskell-fswatch/hfsnotify/issues/56#issuecomment-75930655","issue_url":"https://api.github.com/repos/haskell-fswatch/hfsnotify/issues/56","id":75930655,"user":{"login":"mlacorte","id":2569502,"avatar_url":"https://avatars.githubusercontent.com/u/2569502?v=3","gravatar_id":"","url":"https://api.github.com/users/mlacorte","html_url":"https://github.com/mlacorte","followers_url":"https://api.github.com/users/mlacorte/followers","following_url":"https://api.github.com/users/mlacorte/following{/other_user}","gists_url":"https://api.github.com/users/mlacorte/gists{/gist_id}","starred_url":"https://api.github.com/users/mlacorte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlacorte/subscriptions","organizations_url":"https://api.github.com/users/mlacorte/orgs","repos_url":"https://api.github.com/users/mlacorte/repos","events_url":"https://api.github.com/users/mlacorte/events{/privacy}","received_events_url":"https://api.github.com/users/mlacorte/received_events","type":"User","site_admin":false},"created_at":"2015-02-25T09:34:06Z","updated_at":"2015-02-25T09:34:06Z","body":"Regarding @gregwebs's question about existing exceptions, I haven't started digging into the OS dependent notification libraries yet, so I don't have a great answer for that right now, but I'll make sure to compile a list of every error this library can throw so that we can, at the very least, add those to the documentation.\r\n\r\nA few known ones off the top of my head are:\r\n\r\n* Watching a directory that doesn't exist\r\n* Watching a directory without correct permissions\r\n* Threads randomly dying\r\n\r\n...and I'm sure there are plenty more.\r\n\r\nI will also be adding a new one for collapsing multiple conflicting events, such as `combine (Moved \"a\" \"b\") (Moved \"a\" \"c\")`.\r\n\r\nRegarding exceptions vs types for this particular instance, while I lean slightly towards exceptions since there's a notion of a \"normal/expected\" path, so long as all errors are being reported, I don't have particularly strong feelings about the delivery mechanism. The only thing I ask is that a queriable type also be thrown along with the human-readable string so that different exceptions can be easily caught/handled."}}