Allwinner CedarX Media Codec Library GPL/LGPL Compliance Update

Last month, I wrote about potential open source licenses and VP6 copyright infringement by Allwinner with their CedarX media codec library, and then since there’s been a few developments.
Allwinner_GPL_LGPL

First, Allwinner sent me an email saying they’ve now updated Cedarx library and referring my previous article. Here’s an extract:

Here, I have some update of the Allwinner’s open-source status.

We have done a lot of discussion with the developers from the linux-sunxi communication about the software license of CedarX. For each question or requirement asked by the developers, Allwinner has identify and try to give the best solution.

Now, we believe Allwinner’s CedarX license is fully compliant and resolves concerns from the community. And you can take the announcement https://www.mail-archive.com/[email protected]/msg10597.html as a reference.

Allwinner is always supporting the open-source, and try to do better and better. You can see some update on the github https://github.com/allwinner-zh, and some feedback from developers: https://github.com/allwinner-zh/bootloader/issues/5.

It’s difficult to make everyone happy, but we believe Allwinner will do better and better, and give more and more help to the developers, and we believe Allwinner will be accepted by more and more developers.

The announcement claims “the CedarX media codec framework is now released with full open source code under the LGPL license”. That actually means there’s an open source API to access the closed source binaries that’s released under the LGPL license. The good news is the VP6 code that could infringe on On2/Google copyrights has now been removed and they are using ffmpeg instead.

So I asked on linux-sunxi IRC channel to find out if there was real progress made, and soon after some more details were released on linux-sunxi mailing list, and the part that looks really bad is:

264FillDefaultRefList() and a lot of code around it is straight out of the libavcodec h264 decoder. The original name for that function is ff_h264_fill_default_ref_list() in libavcodec/h264_refs.c: https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/h264_refs.c#L115 This is new, as some totally different code for h264 was available in the previous versions of the cedarx binaries.

This looks like Allwinner reached a new low, as it would mean Allwinner purposely renamed some function from LGPL code to make it look like it was their own. However, another email on arm-netbook mailing list by a soon-to-be Allwinner’s software engineer gives some more light to what actually happened here:

I can explain the whole process in a whole detail, because I was directly involved in the process of this decision and I can tell where this is going right now:

The rename was done to fix the LGPL violations by adding a wrapper for the GPLed libraries which will be LGPLed and published. This way we have Binary<->LGPLed open source code<->GPL libraries

Next step will be to drop the whole “we ship our own SDK”-thing and move over to stream our code into the existing open source alternatives.

But until the FOSS libraries have all the functionality from the shipped SDK we can not just stop supporting our customers in China. Also we can not suddenly make it open source for the following reasons:

  • Some engineers and managers do not fully comply with the GPLing of their code yet.
  • The code has awful coding style and my armcc refuses to compile at least 2/3 of the code because of the Chinese comments.
  • Also some of the engineers obviously have never heard the term “revision control” which makes it even harder to locate the actual version of the source code from which the binary was compiled from… -.-‘

So Allwinner has not make it right just yet, but at least they are trying, and even hiring western engineers to try fixing the licensing issues. I’m just not sure the current plan for binary<->LGPL wrapper<->GPL is actually valid, but at least they have longer term plan to upstream changes to open source project, at least that’s the way to understand the email above. Beside legal and technical work, moving from closed source “license infringing” code to properly licensed code is also a social engineering task, as all stakeholders in the company and possibly their customers must be convinced proper licensing is the way to go, and not the business as usual “just copy code from the net” and ignore licensing terms as Allwinner and many other companies have done in the past.

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
29 Comments
oldest
newest
Dr. Azrael Tod
9 years ago

and that’s exactly the reason i’d prefer people wrongly using GPL-stuff to people that don’t use it at all (and doing own closed-source bullshit). Both ways leave me with closed binaries, but GPL-violating gives the community leverage to get code released. So i might get a clean system some day. As for that binaryLGPL-WrapperGPL lib: it depends on how it’s implemented. Imho if that binary-stuff is just an exchangeable part that’s not compiled together with the libs/wrapper, then it should be fine. Like you can use Gimp to draw nonfree images and read nonfree plugins. But if you compile it… Read more »

LinAdmin
LinAdmin
9 years ago

After reading these emails I remain rather sceptical about a soon solution.

ade
ade
9 years ago

@ade

