Skip to content

Commit

Permalink
Relicence of JackControlAPI.h and control.h after discussion with Ned…
Browse files Browse the repository at this point in the history
…ko Arnaudov.
  • Loading branch information
sletz committed Jun 4, 2023
1 parent 4f58969 commit 520dfa0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 40 deletions.
24 changes: 4 additions & 20 deletions common/JackControlAPI.h
Original file line number Diff line number Diff line change
@@ -1,23 +1,7 @@
/*
JACK control API
Copyright (C) 2008 Nedko Arnaudov
Copyright (C) 2008 Grame
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* JACK server control API */
/* SPDX-FileCopyrightText: Copyright © 2008-2023 Nedko Arnaudov */
/* SPDX-FileCopyrightText: Copyright © 2008-2023 Grame */
/* SPDX-License-Identifier: ( GPL-2.0-or-later OR LGPL-2.1-or-later OR MIT OR AFL-2.1 ) */

#ifndef __JackControlAPI__
#define __JackControlAPI__
Expand Down
24 changes: 4 additions & 20 deletions common/jack/control.h
Original file line number Diff line number Diff line change
@@ -1,24 +1,8 @@
/* -*- Mode: C ; c-basic-offset: 4 -*- */
/*
JACK control API
Copyright (C) 2008 Nedko Arnaudov
Copyright (C) 2008 GRAME
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* JACK server control API */
/* SPDX-FileCopyrightText: 2008-2023 Nedko Arnaudov */
/* SPDX-FileCopyrightText: 2008-2023 Grame */
/* SPDX-License-Identifier: ( GPL-2.0-or-later OR LGPL-2.1-or-later OR MIT OR AFL-2.1 ) */
/**
* @file jack/control.h
* @ingroup publicheader
Expand Down

7 comments on commit 520dfa0

@falkTX
Copy link
Member

@falkTX falkTX commented on 520dfa0 Jun 5, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This easily passes the wrong impression, no?
The jack server libs are still GPL, not liberally licensed.

But anyhow, there are other people that changed these files, as seen in https://github.com/jackaudio/jack2/commits/develop/common/jack/control.h
Were they contacted too regarding the changes? I surely wasn't

@nedko
Copy link
Contributor

@nedko nedko commented on 520dfa0 Jun 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as my work on the file header is concerned, I"ve re-licensed so to clarify (see the signed tag).

SPDX-FileCopyrightText: Copyright © 2008-2023 Nedko Arnaudov
SPDX-License-Identifier: ( GPL-2.0-or-later OR LGPL-2.1-or-later OR MIT OR AFL-2.1 )

Implementators and/or users of the JACK Control API interface header
file are hereby granted right to use my work in control API header file
under one of the licenses (pick any, pick one):

  • GPL-2.0-or-later
  • LGPL-2.1-or-later
  • MIT
  • AFL-2.1

Eventually I'll make a version better suited for non-jack2 implementation. Quite a lot of later changes are JACK2 specific.
@falkTX, of course your stance cannot be ignored. Especially if your contributions are kept in the reusable, non-jack2-specific version.

This header file should really be be reused from jack-headers repo, as it was envisioned long ago.

@falkTX
Copy link
Member

@falkTX falkTX commented on 520dfa0 Jun 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldnt it just be simpler to license it as 0BSD? It is the first time I even hear of AFL.
for stuff that is minimal and only covering API definitions (which in europe has been found as not being copyrightable), just put it as freely as possible.
CC0/public domain is not valid on all countries, but 0BSD seems good (according to Fedora/RH legal folks).
So my 2cents is to just have API related header files be as liberally licensed as possible, and let anyone do what they want with it.

@nedko
Copy link
Contributor

@nedko nedko commented on 520dfa0 Jun 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libdbus (used by jackdbus) is licensed LGPL OR AFL, this is why I've also included AFL in the re-licensing effort. 0BSD can be added as well.
The goal here is to have header more liberally and clearly licensed, so implementators and/or users of the API are able to use the header files without license notice about libjackserver.so like this:

https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/LICENSE#L9

@falkTX
Copy link
Member

@falkTX falkTX commented on 520dfa0 Jun 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

understandable, and quite okay with me.
just next time it is better to ask first rather than assume, thanks

@nedko
Copy link
Contributor

@nedko nedko commented on 520dfa0 Jun 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is a summary of improvements over the basic design that suited the initial jackdbus:

  • Internal clients, GRAME
  • Portability to non-UNIX, Microsoft Windows in particular, sigset_t is replaced with jackctl_sigmask_t (GRAME)
  • parameter constraints in control API (nedko)
  • Master/Slave driver concept and SwitchMaster, @surfacepatterns (Devin Anderson, no copyright line) and GRAME
  • jackctl_server_create() gets two parameters, on_device_acquire and on_device_release, as dbus device reservation was moved to jackdbus on request to keep jackd clean of dbus (nedko)
  • jackd "session file" support (Timo Wischer, falktx, no copyright line)
  • jackctl_server_create2() with additional on_device_reservation_loop parameter, so that jackd can have device reservation too. ("Fix blocking DBus device reservation, so it plays nice with others"), by falktx, no copyright line

Future non-stub implementation of a libjackserver in PipeWire that is suitable (works without significant regressions against the jack2 version) for LADI/jackdbus will:

  • use SPA plugins instead of internal clients (internal client concept is probably mostly reusable)
  • Rework clocked driver switching mechanism to one suitable for more than one active master-clocking drivers in the graph (complete rework of the interface Master/Slave/SwitchMaster interface)

@surfacepatterns
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Nedko. It's been a while. :)

I'm fine with my changes being licensed under the specified licenses.

Please sign in to comment.