Slashdot Mirror


Nokia Makes LGPL Version of PyQt

EtaCarinae writes "Nokia didn't succeed in convincing Riverbank to change its licensing terms on PyQt, and so decided to create their own LGPL'ed version of it. From the FAQ at the PySide site: 'Nokia's initial research into Python bindings for Qt involved speaking with Riverbank Computing, the makers of PyQt. We had several discussions with them to see if it was possible to use PyQt to achieve our goals. Unfortunately, a common agreement could not be found , so in the end we decided to proceed with PySide.'"

27 of 263 comments (clear)

  1. Kudos to Nokia by gavron · · Score: 4, Funny
    If you cannot get the source to open-source, open-source the source.

    Kudos to Nokia.

    E

    1. Re:Kudos to Nokia by piquadratCH · · Score: 4, Informative

      If you cannot get the source to open-source, open-source the source.

      PyQt is open source. Or isn't the GPL considered open anymore?

    2. Re:Kudos to Nokia by Jurily · · Score: 4, Insightful

      Or isn't the GPL considered open anymore?

      Not if you want to write commercial software on top of it, which is what Nokia wants to enable. Just as they did with releasing Qt under the LGPL.

      It also helps integration if you can get both from the same vendor, and for a project like this, integration is the goal. From now on, you can expect simultaneous and/or bundled releases.

    3. Re:Kudos to Nokia by piquadratCH · · Score: 4, Insightful

      Or isn't the GPL considered open anymore?

      Not if you want to write commercial software on top of it, which is what Nokia wants to enable.

      I know the terms of the GPL and LGPL, thank you. I simply think it's unfair to make Riverbank look like the bad guys and Nokia the saviours. Riverbank provided superb Python bindings for a long time and Phil (the guy behind PyQt and Riverbank) offered great support for GPL-users on the mailing list. PySide has a long way to go to offer a comparable experience (just read the blog post on PySide of the main PyKDE developer)

    4. Re:Kudos to Nokia by Anonymous Coward · · Score: 3, Informative

      Riverbank provided superb Python bindings

      While I'm not disputing the usefulness of their bindings, I'd describe them as "working", but not necessarily "superb". Their API is not very pythonic or concise and feels pretty much like writing C++, without the segfaults :P

    5. Re:Kudos to Nokia by Anonymous Coward · · Score: 3, Interesting

      The problem with PyQt was that as it was the only python binding, you had no choice but to pay to riverbank. Considering that they don't own Qt themselves, they got a slight "monopoly"/gatekeeper position on other people's code.

      Also, PyQt was not all *that* open source, you couldn't fork it because they only release the generated code.

    6. Re:Kudos to Nokia by Jurily · · Score: 4, Insightful

      I simply think it's unfair to make Riverbank look like the bad guys and Nokia the saviours.

      Nobody wants to make Riverbank look bad. However, Nokia is doing something bigger now: they're gathering all the little pieces you previously needed to find yourself (MinGW, Qt, an IDE, and now PyQT), bundling them up, and releasing them as one package. Open Source GUI programming on Windows has literally never been easier.

      My next phone is going to be a Nokia. They deserve it.

    7. Re:Kudos to Nokia by Jurily · · Score: 3, Insightful

      Now drop the MOC from QT and everybody might consider your platform.

      Eh? Moc is crucial for tiny little features like signals and slots (and through that, the event system, and basically everything you want to do with an event-based application). It's the main selling point for Qt. Dropping it would require a complete rewrite, with perhaps QString being the only class that doesn't use it.

      Besides, "their platform" already knows about it, and it's completely transparent unless you write your Makefiles by hand.

    8. Re:Kudos to Nokia by FooBarWidget · · Score: 3, Informative

      "Not if you want to write commercial software on top of it, which is what Nokia wants to enable. Just as they did with releasing Qt under the LGPL."

      Bullshit. PyQT also has a commercial license. You're just being a freeloading leech right now.

    9. Re:Kudos to Nokia by cowbutt · · Score: 4, Insightful

      PyQT also has a commercial license. You're just being a freeloading leech right now.

      The availability of commercial licenses for PyQt show that Riverbank has no philosophical objection to people writing and distributing GPL-incompatible code that uses it, but they'd like some money for that use (which is fair enough; they're the authors after all).

      Now, Nokia seems to be standardising on Maemo/Qt for their future phones, and part of that is that they'd like to build a viable application marketplace for their phones, a la the iPhone. Keeping it free (gratis) to develop for their platform will encourage developers, which suits their goals. Presumably after asking nicely, they also offered Riverbank some cash or equivalent, at least equal to the costs they eventually incurred in developing PySide. Presumably Riverbank didn't think that was enough, and decline (which is still their perogative).

    10. Re:Kudos to Nokia by ultrabot · · Score: 3, Interesting

      The point of PyQt is to remain faithful to the official C++ Qt API, making your skills & docs directly transferrable and code easy to port over in either direction.

      PyQt has added a new, more pythonic API for signals, and PySide will do the same thing eventually. But it's essential that we retain almost-1:1 C++ mapping (though losing trivial stuff like QString).

      --
      Save your wrists today - switch to Dvorak
    11. Re:Kudos to Nokia by Anonymous Coward · · Score: 3, Insightful

      But it's essential that we retain almost-1:1 C++ mapping

      Why? I see no point, Python and C++ are two vastly different languages. It's essential that all the capabilities of Qt are exposed, but not necessarily in the exact same form. (ie. fields vs setters/getters, signal/slot objects vs signal/slot strings).

      making your skills & docs directly transferrable

      Python bindings should be designed to accommodate Python programmers, not C++ programmers.

      Anyway, the new signal/slot binding seems nice and indeed what I have been thinking of.

    12. Re:Kudos to Nokia by ultrabot · · Score: 3, Interesting

      Hell will freeze over before you'll see Qt embracing GObject. GObject is actually one of the things driving people to Qt.

      --
      Save your wrists today - switch to Dvorak
    13. Re:Kudos to Nokia by wowbagger · · Score: 4, Interesting

      Full disclosure:
      At work, I have a PyQT commercial license. I've had to look into the licensing issues around Qt and PyQt. The following is based upon my reading of the various licences and issues. I am an engineer, not an IP lawyer, and even were I a lawyer, I am not your lawyer - so do your own research.

      I am all for supporting companies like Riverbend who offer both GPL and proprietary licenses.

      However, there is a complication that Nokia was trying to address here. Whatever license you are using for PyQT you must also be using for Qt, due to the way they are linked.

      Now, with Riverbend, the only licenses they offer are GPL and proprietary. That means that if I want to release a proprietary application using PyQt, I must use the proprietary PyQt. However, that means that I now must use the proprietary license for Qt as well. But that now means I have to buy the developer licenses for my team from Nokia - again, not a big deal from an initial monetary outlay.

      Now, for my application I cannot use the GPL license because parts of my application are licensed from other people who don't want to GPL their code - it sucks, and I'd rather not deal with it, but when you are in the RF communications business and you have to support CDMA, you HAVE to do business with Qualcomm, and they will NOT change their minds.

      So when I ship my app as a Windows or GNU/Linux application, I cannot use the GPL. Now, just considering Qt, I can use the LGPL - the library is dynamically linked against my code, the user can replace the library, all is right with the world.

      Except that I cannot use the LGPL for Qt and use PyQt, as PyQt does not support LGPL. So, in case you cannot draw the Venn diagram for yourself, I am left with using the proprietary license for both Qt and PyQt. Now, even though the licensing terms are pretty generous, I still have to track all the licensed code I ship - so you just added a bunch of cost to my accounting of program. This gets even worse when the program is freely available (remember, you can be free and not be Free).

      I had contacted Riverbend when Nokia announced the LGPL'ing of Qt, and at that time they said they were considering it. Obviously, they decided they couldn't do it and remain viable as a business - and while that sucks for me, I can certainly understand their point of view. But without the ability to use the LGPL version of Qt from Python, the utility of Qt is greatly diminished. I can understand why Nokia did what they did. Yes, it would have been nice if Nokia could have worked out a way to fund Riverbend such that Riverbend could have LGPL'ed PyQt, but evidently that couldn't happen.

    14. Re:Kudos to Nokia by WaywardGeek · · Score: 4, Interesting

      I'm personally a fan of what Nokia is doing. In general, the big GUI libraries need to be LGPL or BSD to gain the widest acceptance. Requiring license fees for non-GPL leaves companies like Nokia flapping in the wind with no solution. This is also why GTK gained so much momentum at Qt's expense. This allows me to learn one way to write code, and to be able to either contribute it to the open-source community (which I do often), or to sell it through my work (which I actually get paid for).

      However, this is a troubling new way for a big company to crush a small one... "Give me your technology for free, or I'll rewrite it and then give it to the world for free." It sounds a bit like Microsoft.

      --
      Celebrate failure, and then learn from it - Nolan Bushnell
    15. Re:Kudos to Nokia by iamwahoo2 · · Score: 4, Informative
      It appears that Nokia most likely wants to bundle the PyQt package into their phones. The problem arises that when the binding is linked against both Python and Qt, the GPL then extends to those products (according to the GNU website). Nokia is a business, if Riverbank had offered their product under a desired license to Nokia at a price that is less than what they could have developed it themselves, then they would have gotten paid for PyQt.

      Put yourself in Nokia's shoes. They need a scripting interface to encourage development on their platform. How much would you pay riverbank for a product that does not exactly meet your needs? The GPL is simply not going to work in the phone environment because not everybody is going to want to license their apps under the GPL. The LGPL has proven to be a far superior compromise as evidenced by the fact that Qt (when it was GPL) previously lost traction to inferior products due to their GPL licensing.

    16. Re:Kudos to Nokia by Kjella · · Score: 3, Interesting

      This is also why GTK gained so much momentum at Qt's expense.

      At the same time, what would Qt be without the license income from commercial licenses? Nokia can justify putting money into it to support their products, but Trolltech was a software company. I did look at both GTK and Qt for hobby development and Qt was much higher quality in my personal opinion, and that's because they had real income to hire dedicated developers and make a kick-ass development platform. McDonald's is cheap and popular, that's what GTK is to companies but it doesn't imply that it's good food.

      I often find the development of open source projects painfully slow (yes, this is from the and-I-want-a-free-pony-too department) but Qt has always been a positive high note. I love how they take top notch things like WebKit and make them incredibly easy to use in QtWekKit. They're a little bit like Apple, except for developers - they take what's out there and really everybody's doing already but is difficult, package it up in a great way to make it easy for the win.

      One thing I really like is that they have, unlike much other open source stuck in the 20th century, embraced long function names and code completion. I just tried to check what the longest function name was and "availableAudioOutputDevicesChanged()" is pretty close. But since it's object oriented, you type the ./-> and the autocomplete list appears. Unlike the fcntl vs iocntl or whatever article that was here recently, it's retarded naming for people still using text editors (let the flamewars begin).

      In short, you talk about how much momentum Qt would make, I'm hoping it won't lose any of the momentum it has had. It's basically the standard library C++ should have had to compete with Java/C#...

      --
      Live today, because you never know what tomorrow brings
    17. Re:Kudos to Nokia by berj · · Score: 3, Insightful

      I looked at Qt for internal software development at my company. In the end we chose WxWidgets. It was a pain in the ass for years.. but we did it because I wasn't interested in feeding Trolltech's cockamamie pricing scheme. One license per (named) developer per platform? Can only change developers once every 6 months? Ridiculous. We employ co-op programmers who come and go every 4 months. Simply not workable.

      I asked more than once for them to sell the product as a package.. a site license or something pro-rated based on the number of developers (1-5, 5-10, whatever).. I also asked them to simply offer a paid yearly support contract which I would gladly buy since our biggest complaint with Wx was the lack of support. No across the board from Trolltech.

      So.. we found an alternative.. a free one, as it happens.. but money wasn't the issue.

      For the kind of small-scale internal commercial development we do Trolltech's business model was not workable.

  2. Nokia Makes LGPL Version of PyQt by omar.sahal · · Score: 3, Informative
    Don't forget to give credit where it's due.

    OpenBossa is a division of INdT, a nonprofit research institute in Brazil that was founded by Nokia and the Brazilian government. OpenBossa has close ties with Nokia and is well-known in the Maemo community

    Taken from the arstechnica web site that also carried this story

  3. Nokia & OSS by mcelrath · · Score: 5, Interesting

    I'm liking this new approach of Nokia toward open source, with Maemo and Qt. It's a smart move. Python bindings will make for rapid app development. They should soon have armies of OSS developers making apps for their new phone (N900). I must be dreaming, to have both Google's Android and Maemo available on what is historically the most closed computing platform in recent history (cell phones). It seems it will be possible to install both on their new phones. I hope for lots of cross-pollenation, and an app list that puts the proprietary iCrap to shame.

    --
    1^2=1; (-1)^2=1; 1^2=(-1)^2; 1=-1; 1=0.
  4. RMS was right, but got one detail wrong. by ZorbaTHut · · Score: 4, Insightful

    Applications gravitate towards being perfectly open-source. He's right. They do. If there's a closed-source app, eventually someone's going to sit down and clone it to be open-source. They'll do it because they need a version that they can access the source code for, and they'll do it because they're not willing to pay the license fees, and they'll do it because, hey, we went to all this work, why not let other people use it?

    He's right.

    But the license that code gravitates towards isn't the GPL.

    The GPL is restrictive. The GPL is - in some senses - closed, rather than open. The GPL cannot be used for all purposes.

    The license code gravitates towards is the BSD license. The MIT license. The libpng/zlib license. The license that says, in brief, "Hey. Here's some code. Don't sue us. Have fun."

    Because every software package - every software package - is pushed by that same force, that force that says "I need software with specific allowances, and if I cannot find it, I will make it." And the GPL does not allow everything.

    The GPL is a fantastic, amazing license. I've licensed code under it, and I'm glad it exists.

    But it's a midpoint - not an endpoint.

    --
    Breaking Into the Industry - A development log about starting a game studio.
    1. Re:RMS was right, but got one detail wrong. by salted-fry · · Score: 3, Insightful

      He's not confusing anything. This story is about Nokia rewriting a GPL library and using the LGPL for the rewrite. His comment about software becoming progressively free-er is entirely relevant.

  5. multiplatform? by jaclu · · Score: 3, Interesting

    Also worth to mention is that this implementation is linux only. Isnt on of the main purposes with languages like python/perl/java that they should be platform neutral?

    1. Re:multiplatform? by summner · · Score: 3, Insightful

      umm it's open source. You want it to be better ? Contribute ! :]
      Nokia is probably focusing right now on the Linux implementation because they want to use it in Linux.
      So you know, implementations doesn't just happen by them selves, they need man-hours. So Man-Up and give it to them. But don't whine.

  6. Size and speed by paugq · · Score: 4, Interesting

    This is what Richard Dale (the main author of SMOKE and the Ruby and C# bindings for Qt and KDE, and C, Objective C and Java bindings in the past, to) said about PySide:

    Currently the total size of the PySide libs for all the Qt modueles is 30 Mb. For just QtCore and QtGui they are 22.5 Mb. These are really high figures, and about twice the size of the existing PyQt libs. They are five or six (!) times larger than the Smoke libraries, which weigh in at just over 5 Mb for all the Qt modules. The Smoke libraries can be used by Ruby, C#, Perl, Common Lisp and PHP, not just a single language too. The large size is caused by the heavy use of C++ templates in Boost::Python.

    Qt alone has about 500 classes, whereas the current KDE bindings like Python and Ruby wrap over 1500 classes, which would give a combined shared library size of 90 Mb or so assuming the same size per class as Qt. So as PySide stands, I would personally consider that these figures are just too high.

    There is a hack in the generate code of doing '#define protected public', to allow protected methods to be called. This certainly won't work on Windows. Fixing it properly will require extra code to be generated to subclass each class with protected methods, and add a public method that calls a corresponding method in the class to be wrapped. This will add some extra code obviously.

    It looks like PySide are huge (3x the size of PyQt and 6x the size of SMOKE-generated bindings!) and there is very little improvement they can do if they keep on using Boost::Python to generate PySide.

    Given that PyQt costs only £350 (roughly 400 EUR) with full support and is much lighter and mature, I can't see why I would use PySide (unless Nokia gives me full, free, support with my commercial C++ license, of course, which I think they won't be doing because they required you to buy a 1000 EUR separate license for Qt Jambi -the Java bindings- )

    1. Re:Size and speed by chrb · · Score: 3, Insightful

      I can't see why I would use PySide

      Because you won't have a choice if you want to develop for Nokia phones. Nokia will ship PySide as part of the base install and it will be used by their Maemo GUI. Nokia isn't interested in competing with PyQt for that £350 of developer cash - they're interested in shipping millions of QT based Maemo phones with an app store that supports Python applications.

    2. Re:Size and speed by mairas · · Score: 5, Informative

      Hi,

      I'm the Nokia guy responsible for the project.

      It looks like PySide are huge (3x the size of PyQt and 6x the size of SMOKE-generated bindings!) and there is very little improvement they can do if they keep on using Boost::Python to generate PySide.

      You're right: the current size of PySide is an issue, especially if you consider mobile environments such as Maemo, let alone the S60 platform. However, that's also why we are working on Shiboken, an alternate binding component which would create CPython extensions directly instead of using Boost.Python as an intermediate layer. Shiboken is still in its infancy, but we expect we'll be able to solve the size issues for once and all, while retaining full Python-level compatibility with the current bindings.

      Unfortunately, there's not much info on this yet, but check our repo for the source code: qt.gitorius.org/pyside.