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

3.3 release coordination #1098

Open
elmindreda opened this Issue Oct 17, 2017 · 19 comments

Comments

Projects
None yet
7 participants
@elmindreda
Member

elmindreda commented Oct 17, 2017

Here is a place for figuring out what we need to do for the 3.3 release. As long as 3.3 hasn't been released there is still time to comment.

Things that will go into 3.3

These are what I (elmindreda) will focus on getting merged before starting on any of the other ones.

  • Content scale queries (glfwGet*ContentScale) #235, #439 (implicitly), #676, #677, #845, #898
  • Joystick axis fixes (XInput y-axis, IOHID x-axis) #1083
    • very little work
  • Full window opacity (GLFW_OPACITY) #1089
    • little work
  • Lock key query (glfwGetKeyLock) #946
    • little work, all platforms
  • Gamepad mapping modifiers
    • little work

Things that could go into 3.3

Most of these are relatively isolated and can be done without much coordination, the one major exception being joystick state callbacks. If you want to take on one of them then please leave a comment below so we can avoid duplicate work. Also, in many cases there is already a work-in-progress branch, some of them already on GitHub. I'll start pushing the remaining ones as soon as I'm able.

If you are waiting for one of these features but would prefer that 3.3 not be delayed for it, please leave a comment. Also, if you have no personal interest in a feature but think it's worth delaying the release for it, please leave a comment and (optionally) explain why.

  • Joystick state callbacks (glfwSetJoystick*Callback) #601 (half of), #856
    • some work, all platforms, intersects with event time
  • Joystick state query (glfwGetJoystickState, GLFWjoystickstate) #601 (half of)
    • little work, shared code only
  • Event time (glfwGetEventTime) #1012
  • EGLDevice backend (no API change) #786
  • Disable screensaver via libdbus (no API change) #854
    • some work, Unix only
  • Native handle attachment (function name needed) #25
  • IME functions (pre-edit event, pre-edit window position, IME toggle) #41, #658
  • macOS window occlusion (design needed) #680
    • unknown amount of work

There are also many very valuable ways to contribute other than making feature PRs.

I know some of you are very familiar with the internals and conventions of GLFW. You could team up with and mentor someone new to the project who is taking on one of the above features and get the PR from promising to ready to merge.

Documentation bug reports and PRs are always welcome. There has been a lot of documentation added or changed since the last release. There will be mistakes in it, as well as awkward phrasings and poor explanations. The compilation and build guides are especially terrible and could use both improvements, expansion and (especially for the GUI parts) lots of images (default system DPI, default UI theme).

The Doxygen custom CSS needs to be updated since Doxygen broke tons of the current one in a recent release. Most importantly the colors of the new dynamic menus. This one doesn't have an issue so open one if you're taking this on. Done by @siavashserver in #1100

Is your project using GLFW? Are you still using 3.2.1 or earlier? Try running it on 3.3 and see if everything works. If not, please open an issue ASAP.

Do you have any joysticks or controllers laying around? There have been major changes to the macOS joystick backend, the Linux one has been replaced entirely and the SDL_gamecontrollerdb support needs all the testing it can get.

Since we just added a new parser with glfwUpdateGamepadMappings, run fuzzers against it and report or fix any bugs they find.

Meta-contributions: suggest new suggestions for this list.

@elmindreda elmindreda added this to the 3.3 milestone Oct 17, 2017

@elmindreda elmindreda referenced this issue Oct 17, 2017

Open

Meta #1009

@siavashserver

This comment has been minimized.

Show comment
Hide comment
@siavashserver

siavashserver Oct 21, 2017

Member

@elmindreda Hello! Just fixed the Doxygen navigation bar issues. Is there anything else broken with the docs?

P.S. sorry about the late reply, I'm not subscribed to the glfw/glfw repository issues. Please assign/notify me for Doxygen related issues ^^"

Member

siavashserver commented Oct 21, 2017

@elmindreda Hello! Just fixed the Doxygen navigation bar issues. Is there anything else broken with the docs?

P.S. sorry about the late reply, I'm not subscribed to the glfw/glfw repository issues. Please assign/notify me for Doxygen related issues ^^"

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Oct 22, 2017

Member

@siavashserver Thank you! Can't find anything more in my lists but will do.

