-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better coordination/shared organisation #66
Comments
Other things we (could) standardise on:
|
Hmm, there is one more thing I've been working on recently - and that is a gem called https://github.com/socketry/async It would be nice if we could expose the individual underlying IO objects in a way that was easily composable with async. I know that # Wait 10 seconds for an event then give up
if IO.select([notifier.to_io], [], [], 10)
notifier.process
end It would be nice if we had some consistency across the different implementations w.r.t. this behaviour/api. |
Thanks for starting this discussion.
|
On point 2, I think there is only one good solution. We make new gem by forking existing code. The existing gem is released as 1.0 but depends on new gem, and exposes new gem via old (current) interface. It can include suitable deprecation warning/notice. None of the gems reached 1.x so semantically I think this isn't a bad option. |
There is one other option to consider. I'd like to have your feedback too. Does it really make sense for these to be separate gems? Yes, they are really different. But, they are basically doing the same thing. The implementation detail can be quite different, but it could be hidden within platform specific drivers. This way, people who depend on this code don't need to have their own platform specific selection/loading (e.g. what listen is doing). I don't mind if we have one gem, it exposes several different ways to do things, but also has a set of common lowest common denominator APIs. |
That's a great point. I agree with you. |
It looks good to me. |
An argument against having a single gem relates to dependencies. For example How does |
Thought I'd just mention this here as I saw it: https://github.com/guard/guard/wiki/Maintainers |
In the case of Abut the gem dependencies, the policy is like this way. And managing the Mac specific library My suggestion for this situation is that I want comment in
Because below file is to create http://pkgs.fedoraproject.org/cgit/rpms/rubygem-listen.git/tree/rubygem-listen.spec L44
This line in the file is to comment out I am fine for this hack. |
Hey, here my thoughts/comments:
I would also point out that each filesystem has its own set of functionalities, some inotify features are not supported by fsevent and vice-versa. For that reason, I think that it makes more sense to keep one gem per filesystem, and IMHO the listen gem is already taking care of unifying all the shared features under one roof. Sometimes you also need to just support one specific platform and it's handy to be able to use one gem that supports all the filesystem features. |
@thibaudgg Thanks for your input. I'd still like to hear from other interested parties before making any general plan of action, but your ideas are good. |
Hello again. I've spent a few hours modernising the rb-inotify gem to use bundler, merged in many of the outstanding bug fix PRs, and other things. Unfortunately the test suite is small. I'll try to work on that. |
Just an idea: What about naming gems e.g. I wonder if this is coupling too much to listen? However, that gem is basically the primary consumer of rb-inotify right? |
Additionally, I've just been given access to guard org, so I'll be moving this gem to there. |
After moving this repo to guard org, I no longer have the ability to change any of it's settings. Can someone fix that? |
I suggest we use the guard org's listen team, and make everyone here part of that, but yeah it would be great if I can still admin the project :D |
Okay, so I've done some tests. I found in my case, the best way to test rb-inotify was to install listen source code, |
Found some old dirt: guard/listen#274 Maybe worth revisiting too. |
@ioquatix Thanks!
|
I'm leaning towards |
On point 4, I've been trying to figure out how we can do this. The |
👍 for |
I would like to apologize for not participating in this conversation up until now. I haven't had internet access for well over a week and to say that life has been complicated is a massive understatement. @thibaudgg I'll be better able to catch up on this topic tomorrow after 4-5PM EST. Tell me exactly what you need from me and I'll make it a personal priority. rb-fsevent has suffered from neglect for some time now. If making it into a much more flexible library that's usable via FFI is beneficial to you, it wouldn't be quite as painful for me to accommodate that request as you may be thinking (though I would still provide an fsevent_watch binary for use outside ruby, as I have made use of this raw frontend on its own on more than one occasion outside ruby). I would be able to provide this to you well before your personal end of June target, as long as I have a very clear idea of what you need from me. Keep in mind that rb-fsevent is doing very horrible and dangerous things to avoid bugs in MacOS 10.7-10.11, and making use of FFI would duck punch some very low level system APIs for the entirety of the process rather than just the external subprocess. This will change the behavior of ruby itself after loading rb-fsevent wherever realpath is made use of... and the replacement is much much slower. |
I'm sure we are all sorry to hear that and I hope whatever is causing your complexity in your life is soon behind you and you can move forward in a positive light. |
@ttilley I also sorry to hear about your complicated situation, please take all the time you need before replying to that one. Using FFI would be nice. If we rename the gem and upgrade the version I would be also fine dropping some old macOS versions to avoid horrible and dangerous hacks 😱. I think the best would be to list advantage/drawback on only supporting recent version and switching to FFI directly on a new We could also wait on the shared test setup proposition from @ioquatix to see how well it could fit Looking forward your feedback, take care. |
Please forgive me if I'm slightly stream-of-consciousness here in this
Rather than getting rid of these hacks entirely, I could split them out
The vast majority of our user base is already on 10.12, making this a
Absolutely. I still need a few hours, but it is now officially on my todo Given the drastic change of switching from an external pre-compiled binary My thoughts:
Though, to be fair, your input will ultimately matter the most as I'm
I look forward to any developments that come from this. What we want to ...and with that, I'll stop cluttering up this issue until I have one open |
just so nobody absolutely has to read that massive wall of text, i'd like to veto |
I'm okay with this form of OCD, I even support it. |
another brief so you don't have to read that wall of text is that i am very much AGAINST releasing a version of besides, the low level backend libraries don't have many direct users, so the issue isn't nearly as large as it might seem at first glance. anyone who cares in the least about portability is already using a higher level library and should never need to care (and will probably never notice) that a change has even occurred. |
I think it's okay to continue maintaining the existing gems, hell, even a 1.0 release might make sense, but with a deprecation notice - this is no longer being maintained - move to |
I can't really make much progress on this until someone makes a team and gives me admin access over the repo I migrated - is that possible? |
You mean that you want admin access to below repositories and to entire guard projects, right? https://github.com/guard/listen |
@junaruga Ideally that would be great. |
If a |
or should I wait and just take the example of |
My suggestion is to follow the rubygems naming guide So, I think a class with duck type interface |
Ideally, I'd like to see |
I've created the listen-inotify, listen-fsevents, and listen-kqueue repositories and give the admin right to the Listen team (which you're part of). Please let me know if you need more rights. 😄 |
@thibaudgg thanks can you please also add https://github.com/guard/rb-inotify to the same team. |
@ioquatix done! |
I've just release rb-inotify with a few bug fixes and improvements from PRs. I think it may be the last release - if it proove stable I will release as 1.0 |
I would like to propose that listen-* gems don't have any internal asynchronous behaviour - they are entirely synchronus/blocking. If user wants non-blocking operation, they should provide a wrapper IO which implements nonblocking read. JRuby also now supports |
Since this issue has been revived from the dead, I'll give an update of what I've been working on. https://github.com/socketry/async is a concurrency library for Ruby. As above, I mentioned the That being said, it might be a good baseline for |
I've started working on bringing these gems up to date for Ruby 2.6 I'd like to revisit these issues. Does anyone else still have bandwidth for this project? |
Hello Everyone. I did make some individual issues on these points but I thought I'd make one shared issue here to get everything in one place.
Shared organisation. I'd like to propose that we have a shared organisation for
rb-inotify
,rb-kqueue
, andrb-fsevent
.I'm trying to bring everyone together to form a consensus.
There are two ideas I have
guard
organisation.I'd like to propose that we consider renaming the gems. The
rb-
prefix is pretty ugly, and quite non-standard by modern standards. Some ideas I have includeos-
,fs-
,sys-
. Open to suggestions/discussion.Coordinated 1.0 release. I think there is an opportunity for us to all get to 1.0 at the same time. It's not essential, but it would be nice if we could invest the time to achieve this.
Shared test suite. Since these gems are largely doing the same thing, if we exposed a uniform high-level interface, we could also have a shared high level rspec test suite. It's really easy to do, and the benefits would be great - confirming the same behaviour over multiple platforms.
cc @mat813 @rymai @thibaudgg
The text was updated successfully, but these errors were encountered: