-
Notifications
You must be signed in to change notification settings - Fork 172
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
Use ladish instead of lash for jack session management #1645
base: master
Are you sure you want to change the base?
Conversation
Hey @GvMariani , First of all: thanks for your PR! So, LADISH uses a different version of the lash.h, right? Is it shipped with the package? In the Debian package there is no such header present. That said LADISH doesn't seem to be a lot more lively than LASH itself. Last bigger touches of the code were done almost exactly 10 years ago and it seems to be dropped by Debian after
Huh? Isn't LADISH the session handling library we want to use in this PR? Or is it referring to other libraries?
For this to work properly a number of changes have to be made in the code. But such things are already implemented as part of the NSM support.
Hydrogen already is fully NSM compatible. |
No. If you build ladish and enable the optional lash compatibility (by passing -Dliblash=enabled to meson) you get the compat headers in $ijncludedir/lash-1.0 and the corresponding pkgconfig file; the header exports exactly the same API as the original lash, thus allowing the simple switch I made in this PR, apparently without any issue.
Well, it's used in active projects, so if need arises I guess the code base will get updates, while with the original lash this is not happening at all...
I quoted the readme file from the ladish as-is; it then explains: "There is no need of such library for restoring connections between JACK clients." I missed the last sentence in the cut-and-paste...
So non need to add it by using lash/ladish: with the change proposed here you should have exactly the same feature support level you have now.
My bad: wrong wording... |
The reason the automated tests did not fail on this PR is because LASH support is disabled per-default (and none on of the LASH features are covered by unit tests). You have to add the Compiling Hydrogen with LASH support can be done by the user herself or by the package maintainers of the individual Linux distros (as we do not ship Linux binaries or packages). But as neither LASH nor LADISH is present in Debian, at least in this OS Hydrogen wouldn't be available with LASH supported via the default repos. But I'm also still a little bit puzzled regarding the objective of your PR. As the
Do you know whether the maintainer announced to maintain the LASH protocol as well? Or are these updates only confined to the LADISH code itself?
Well, in order to support the external storage quite a number of changes have to be made to the code base.
Ah, I see. But AFAIK only JACK Session is affected and not LASH. But I'm not sure and have to check it |
Hi there. This might be a naïve question, but anyway. What about allowing to build with lash or with ladish? Hence the changes would look something like:
instead of
this would leave the possibility for the users/packagers to build with whatever is available on his system. |
I'm building (locally and on the ROSA build servers: see with
Oh I did not checked that...
This would be better than my proposal... |
Okay, we might talk about different things here. Is the PR about using a) LADISH incl. its full feature set instead of LASH or b) allowing to build Hydrogen with LASH support using the
Nice. I'm a little bit surprised about it since you didn't put
Well, if it is present in ROSA Linux than this alone would be enough reason to keep it. Do you by any chance know the maintainer of Hydrogen or LADISH for ROSA Linux? If they intend to keep LADISH for a longer period of time, this PR makes perfect sense. But if they are about to drop it too, that's a different story. I just searched around a bit and unfortunately almost all resources of LADISH are down by now. Not even the docs can be accessed anymore (due to which it does not feel like a maintained thing at all). Therefore I don't really know how it works or what kind of changes we would have to make in order to fully support it. |
Hello, LADISH author/maintainer here, liblash implementation that is part of LADISH codebase is for providing drop-in replacement for lash-aware apps. I would like to emphasize that LADISH is a multi-protocol session manager. It can handle apps via multiple session management protocols along with apps that support none. NSM support in ladish was planned ten years ago when the OSC NSM 1.0 protocol was designed. Supporting apps implementing New-Session Manager protocol (1.1.1 now) is also currently planned. NSM protocols offer some additional features: the optional-gui - the ability to show/hide UIs, and the ability to switch app state without relaunching the app. The former feature is likely to get into LADISH sooner than the other. New Session Manager 1.1.X OSC API changes the optional-gui behaviour by adding this to documentation "The client SHOULD always start hidden, if not saved as visible. That implies the first load, after adding to the session, SHOULD always be hidden.". So for now I treat them in LADISH as two slightly different protocols to support. |
It's b)...
Oops... yeah:
Yes, I'm working as de facto maintainer of Sound packages in ROSA Linux, including Hydrogen...
Do you mean "docs other than the ones present in the git repositories"? I don't know, but perhaps you could get in touch with the author (he commented above in this PR...). |
@GvMariani LADISH aims to support apps via NSM as well. So at some point in future you could have option to support NSM via LADISH (inclusive)or some other session manager (e.g. RaySession) that already exist for the NSM protocols 1.0 and 1.1.X. A full set of LADISH features that H2 can additionally implement is probably empty. While being reimplementation of LASH (strictly speaking a fork of late lash+dbus development), LADISH implementation did not extend the LASH API (protocol). I.e. a) is probably not existing option at all. |
Yikes! Sounds like someone baked his/her preferred workflow routine into the forked protocol.
Glad to hear! The title of the PR smelled like a lot of changes in the code base. But header lookup is fine.
If you want to ship Hydrogen with LASH supported, we'll of course do our best to make this happen. Preferably by adding a fallback lookup for the headers as @trebmuh suggested. Regarding your future plans: After checking out LASH and having seen how few working references are left in the web I might propose to drop Hydrogen's support for it too. Not in the upcoming release (1.2), not in 1.3 (where it would be marked deprecated), but in 1.4. So, that's at least two more years till it gets dropped.
Great! NSM support in Hydrogen is well tested.
AFAICS we already support this. |
Hydrogen still can make use of the lash library for Jack session management: unfortunately the library is basically unmaintained (no commits on devel git since July 2009).
However there is Nedko Arnaudov's ladish (LADI Session Handler) library, a rewrite of lash featuring:
different hardware and backups.
of a hardware synth. This also includes storing client internal state (client project data) in a way that is not directly bound to ladish project.
The library is already used by projects from kxstudio, as Carla or Cadence.
It's also completely compatible with lash: to use it only thing needed should be replacing the library name and the header file path in the hydrogen sources (a mere 4 line change). This PR does exactly this and was locally built & tested.
While transitioning to NSM it could be useful do this change.