I’m skeptical about the legal aspect of “Binary [__] LGPLed open source code [__] GPL librarie” if “[__]” means “link”. Indeed, IMO the GPL is “viral” i.e. if a LGPL lib links to it, it becames GPL (otherwise the whole business models of dual commercial-GPL lib would be threatened), and therefore the Binary still has to be GPL.
I think the only way to have it OK would be to avoid dynamic linking, i.e. to use IPC to a daemon in-between e.g.
“Binary [__ IPC __] GPL Daemon [__] GPL Lib”

nonshopper
nonshopper
9 years ago

@ade I think you are right. I might have to reread licenses, but out of my mind, they are not allowed to circumvent the GPL like this (I think we’d see it more often otherwise). They don’t need a license for their wrapper, but they still can’t link it with GPL code unless they license the whole with GPL, And they are not the sole owners of the whole work, so they can’t link it with binary code without getting permission from all the GPLd code authors. They possibly legally could do IPC as you said, but I don’t know… Read more »

Jon Smirl
9 years ago

I think someone is confused on the “GPL libraries” bit. You never make user space libraries GPL, no one will tolerate it. Doing that would force every single app that used the library to be GPL and that’s never going to happen. The GPL would infect up the chain – you’d have to GPL use space banking apps, CAD/CAM, video players, etc. So all user space libraries are LGPL/MIT/etc or no one will use them. Some libraries are mutli-licensed like Mozilla. Mozilla is MPL, LGPL, GPL. You get to pick which want you want. LGPL is purposely not viral so… Read more »

Someone
Someone
9 years ago

@Jon Smirl
You’re totally right: but these companies think stealing GPL code is not really a problem, because it’s free (!) and none will ever sue them.

passante
passante
9 years ago

FsF should sue them more and more, or the entire opensource movement will loose momentum.
Kickstarting a campaign to sue them will educate a lot of companies in one shot.

anon
anon
9 years ago

@passante
Sue large-ish Chinese company in China for IP violations… Good luck. :-S

rasz_pl
rasz_pl
9 years ago

@anon

not in china, sue in germany, block imports to EU

Sobtech
Sobtech
9 years ago

i will never buy a Allwinner!
Cheater! just take without cooperation with communities…

kusta
kusta
9 years ago

This is one more reminder why people should stay away from all Allwinner sh*t, worst company among SoC’s in today world.

anon
anon
9 years ago

@kusta
Not really, unfortunately pretty much all ARM SoC manufacturers do that kind of stuff, and similar stuff have happened in the past in the x86 world too, and it took years of fighting to get x86 manufacturers start to accept the copyleft license, and its usage… Remember there were more than Intel/AMD/VIA once.

And MIPS with Imagination messing about is no spring chicken either. 🙂

Alexandru Voica
Alexandru Voica
9 years ago

@anon
Could you please explain what you mean by your last comment? We have not broken any GPL rules when it comes to MIPS.

In fact, here is a chart showing our contributions to the kernel for MIPS CPUs
http://blog.imgtec.com/wp-content/uploads/2014/06/Linux-for-MIPS-Up-stream-Linux-kernel-patches.png

Thanks,
Alex.

anon
anon
9 years ago

@Alexandru Voica OK, maybe it is just a casual observation of Imagination just doing their own thing as closed source, than actually using already existing GPL’d code per se, there is nothing wrong doing it proprietary of course, as long as the resulting binary blobs are not linking with outside GPL code, but of course the bad thing about that is that those proprietary pieces never are able to be upstreamed to mainline. MIPS as a CPU is perfectly fine (used those amazing (at the time) SGI O2 and Octane2 systems back in the day), it is the proprietary IP… Read more »

Jon Smirl
9 years ago

Please don’t beat up on Allwinner for Mali or the PowerVR GPUs. Allwinner does not control the open sourcing of that code. Go beat up on ARM, Inc and Imagination Tech. This applies to all of the CPUs using these GPUs. AFAIK there are no open source choices for ARM GPUs that are available as IP blocks that Allwinner could license. The reason every one quotes for keeping the GPUs closed is that there are too many patents on GPUs and every one is violating everyone else’s patents. Opening the source would ignite huge legal wars. Also, I’ve never seen… Read more »

ade
ade
9 years ago

@Sobtech In fact, Allwinner may not be perfect but they are not _that_ bad compared to some other chipset makers (not sure Rockchip, Mediatek, Realtek, etc. are doing much better…), and at least they are trying to improve (slowly, yet better than nothing). Besides, the main problem IMO is not on Allwinner side but rather on the ODM/OEM side : try to get any board/kernel source-code for any chinese tablet / smartphone / router you’d find on Alibaba/Taobao. Good luck ! For example, even as a _customer_ ordering a few thousands routers, I had to fight really hard to get… Read more »

anon
anon
9 years ago

@ade When there is such purchase scales involved, maybe some random ODM could whip out an custom ASIC off opencores.org, the costs of custom ASIC production on anything above “current lowest node size * 4” is actually pretty decent, seen few designs (hand-made, partly by me) getting done on 90nm for under a $1k for a 150mm wafer (from MOSIS), and that was an one-off wafer only, they are ready to go down in price is someone would want more. There might even be market for FLOSS people to start actually producing their own ASICs, then they would know absolutely… Read more »

anon
anon
9 years ago

@anon
If one wonders do civilians actually do such things by themselves (and sometimes only for themselves) one cool site to get into the mindset is “copyleft hardware planet”: http://en.qi-hardware.com/planet/

Be aware that that site is one HUGE thingie that sucks out browser memory like there is no tomorrow, ARM systems with only 1GB of memory might get nice lock-ups, freezes, or reboots… You have been warned. 🙂

notzed
notzed
9 years ago

Isn’t there a clause in the GNU GPL which revokes (all? or just the applicable) GPL licenses until they are explicitly re-enabled by the authors? GNU GPL is perfectly valid for libraries and used quite often: there is a good reason the GNU LGPL was renamed to the “Lesser”, you know, decades ago. Linking GNU GPL with any proprietary code _and distributing it_ is forbidden, explicitly. It doesn’t matter how many ‘wrappers’ you go through. The system-call interface is the only real hard boundary though and anything else above that is less so and muddied with different language linking conventions… Read more »

Jon Smirl
9 years ago

All of the shared libraries on Linux are LGPL. They have to be, if they were GPL then any random app that runs on Linux would get GPL’d due to the viral infection. That would be the end of Linux if that was the case. You can GPL static user space libraries but they will be limited in their use. You can also GPL apps if you choose to. It is fine for a GPL app to use LGPL libraries. Of course Stallman wants all of the Linux shared objects to be GPL’d so that there is no more proprietary… Read more »

ade
ade
9 years ago

@Jon Smirl > “All of the shared libraries on Linux are LGPL. They have to be, if they were GPL then any random app that runs on Linux would get GPL’d due to the viral infection. That would be the end of Linux if that was the case” I disagree : some libs are GPL. This is the whole business-model of dual-licensing (GPL+commercial), remember QT before Trolltech was bough by Nokia ? Rememer YaSSL ? Remember this article from Stallman https://www.gnu.org/philosophy/why-not-lgpl.html ? However, I agree GPL is “viral”. IMO it is a bit too strong while BSD is too weak,… Read more »

Jon Smirl
9 years ago

QT is dual licensed commercial and LGPL.

Jon Smirl
9 years ago

Actually is it triple licensed like Mozilla.

http://doc.qt.io/qt-5/licensing.html

Enterprise, Professional, and Indie Mobile licenses.
Community license (GPL or LGPL versions 3 and 2.1).

anon
anon
9 years ago

Allwinner is taking it even further, now stripping symbols to make it harder to detect the source of the code: http://www.phoronix.com/scan.php?page=news_item&px=Allwinner-Stripped-Symbols

Simos
Simos
9 years ago

@anon

It’s downright silly to complain about “strip”-ing symbols. Any closed-source libraries that are distributed by companies, are stripped.
It’s standard practice and way too common. See all those GPU libraries from ARM or ImgTec. All stripped!

What happened was that Allwinner simply omitted to strip the initial version of the libraries.

anon
anon
9 years ago

@Simos
Yep, all final binaries usually strip them, and AllWinner just made an amateur mistake that made their code stealing to surface instantly, now on they will strip them always, and can get away with it longer, but of course people are constantly datamining binaries (and hopefully someone will setup big iron for that task alone sometime in the future), so more corporations will keep get caught on it in the future, it is just sad fact that there is not much the FLOSS crowd can do about it. 🙁

Money > Morale/Ethics.

sky770
sky770
8 years ago

#2:
“..that there is no non? GPL code used or called..”

Khadas VIM4 SBC