Intel's Threading Building Block Library

« previous entry | next entry »
Jul. 25th, 2007 | 09:50 am

Yesterday I sat through Intel's tutorial on Intel's Threading Building Blocks at OSCON.

The library looks pretty interesting, and I've been looking at the
interface and white papers to see how it was written.

Good white paper:
http://cache-www.intel.com/cd/00/00/30/11/301132_301132.pdf

The part I don't get?

Its C++.

They missed the point. Most of open source is in C. If you want
ubiquity, you write in C. You can wrap C into C++.

Or Perl, Python... but C++? Pain in the ass.

If I write something for just myself I'll use C++, but if I want
ubiquity? Its going to be C.

What would have been an even bigger leap in thought for this release?
Find a way to incorporate the library in Apache's APR or in the GNOME
libraries.

The second part that they missed?

Its GPL, not LGPL, not BSD, but GPL. They have a waiver on it, but it
would have been better to just say it was BSD.

Licenses are business models. I have a hard time believing that Intel
needs to make money off this library. The GPL creates an environment
for dual licensing. Great business model, but from listening to the
Intel speakers, this is not what they were aiming for,

They seem to be pushing for ubiquity. What is the license model for
ubiquity?

BSD. The BSD license provides for the opportunity for ubiquity.

The interfaces look good for Intel's Building Block Library, which
means there exists now examples for these algorithms that can be
followed, so this is a gain for open source.

I just wish the library would have come in a package that was a bit
more useable.

Link | Leave a comment | Add to Memories | Share

Comments {15}

Talk...

from: jeremycole
date: Jul. 25th, 2007 09:48 pm (UTC)
Link

There's talk and more talk, but where's the BSD mysys?

Reply | Thread

Brian "Krow" Aker

Re: Talk...

from: krow
date: Jul. 26th, 2007 05:09 pm (UTC)
Link

It was back in 3.20, just go use that version.

This is not under my control so...

Reply | Parent | Thread

Gristle McThornbody

(no subject)

from: craigp
date: Jul. 25th, 2007 10:13 pm (UTC)
Link

if you're wanting ubiquity, why not haskell?

btw, it's easy enough to write or auto-generate (via swig or similar) a c interface wrapper over c++ (if necessary).

Reply | Thread

Brian "Krow" Aker

(no subject)

from: krow
date: Jul. 26th, 2007 05:12 pm (UTC)
Link

Or Erlang...

Auto-generated interfaces are great for prototyping... but something multiple projects are going to use? Something where you care about performance?

I am not thinking that is a good idea...

Reply | Parent | Thread

Gristle McThornbody

(no subject)

from: craigp
date: Jul. 26th, 2007 09:00 pm (UTC)
Link

not that i've done it, but you can fine-tune the generated interfaces with swig. if the demand is there, you can always code them by hand. just with several products (eg: sleepycat), you offer bindings for several interfaces... the only difference is you create a c binding over c++ instead of the more traditional method of c++ on top of c.

at least i rarely hear folks complaining about lack of c++ compatibility anymore (kudos to the gcc folks)... the excuse is pretty much limited to "c++ is too complicated" anymore.

Reply | Parent | Thread

Companies choose licenses because of community they are targeting

from: divadanese
date: Jul. 26th, 2007 05:17 am (UTC)
Link

First let me say that I was not directly involved in the licensing decision, nor the choice of language. But here are a few thoughts that your post evoked...

Intel is very much still learning as a company about Open Source. There are individuals and groups who have a great depth of knowledge...but if I've learned one thing from hanging out at Sun and now Intel its that organizations don't really grok a new idea like catching a virus where is moves through the organization and afterward everyone has simply "got" it. Its more gradual and less systematic (and except in rare cases, its hard to save them from themselves). Several groups have to make the same mistake before everybody gets it. I'm guessing that C++ seemed like a good choice to whoever made this choice because some customer or other preferred it that way or it was what they were used to working with and that it made later more sense to Open Source it "as is" than to delay for a port. I think it would be marvelous if it were ported to C

On the question Choice of License. In my experience companies tend to think about the community they are hoping to impress or attract when they choose an open source license. Not saying Intel did this in this case (because as I've said before I didn't help choose), but they do spend a lot of time with the Linux Kernel. Those affiliations might suggest GPL with exception as a valid choice. Isn't GCC licensed under GPL?

Reply | Thread

Brian "Krow" Aker

Re: Companies choose licenses because of community they are targeting

from: krow
date: Jul. 26th, 2007 05:07 pm (UTC)
Link

GCC is GPL, but it just produces code (which is why you can generate proprietary code using it). The intel libraries you link against. Libraries you link against are a different issue in regards to license since they carry the stipulation of the license to the product that makes use of them.

From a couple of hallway conversations with Intel folks, I get the impression that releasing under the GPL was just a "go with what you know". I've had the license conversation with a couple of folks now from Intel, and I am hoping someone takes the license issue back on Monday and considers a dual license of both BSD and GPL.

Intel gets things mostly right with open source, but it seems they miss the bigger picture frequently on how users are likely to use the technology they provide (ask me sometime about your compiler).

As far as porting it to C goes, I think that is likely :)

Reply | Parent | Thread

Re: Companies choose licenses because of community they are targeting

from: dirkhohndel
date: Jul. 26th, 2007 09:14 pm (UTC)
Link

Not sure who gave you the "go with what you know" feedback - that's not how it happened.

We looked very closely at the license options. It's under "GPL with runtime exception" which allows you to use it both for open source and proprietary software. We have an FAQ about this which I can proudly say is entirely useless (ok, something I need to get fixed next week).

So why that and not BSD? Simple, we really want to build an active community where everyone contributes back to the community. GPL has worked very well for that in the past - better, actually, than BSD (and you can feel free to flame me about that comment).

If the GPL with runtime exception really stops you from using the library, please explain it to me and we will see what we can do about it.

PS: I would have responded hours ago, but I really wanted to use my OpenID (after having had dinner with the OpenID folks yesterday) and LiveJournal flat out refused. I can log in with it, but I can't submit a comment with it. How weird is that...

Reply | Parent | Thread

Brian "Krow" Aker

Re: Companies choose licenses because of community they are targeting

from: krow
date: Jul. 26th, 2007 10:23 pm (UTC)
Link

I publish software in an array of licenses, so I have at least some personal feeling as why certain licenses should be used for certain cases. The GPL does create more open source.

What I do not understand is why you would care about anything but ubiquity. Under your current license I could not use this library in conjunction with Apache, Postgres, FreeBSD, etc...

OpenID even started with LJ. So why didn't comments work from day one? I leave login required just because I don't have time to deal with spam.

Reply | Parent | Thread

Re: Companies choose licenses because of community they are targeting

from: dirkhohndel
date: Jul. 27th, 2007 03:06 pm (UTC)
Link

Of course you can use the libraries with Apache, Postgres, or in apps running on FreeBSD. I am not sure what makes you say differently.

GPL with runtime exception basically means you can use this library at runtime (i.e., link programs against it) without creating derived work that would have to be released under GPL. But if you modify the library and distribute this modified library (either on its own or as part of an app that you linked against it), then these modifications have to be licensed under the GPL as well.

I understand requiring login for comments (even though I never did that in my Wordpress blog and Akismet dealt with spam just fine) - what I don't understand why my OpenID isn't accepted as a way to log in, even though LiveJournal allegedly supports OpenID...

Reply | Parent | Thread

Brian "Krow" Aker

Re: Companies choose licenses because of community they are targeting

from: krow
date: Jul. 27th, 2007 05:50 pm (UTC)
Link

It would seem odd to embed a GPL licensed library into a BSD project which only becomes valid as being legal once executed. That just seems awkward (legal? I'd have to ask a lawyer).

Personally, and I do write BSD projects, this exception would be a pain to explain to users who use my code, and I know it is enough to turn others off from using the library. I can see the fear of MS or Apple taking the library in house and extending it, but why would you mind? It would just mean more and better multi-cpu utilization.

I suspect with LJ the issue is that they aren't really innovating as much as they once did.

Reply | Parent | Thread

Re: Companies choose licenses because of community they are targeting

from: dirkhohndel
date: Jul. 27th, 2007 07:34 pm (UTC)
Link

As Robilad said below - it's the same license as libstdg++ - so if you are developing C++ with gcc, you already have a library under the same terms, anyway. So no, I really don't understand your argument.

Reply | Parent | Thread

Brian "Krow" Aker

Re: Companies choose licenses because of community they are targeting

from: krow
date: Jul. 31st, 2007 02:58 am (UTC)
Link

Sorry it took me a few days to respond...

libstdg++ gets a free ride, it will be installed with the distribution. Linking to it is not an issue.

Your library is not distributed, which means for a project to really use it, they are going to need to ship it (which stinks, but anything else is a pain to end users who compile stuff). Telling people to get a project, and then get subprojects is annoying and I believe is the tipping point for "not worth compiling".

Now a project could include your library, but then they will have to explain that to others in the project (and probably to people who distribute the code). This requires a conversation, and conversations are.... non-starters. Plus the project has to be diligent in not copying your code.

In the end? I think someone would just stand up and say "lets just re-implement". This might just cause a thousand flowers to bloom, which in the end wouldn't be bad for Intel.

I love the GPL, and I love how it creates more open source. In the case of libraries though? I really believe in ubiquity.

Reply | Parent | Thread

robilad

Re: Companies choose licenses because of community they are targeting

from: robilad
date: Jul. 26th, 2007 09:34 pm (UTC)
Link

They chose the same license as the standard c++ library you'd link with anyway on Linux, *BSD, OS X, or anywhere else you'd use g++.

Reply | Parent | Thread

Kytty

(no subject)

from: kytty
date: Jul. 26th, 2007 04:38 pm (UTC)
Link

This post makes me crave a programming languages course.

Reply | Thread