Skip to content

Additional maintainers + Vision #24

@passcod

Description

@passcod

I'm going on a 5-week holiday soon, and will probably not be available to do much on this during that time. Even apart from that, I'm generally quite busy from work and my contributions to Notify have been reduced to merging changes and shaping discussions for a little while now.

I'm looking for maintainers to help with this. You'll get commit and crates.io access, a nice badge on your posts in issue threads, and eternal thanks.

My vision for Notify can be summarised thus:

  • A single library for file watching in Rust, à la fs.watch in node, Listen in Ruby, fsnotify in Go.
  • I'd love for it to be embeddable / usable in other languages. C is the obvious target here, but there has been some recent forays in Python-to-Rust-and-back, for example.
  • Since Single file support for inotify #22, Notify should be able to watch both directories and single files.
  • A single interface for file watching. Yes, different system interfaces have different options, and one may want to take advantage of some advanced feature of one, but not here. They can use a binding directly. Notify should remain the same across all platforms and implementations.
  • Abstract away as much as possible from the backends. See this comment on #22. Afaik, fanotify on Linux is the only backend that could provide recursive directory watches natively. Notify should allow fanotify to handle that, as it will do so far more efficiently than us, but it should also take care of recursive watching for the other backends.
  • A more advanced vision of the above is to compose backends if necessary. On Windows, the native call can only watch directories, not files. We could implement single file watching by watching the directory above and filtering events, or we could use the PollWatcher to watch that file. The behaviour could be chosen dynamically, e.g. a large amount of sibling files in that directory may generate a large amount of events, and in that case it would be preferable to switch to a PollWatcher.
  • Speaking of, the current PollWatcher is lacking terribly, see Polling: handle metadata and name changes #20.

Pinging those of the current contributors who aren't watching this repo: @blaenk @octplane @andelf @retep998 and I'll also post this on Reddit for visibility.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions