Re: QPA plugin like functionality in frameworks?

2015-07-01 Thread Milian Wolff
On Tuesday 30 June 2015 20:33:09 Albert Astals Cid wrote:
 El Dijous, 25 de juny de 2015, a les 08:46:07, Martin Gräßlin va escriure:
  On Wednesday 24 June 2015 23:20:21 Aleix Pol wrote:
   On Wed, Jun 24, 2015 at 9:51 AM, Martin Gräßlin mgraess...@kde.org
 
 wrote:
On Tuesday 23 June 2015 19:35:48 Aleix Pol wrote:
On Tue, Jun 23, 2015 at 9:42 AM, Martin Gräßlin mgraess...@kde.org
  
  wrote:
 Hi framework-developers and packagers,
 
 with two frameworks I'm currently in the need to have something
 like
 QPA.
 I
 want to make it possible to provide windowing-system specific
 plugins
 for
 frameworks using a private API. The need arises first of all in
 kwindowsystem to support wayland [1]. To implement it we need a
 dependency to KWayland, which is currently part of kde-workspace
 and
 not
 yet up to the quality and stability levels needed to make it a
 framework.
 The second framework where I need such functionality is
 kglobalaccel
 where kwin needs to take over a large part of the functionality of
 the
 runtime to make it work on wayland at all.
 
 I see the following possibilities to solve the problem:
 1.Make it a private API without any ABI guarantee
 2. Make it a public stable API with ABI guarantee
 3. Make it a private API with so-version changes whenever the ABI
 changes
 
 Option 1 is closest to what Qt's QPA does, but I think this would
 be
 a
 nightmare for packagers.
 
 Option 2 could result in a nightmare for developers especially in
 the
 plugin infrastructure itself. With releases every month that could
 quickly end in classes like KWindowSystemPrivate32 and result in an
 unmanageable runtime check system.
 
 Personally I think Option 3 is the cleanest solution. Would this be
 acceptable for everyone? If yes are there any suggestions for where
 to
 install headers to, for naming the libraries, etc?
 
 Looking forward for your input,
 
 Cheers
 Martin
 
 [1] And obviously also other windowing systems if
 distributions/OSes
 want
 to add support for it.
 ___
 Kde-frameworks-devel mailing list
 Kde-frameworks-devel@kde.org
 https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Hi Martin,
We already have something similar with frameworksintegration, maybe
it
would make sense to integrate what you need there?

Frameworksintegration doesn't really help as it's still part of
frameworks
and thus cannot depend on workspace libraries like kwayland. Also it's
absolutely no solution for the problem of kglobalaccel (that feature
must(!) be provided by kwin, there is no other way).

The biggest problem I see is that you want it in kde-workspace and
it's really complex to use a changing library within 2 different
release cycles. It will make things break on one side or another.

What you can do is a stable plugin API and then provide the Wayland
plugins from Plasma releases. X11 and others can remain within
frameworks.

That's option 2 from above. As said above I fear that this will be
problematic due to the very short release cycle of frameworks and will
create many subclasses just to keep it ABI stable. Of course it's
doable,
but well...
   
   Well, these aren't completely new abstractions I guess, they're just
   not  public interfaces yet. If you start with wayland and X11 backends
   (and ideally win/mac too), it should be a solid-enough interface
   already so it doesn't need to change on the very next iteration.
  
  This assumes the API is done and is no longer extended. That's not the
  case, the API got extended at a constant pace over the last few months.
  Each addition to the API will need an addition to the private API in
  measure of adding a new virtual method.
 
 There's ways to workaround the virtual method BIC issue, first lame one that
 comes to mind is using meta object system instead of the C++ virtual stuff
 if it's not a hot path, afaik our Binary Compatibility page list a few
 others (virtual_hook).

Another way to achieve the same was implemented by Christoph Cullmann in the 
KatePart/Kate/KTextEditor based on KF5. Essentially, the interfaces are non-
virtual and delegate calls to some actual implementation via 
QMetaObject::invokeMethod. See e.g. KTextEditor::MainWindow.

The advantage is that the public headers can be extended at will (adding non-
virtual functions keeps source and binary compatibility). The downside is that 
there is a small performance penalty (which could be somewhat reduced by using 
static QMetaMethod and invoking them). And, probably more important, there is 
no compile-time check that the invoked methods are available in the 
implementation side.

Bye
-- 
Milian Wolff

Re: QPA plugin like functionality in frameworks?

2015-06-30 Thread Albert Astals Cid
El Dijous, 25 de juny de 2015, a les 08:46:07, Martin Gräßlin va escriure:
 On Wednesday 24 June 2015 23:20:21 Aleix Pol wrote:
  On Wed, Jun 24, 2015 at 9:51 AM, Martin Gräßlin mgraess...@kde.org 
wrote:
   On Tuesday 23 June 2015 19:35:48 Aleix Pol wrote:
   On Tue, Jun 23, 2015 at 9:42 AM, Martin Gräßlin mgraess...@kde.org
 
 wrote:
Hi framework-developers and packagers,

with two frameworks I'm currently in the need to have something like
QPA.
I
want to make it possible to provide windowing-system specific plugins
for
frameworks using a private API. The need arises first of all in
kwindowsystem to support wayland [1]. To implement it we need a
dependency to KWayland, which is currently part of kde-workspace and
not
yet up to the quality and stability levels needed to make it a
framework.
The second framework where I need such functionality is kglobalaccel
where kwin needs to take over a large part of the functionality of
the
runtime to make it work on wayland at all.

I see the following possibilities to solve the problem:
1.Make it a private API without any ABI guarantee
2. Make it a public stable API with ABI guarantee
3. Make it a private API with so-version changes whenever the ABI
changes

Option 1 is closest to what Qt's QPA does, but I think this would be
a
nightmare for packagers.

Option 2 could result in a nightmare for developers especially in the
plugin infrastructure itself. With releases every month that could
quickly end in classes like KWindowSystemPrivate32 and result in an
unmanageable runtime check system.

Personally I think Option 3 is the cleanest solution. Would this be
acceptable for everyone? If yes are there any suggestions for where
to
install headers to, for naming the libraries, etc?

Looking forward for your input,

Cheers
Martin

[1] And obviously also other windowing systems if distributions/OSes
want
to add support for it.
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel
   
   Hi Martin,
   We already have something similar with frameworksintegration, maybe it
   would make sense to integrate what you need there?
   
   Frameworksintegration doesn't really help as it's still part of
   frameworks
   and thus cannot depend on workspace libraries like kwayland. Also it's
   absolutely no solution for the problem of kglobalaccel (that feature
   must(!) be provided by kwin, there is no other way).
   
   The biggest problem I see is that you want it in kde-workspace and
   it's really complex to use a changing library within 2 different
   release cycles. It will make things break on one side or another.
   
   What you can do is a stable plugin API and then provide the Wayland
   plugins from Plasma releases. X11 and others can remain within
   frameworks.
   
   That's option 2 from above. As said above I fear that this will be
   problematic due to the very short release cycle of frameworks and will
   create many subclasses just to keep it ABI stable. Of course it's
   doable,
   but well...
  
  Well, these aren't completely new abstractions I guess, they're just
  not  public interfaces yet. If you start with wayland and X11 backends
  (and ideally win/mac too), it should be a solid-enough interface
  already so it doesn't need to change on the very next iteration.
 
 This assumes the API is done and is no longer extended. That's not the case,
 the API got extended at a constant pace over the last few months. Each
 addition to the API will need an addition to the private API in measure
 of adding a new virtual method.

There's ways to workaround the virtual method BIC issue, first lame one that 
comes to mind is using meta object system instead of the C++ virtual stuff if 
it's not a hot path, afaik our Binary Compatibility page list a few others 
(virtual_hook).

Cheers,
  Albert

 
 Cheers
 Martin

___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Re: Re: QPA plugin like functionality in frameworks?

2015-06-25 Thread Martin Gräßlin
On Wednesday 24 June 2015 23:20:21 Aleix Pol wrote:
 On Wed, Jun 24, 2015 at 9:51 AM, Martin Gräßlin mgraess...@kde.org wrote:
  On Tuesday 23 June 2015 19:35:48 Aleix Pol wrote:
  On Tue, Jun 23, 2015 at 9:42 AM, Martin Gräßlin mgraess...@kde.org 
wrote:
   Hi framework-developers and packagers,
   
   with two frameworks I'm currently in the need to have something like
   QPA.
   I
   want to make it possible to provide windowing-system specific plugins
   for
   frameworks using a private API. The need arises first of all in
   kwindowsystem to support wayland [1]. To implement it we need a
   dependency to KWayland, which is currently part of kde-workspace and
   not
   yet up to the quality and stability levels needed to make it a
   framework.
   The second framework where I need such functionality is kglobalaccel
   where kwin needs to take over a large part of the functionality of the
   runtime to make it work on wayland at all.
   
   I see the following possibilities to solve the problem:
   1.Make it a private API without any ABI guarantee
   2. Make it a public stable API with ABI guarantee
   3. Make it a private API with so-version changes whenever the ABI
   changes
   
   Option 1 is closest to what Qt's QPA does, but I think this would be a
   nightmare for packagers.
   
   Option 2 could result in a nightmare for developers especially in the
   plugin infrastructure itself. With releases every month that could
   quickly end in classes like KWindowSystemPrivate32 and result in an
   unmanageable runtime check system.
   
   Personally I think Option 3 is the cleanest solution. Would this be
   acceptable for everyone? If yes are there any suggestions for where to
   install headers to, for naming the libraries, etc?
   
   Looking forward for your input,
   
   Cheers
   Martin
   
   [1] And obviously also other windowing systems if distributions/OSes
   want
   to add support for it.
   ___
   Kde-frameworks-devel mailing list
   Kde-frameworks-devel@kde.org
   https://mail.kde.org/mailman/listinfo/kde-frameworks-devel
  
  Hi Martin,
  We already have something similar with frameworksintegration, maybe it
  would make sense to integrate what you need there?
  
  Frameworksintegration doesn't really help as it's still part of frameworks
  and thus cannot depend on workspace libraries like kwayland. Also it's
  absolutely no solution for the problem of kglobalaccel (that feature
  must(!) be provided by kwin, there is no other way).
  
  The biggest problem I see is that you want it in kde-workspace and
  it's really complex to use a changing library within 2 different
  release cycles. It will make things break on one side or another.
  
  What you can do is a stable plugin API and then provide the Wayland
  plugins from Plasma releases. X11 and others can remain within
  frameworks.
  
  That's option 2 from above. As said above I fear that this will be
  problematic due to the very short release cycle of frameworks and will
  create many subclasses just to keep it ABI stable. Of course it's doable,
  but well...
 Well, these aren't completely new abstractions I guess, they're just
 not  public interfaces yet. If you start with wayland and X11 backends
 (and ideally win/mac too), it should be a solid-enough interface
 already so it doesn't need to change on the very next iteration.

This assumes the API is done and is no longer extended. That's not the case, 
the API got extended at a constant pace over the last few months. Each 
addition to the API will need an addition to the private API in measure of 
adding a new virtual method.

Cheers
Martin

signature.asc
Description: This is a digitally signed message part.
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: Re: QPA plugin like functionality in frameworks?

2015-06-24 Thread Aleix Pol
On Wed, Jun 24, 2015 at 9:51 AM, Martin Gräßlin mgraess...@kde.org wrote:
 On Tuesday 23 June 2015 19:35:48 Aleix Pol wrote:
 On Tue, Jun 23, 2015 at 9:42 AM, Martin Gräßlin mgraess...@kde.org wrote:
  Hi framework-developers and packagers,
 
  with two frameworks I'm currently in the need to have something like QPA.
  I
  want to make it possible to provide windowing-system specific plugins for
  frameworks using a private API. The need arises first of all in
  kwindowsystem to support wayland [1]. To implement it we need a
  dependency to KWayland, which is currently part of kde-workspace and not
  yet up to the quality and stability levels needed to make it a framework.
  The second framework where I need such functionality is kglobalaccel
  where kwin needs to take over a large part of the functionality of the
  runtime to make it work on wayland at all.
 
  I see the following possibilities to solve the problem:
  1.Make it a private API without any ABI guarantee
  2. Make it a public stable API with ABI guarantee
  3. Make it a private API with so-version changes whenever the ABI changes
 
  Option 1 is closest to what Qt's QPA does, but I think this would be a
  nightmare for packagers.
 
  Option 2 could result in a nightmare for developers especially in the
  plugin infrastructure itself. With releases every month that could
  quickly end in classes like KWindowSystemPrivate32 and result in an
  unmanageable runtime check system.
 
  Personally I think Option 3 is the cleanest solution. Would this be
  acceptable for everyone? If yes are there any suggestions for where to
  install headers to, for naming the libraries, etc?
 
  Looking forward for your input,
 
  Cheers
  Martin
 
  [1] And obviously also other windowing systems if distributions/OSes want
  to add support for it.
  ___
  Kde-frameworks-devel mailing list
  Kde-frameworks-devel@kde.org
  https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

 Hi Martin,
 We already have something similar with frameworksintegration, maybe it
 would make sense to integrate what you need there?

 Frameworksintegration doesn't really help as it's still part of frameworks and
 thus cannot depend on workspace libraries like kwayland. Also it's absolutely
 no solution for the problem of kglobalaccel (that feature must(!) be provided
 by kwin, there is no other way).

 The biggest problem I see is that you want it in kde-workspace and
 it's really complex to use a changing library within 2 different
 release cycles. It will make things break on one side or another.

 What you can do is a stable plugin API and then provide the Wayland
 plugins from Plasma releases. X11 and others can remain within
 frameworks.

 That's option 2 from above. As said above I fear that this will be problematic
 due to the very short release cycle of frameworks and will create many
 subclasses just to keep it ABI stable. Of course it's doable, but well...

Well, these aren't completely new abstractions I guess, they're just
not  public interfaces yet. If you start with wayland and X11 backends
(and ideally win/mac too), it should be a solid-enough interface
already so it doesn't need to change on the very next iteration.

Aleix
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Re: QPA plugin like functionality in frameworks?

2015-06-23 Thread Aleix Pol
On Tue, Jun 23, 2015 at 9:42 AM, Martin Gräßlin mgraess...@kde.org wrote:
 Hi framework-developers and packagers,

 with two frameworks I'm currently in the need to have something like QPA. I
 want to make it possible to provide windowing-system specific plugins for
 frameworks using a private API. The need arises first of all in kwindowsystem
 to support wayland [1]. To implement it we need a dependency to KWayland,
 which is currently part of kde-workspace and not yet up to the quality and
 stability levels needed to make it a framework. The second framework where I
 need such functionality is kglobalaccel where kwin needs to take over a large
 part of the functionality of the runtime to make it work on wayland at all.

 I see the following possibilities to solve the problem:
 1.Make it a private API without any ABI guarantee
 2. Make it a public stable API with ABI guarantee
 3. Make it a private API with so-version changes whenever the ABI changes

 Option 1 is closest to what Qt's QPA does, but I think this would be a
 nightmare for packagers.

 Option 2 could result in a nightmare for developers especially in the plugin
 infrastructure itself. With releases every month that could quickly end in
 classes like KWindowSystemPrivate32 and result in an unmanageable runtime
 check system.

 Personally I think Option 3 is the cleanest solution. Would this be acceptable
 for everyone? If yes are there any suggestions for where to install headers
 to, for naming the libraries, etc?

 Looking forward for your input,

 Cheers
 Martin

 [1] And obviously also other windowing systems if distributions/OSes want to
 add support for it.
 ___
 Kde-frameworks-devel mailing list
 Kde-frameworks-devel@kde.org
 https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


Hi Martin,
We already have something similar with frameworksintegration, maybe it
would make sense to integrate what you need there?
The biggest problem I see is that you want it in kde-workspace and
it's really complex to use a changing library within 2 different
release cycles. It will make things break on one side or another.

What you can do is a stable plugin API and then provide the Wayland
plugins from Plasma releases. X11 and others can remain within
frameworks.

Aleix
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


QPA plugin like functionality in frameworks?

2015-06-23 Thread Martin Gräßlin
Hi framework-developers and packagers,

with two frameworks I'm currently in the need to have something like QPA. I 
want to make it possible to provide windowing-system specific plugins for 
frameworks using a private API. The need arises first of all in kwindowsystem 
to support wayland [1]. To implement it we need a dependency to KWayland, 
which is currently part of kde-workspace and not yet up to the quality and 
stability levels needed to make it a framework. The second framework where I 
need such functionality is kglobalaccel where kwin needs to take over a large 
part of the functionality of the runtime to make it work on wayland at all.

I see the following possibilities to solve the problem:
1.Make it a private API without any ABI guarantee
2. Make it a public stable API with ABI guarantee
3. Make it a private API with so-version changes whenever the ABI changes

Option 1 is closest to what Qt's QPA does, but I think this would be a 
nightmare for packagers. 

Option 2 could result in a nightmare for developers especially in the plugin 
infrastructure itself. With releases every month that could quickly end in 
classes like KWindowSystemPrivate32 and result in an unmanageable runtime 
check system.

Personally I think Option 3 is the cleanest solution. Would this be acceptable 
for everyone? If yes are there any suggestions for where to install headers 
to, for naming the libraries, etc?

Looking forward for your input,

Cheers
Martin

[1] And obviously also other windowing systems if distributions/OSes want to 
add support for it.

signature.asc
Description: This is a digitally signed message part.
___
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel