Git Product home page Git Product logo

Comments (17)

thomasjm avatar thomasjm commented on August 15, 2024 3

0.4.0.0 is on Hackage now!

from hfsnotify.

domenkozar avatar domenkozar commented on August 15, 2024 1

It's fine by me to bump the major version and note in the changelog that debouncing is yet to be implemented :)

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

See also this comment: #91 (comment)

from hfsnotify.

georgefst avatar georgefst commented on August 15, 2024

Hmm, looking in to this a bit more, it seems that Windows has no equivalent of CLOSE_WRITE, and downstream debouncing workarounds are almost universally necessary.

So releasing 0.4 without any debouncing support might be seen as a serious regression.

from hfsnotify.

georgefst avatar georgefst commented on August 15, 2024

See also this comment: #91 (comment)

The only blocker for 0.4.0.0 is that one of the breaking changes is ripping out the flawed old debounce mechanism, and replacing it with something based on this suggestion: #55 (comment).

To my mind, #55 seems like overkill anyway. Restricting debounce so that an event is only ignored if the previous event was of the same type would be a much simpler solution to that problem.

from hfsnotify.

hughjfchen avatar hughjfchen commented on August 15, 2024

I agree getting a new release is very important because the current version of the hackage is really too old and has many glitches which has been fixed in the github version.

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

releasing 0.4 without any debouncing support might be seen as a serious regression

I agree -- that's why shipping a reasonable debounce mechanism is sort of a prerequisite to getting 0.4 out the door. Different opinions might exist about what "reasonable" means. For example, your suggestion of ignoring an event if the previous event is of the same type seems pretty flawed to me, because the OS is free to insert an unrelated event in between those two things, which would cause the debouncing to fail.

But, this is why I've been working to make debouncing an orthogonal concern to the rest of this library, so people can apply the debouncing they prefer. Basically any debouncing mechanism should simply be a function with the signature Action -> IO Action.

I can see two potential ways to get a release out quickly:

  1. Finish filling out the state machine for the "fancy" debouncer described here.
  2. Implement something "good enough" and clearly label its limitations.

I'll try to get to this as soon as I can but PRs are always welcome :)

from hfsnotify.

georgefst avatar georgefst commented on August 15, 2024

For example, your suggestion of ignoring an event if the previous event is of the same type seems pretty flawed to me

Yeah, you're probably right. There's no elegant solution here, so it's a pretty thankless task. I won't rush you in to making the wrong choice!

(To be honest, my OP here is kind of an excitable, unfocussed thought dump. The shoddiness of the Windows API has pretty much ruined my plans for what I was intending to do when I started off anyway...)

from hfsnotify.

istathar avatar istathar commented on August 15, 2024

I just stopped by to see if I could remove the shelly dependency only to discover you'd already done so. :) Lovely package. Let me know if you need any help?

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

@istathar want to fill in the details of a debouncing state machine? :)

from hfsnotify.

istathar avatar istathar commented on August 15, 2024

@thomasjm sure, although I got the impression above that it was kinds of an optional enhancement? If that's true, then the rest of the improvements you've made probably deserve to see the light of day and this feature could wait for 0.4.1.

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

Well, as discussed above, releasing without any debouncing mechanism built-in might be seen as a regression. I haven't polled users of this library so I don't know how many depend on it. So the best thing would be to finish the proposed solution before releasing--I'm not dead set on it, but it would be nice. I just haven't been able to find time to finish it up, but if you're offering!

from hfsnotify.

domenkozar avatar domenkozar commented on August 15, 2024

I'm hitting multiple issues with the current version, can I help somehow with denouncing? I agree with others that it's fine to do it after the bugfix release.

EDIT: #103

from hfsnotify.

domenkozar avatar domenkozar commented on August 15, 2024

@thomasjm We are likely to release a fork in following weeks if there is not progress on this front.

This is a temporary solution to fix a number of issues we've been facing at https://github.com/cachix/cachix,
but we're open to helping out in any way to get a release out.

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

What issues are you hitting?

I'd be fine with releasing the current version with rudimentary or no debouncing. Depending on what problems you're having we may also be able to backport fixes and do a bugfix release without an actual breaking change.

from hfsnotify.

thomasjm avatar thomasjm commented on August 15, 2024

Okay, by popular demand we'll release 0.4.0.0 as-is. Just working on getting the tests passing on all the platforms now...

from hfsnotify.

domenkozar avatar domenkozar commented on August 15, 2024

Thanks @thomasjm ❤️

from hfsnotify.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.