Member

elmindreda commented Oct 22, 2017

@siavashserver Thank you! Can't find anything more in my lists but will do.

@elmindreda elmindreda added the meta label Oct 25, 2017

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke Nov 5, 2017

I've been working on the gamecontrollerdb. If there is anything I can do to help, feel free to ask me / open an issue. There is now a 2.0.5 release so it should be good to go.

p-groarke commented Nov 5, 2017

I've been working on the gamecontrollerdb. If there is anything I can do to help, feel free to ask me / open an issue. There is now a 2.0.5 release so it should be good to go.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Nov 10, 2017

Member

@p-groarke Thank you! I've been following your fork closely. Great work!

The only reason I haven't switched to your fork it is because I haven't seen @gabomdq bless publicly endorse it. Have you heard anything from them? Since GLFW is essentially a self-invited guest to the gamecontrollerdb ecosystem I don't want to do anything that might cause it to split. Same reason why there are disclaimers in the GLFW docs about SDL and the db always being right about the format.

Member

elmindreda commented Nov 10, 2017

@p-groarke Thank you! I've been following your fork closely. Great work!

The only reason I haven't switched to your fork it is because I haven't seen @gabomdq bless publicly endorse it. Have you heard anything from them? Since GLFW is essentially a self-invited guest to the gamecontrollerdb ecosystem I don't want to do anything that might cause it to split. Same reason why there are disclaimers in the GLFW docs about SDL and the db always being right about the format.

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke Nov 10, 2017

@elmindreda Thx :)

I think it is too new for official inclusion and so I wouldn't recommend it (not yet). I personally wanted updated mappings for myself, and one thing led to another (you know the drill) and I thought I'd share. A lot of good new mappings require SDL 2.0.6 additions as well :/

I haven't contacted @gabomdq yet, I wasn't going to, you think I should? I am not part of SDL in any way (I am a GLFW user) and don't currently have the time for open-source politics on this one. I'll keep you posted if I contact him/her and something good emerges.

Good day. Ty for GLFW, it rocks :)

p-groarke commented Nov 10, 2017

@elmindreda Thx :)

I think it is too new for official inclusion and so I wouldn't recommend it (not yet). I personally wanted updated mappings for myself, and one thing led to another (you know the drill) and I thought I'd share. A lot of good new mappings require SDL 2.0.6 additions as well :/

I haven't contacted @gabomdq yet, I wasn't going to, you think I should? I am not part of SDL in any way (I am a GLFW user) and don't currently have the time for open-source politics on this one. I'll keep you posted if I contact him/her and something good emerges.

Good day. Ty for GLFW, it rocks :)

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke Dec 16, 2017

For the ControllerDB: my branch was merged. I am also a collaborator to the repo now, though I am waiting before taking any action. There was a mixup in versions, but in the worst case the 205 mappings with inversion or range just wont load in GLFW. Cheers.

p-groarke commented Dec 16, 2017

For the ControllerDB: my branch was merged. I am also a collaborator to the repo now, though I am waiting before taking any action. There was a mixup in versions, but in the worst case the 205 mappings with inversion or range just wont load in GLFW. Cheers.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Dec 17, 2017

Member

@p-groarke Having looked more closely at it, I see no reason GLFW 3.3 won't ship with support for -, + and ~. Even my first rough draft implementation came to only a handful of lines.

Member

elmindreda commented Dec 17, 2017

@p-groarke Having looked more closely at it, I see no reason GLFW 3.3 won't ship with support for -, + and ~. Even my first rough draft implementation came to only a handful of lines.

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke Dec 17, 2017

@elmindreda That would be great!

I just fixed the 205 mappings release, so no pressure. They are also in a separate file (older_releases/gamecontrollerdb_205.txt), which means users can back-port mappings or send PRs for the old releases.

Obviously supporting the modifiers would be sweet. They are necessary for XBox One support (that is mainly why they were added) and a few other controllers.

p-groarke commented Dec 17, 2017

@elmindreda That would be great!

I just fixed the 205 mappings release, so no pressure. They are also in a separate file (older_releases/gamecontrollerdb_205.txt), which means users can back-port mappings or send PRs for the old releases.

Obviously supporting the modifiers would be sweet. They are necessary for XBox One support (that is mainly why they were added) and a few other controllers.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Dec 17, 2017

Member

@p-groarke Oh, and I've updated the mappings once already (from _204.txt) since your first big upstream merge. It added so many new mappings that the internal storage scheme broke and had to be redone. 😄

Member

elmindreda commented Dec 17, 2017

@p-groarke Oh, and I've updated the mappings once already (from _204.txt) since your first big upstream merge. It added so many new mappings that the internal storage scheme broke and had to be redone. 😄

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke commented Dec 17, 2017

lol!!! XD

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Dec 20, 2017

Member

glfwInitHintString was renamed to glfwWindowHintString due to #1139.

Member

elmindreda commented Dec 20, 2017

glfwInitHintString was renamed to glfwWindowHintString due to #1139.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Dec 20, 2017

Member

Added user pointers for monitors and joysticks to possibly help people who wrap things in OOP.

Member

elmindreda commented Dec 20, 2017

Added user pointers for monitors and joysticks to possibly help people who wrap things in OOP.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Dec 20, 2017

Member

Removed the event time feature from 3.3 for now as the time source discussion is still unresolved.

Member

elmindreda commented Dec 20, 2017

Removed the event time feature from 3.3 for now as the time source discussion is still unresolved.

@aerojockey

This comment has been minimized.

Show comment
Hide comment
@aerojockey

aerojockey Jan 29, 2018

I already have customized GLFW with joystick input callbacks on X11, since I needed it and am done with SDL. I'm intending to do it for Windows and Wayland as well, sometime in the next few months, since I'll need it for those platforms as well. The only thing is, in my version, the joystick callbacks and window callbacks are not chronological. (I assume this is why you need event times as part of this. For me it's not a serious problem. I doubt very many users are going to have one hand on the gamepad and another hand on the keyboard.)

So, I guess what I'm saying is, I will be implementing this on those platforms regardless, without trying to synchronize with window callbacks. So they will be there if you want to grab it and throw it in.

aerojockey commented Jan 29, 2018

I already have customized GLFW with joystick input callbacks on X11, since I needed it and am done with SDL. I'm intending to do it for Windows and Wayland as well, sometime in the next few months, since I'll need it for those platforms as well. The only thing is, in my version, the joystick callbacks and window callbacks are not chronological. (I assume this is why you need event times as part of this. For me it's not a serious problem. I doubt very many users are going to have one hand on the gamepad and another hand on the keyboard.)

So, I guess what I'm saying is, I will be implementing this on those platforms regardless, without trying to synchronize with window callbacks. So they will be there if you want to grab it and throw it in.

@elmindreda

This comment has been minimized.

Show comment
Hide comment
@elmindreda

elmindreda Feb 13, 2018

Member

@p-groarke Support for input modifiers has been added (2040309) and we're now using the full database (f4cd470). Output modifiers remain to be done, but no one seems to be using those yet.

Member

elmindreda commented Feb 13, 2018

@p-groarke Support for input modifiers has been added (2040309) and we're now using the full database (f4cd470). Output modifiers remain to be done, but no one seems to be using those yet.

@p-groarke

This comment has been minimized.

Show comment
Hide comment
@p-groarke

p-groarke Feb 16, 2018

@elmindreda Great! Yes nobody seems to use those :)

p-groarke commented Feb 16, 2018

@elmindreda Great! Yes nobody seems to use those :)

@svenevs

This comment has been minimized.

Show comment
Hide comment
@svenevs

svenevs Jun 28, 2018

If you are waiting for one of these features but would prefer that 3.3 not be delayed for it, please leave a comment

I wonder if the remaining items would make sense for a patch release rather than the minor release. I'm not sure about the joystick stuff (that seems like a really big cookie), but "Disable screensaver" and "macOS window occlusion" seem like good candidates for patch releases.


Related to potential 3.3 items (that would be fast to implement and I can do it no problem), would you be interested in parent projects (in submodule world) being able to consume the GLFW objects? The changes are actually pretty simple, the core change being this: https://github.com/wjakob/glfw/blob/228b355798fb57dfc97986a5e1f911ede177dedc/src/CMakeLists.txt#L55-L61

Then in parent projects, you can

add_subdirectory(...glfw/path...)
set_target_properties(glfw PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
# ... sometime later the objects can be consumed ...
add_library(nanogui ${NANOGUI_LIBRARY_TYPE}
    $<TARGET_OBJECTS:nanogui-obj>
    $<TARGET_OBJECTS:glfw_objects> # nom nom nom
)

Being able to consume the objects is mostly why that fork exists, but I think ideally we would use a stable release tag on the main repo here :)

svenevs commented Jun 28, 2018

If you are waiting for one of these features but would prefer that 3.3 not be delayed for it, please leave a comment

I wonder if the remaining items would make sense for a patch release rather than the minor release. I'm not sure about the joystick stuff (that seems like a really big cookie), but "Disable screensaver" and "macOS window occlusion" seem like good candidates for patch releases.


Related to potential 3.3 items (that would be fast to implement and I can do it no problem), would you be interested in parent projects (in submodule world) being able to consume the GLFW objects? The changes are actually pretty simple, the core change being this: https://github.com/wjakob/glfw/blob/228b355798fb57dfc97986a5e1f911ede177dedc/src/CMakeLists.txt#L55-L61

Then in parent projects, you can

add_subdirectory(...glfw/path...)
set_target_properties(glfw PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
# ... sometime later the objects can be consumed ...
add_library(nanogui ${NANOGUI_LIBRARY_TYPE}
    $<TARGET_OBJECTS:nanogui-obj>
    $<TARGET_OBJECTS:glfw_objects> # nom nom nom
)

Being able to consume the objects is mostly why that fork exists, but I think ideally we would use a stable release tag on the main repo here :)

@Alzathar

This comment has been minimized.

Show comment
Hide comment
@Alzathar

Alzathar Jun 29, 2018

Regarding issue #680 (macOS window occlusion), there is two PRs proposed to fix this issue:

  • PR #834 (Treat occluded windows as hidden)
  • PR #1123 (Add occlusion callback and window attribute)

Based on PRs' comments, the second one seems the best. It introduced a new callback function glfwSetWindowOcclusionCallback(GLFWwindow* window, GLFWwindowocclusionfun cbfun)and new window attribute GLFW_OCCLUDED.

From my understanding, this will fix the issue #680.

Another interesting PR for macOS (and reviewed) is the PR #1114 (fixed bug with GLFW running in a Cocoa app, added Cocoa test app). I guess it is not yet merged because the contributor did not (yet?) modify its code according to the reviewer's suggestions (mostly typos). Maybe another contributor can correct this.

Alzathar commented Jun 29, 2018

Regarding issue #680 (macOS window occlusion), there is two PRs proposed to fix this issue:

  • PR #834 (Treat occluded windows as hidden)
  • PR #1123 (Add occlusion callback and window attribute)

Based on PRs' comments, the second one seems the best. It introduced a new callback function glfwSetWindowOcclusionCallback(GLFWwindow* window, GLFWwindowocclusionfun cbfun)and new window attribute GLFW_OCCLUDED.

From my understanding, this will fix the issue #680.

Another interesting PR for macOS (and reviewed) is the PR #1114 (fixed bug with GLFW running in a Cocoa app, added Cocoa test app). I guess it is not yet merged because the contributor did not (yet?) modify its code according to the reviewer's suggestions (mostly typos). Maybe another contributor can correct this.

@linkmauve

This comment has been minimized.

Show comment
Hide comment
@linkmauve

linkmauve Oct 3, 2018

Member

Multiple Linux distributions and desktop environments have started to default to Wayland, and while the X11 backend works there thanks to Xwayland, a native backend provides better integration and less overhead.

For 3.3 I’d like to remove the experimental status from the Wayland backend, I have created a GitHub Project about that a few months ago, which has only one outstanding bug and a few missing “nice to have” features. I’d like to get more testing done on it before the release too, but from my personal testing it is already very good.

Member

linkmauve commented Oct 3, 2018

Multiple Linux distributions and desktop environments have started to default to Wayland, and while the X11 backend works there thanks to Xwayland, a native backend provides better integration and less overhead.

For 3.3 I’d like to remove the experimental status from the Wayland backend, I have created a GitHub Project about that a few months ago, which has only one outstanding bug and a few missing “nice to have” features. I’d like to get more testing done on it before the release too, but from my personal testing it is already very good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment