Building libraries is an important task. The activity goes back to the earliest days of computing, when Wilkes, Wheeler, and Gill introduced subroutines as instruments for packaging useful software. Sadly, this activity lost its academic glamour and is often relegated to the boiler room of programming. It is essential that we start building libraries based on rigorous scientific foundations.
Let us define a good library. It should not be intrusive. The old code should run as is without any modifications. It should not be exclusive. Other libraries should be able to coexist alongside it. It should be orthogonal. Instead of defining similar facilities in different contexts, it should factor them out into different dimensions. It should be open and not hide useful information from the client for the sake of illusory security. It should be efficient. Using the library should not penalize the application.
Concurrent programming is a very difficult task. At the same time, the evolution of hardware makes it more and more mainstream. Although there have been major advances in our theoretical understanding of concurrency, we need to have practical libraries that encapsulate this knowledge. It is great that the Intel team led by Arch Robison made a major step designing and implementing Threading Building Blocks, which could become a basis for the concurrency dimension of the C++ standard library.
I would also like to congratulate Intel management for not just sponsoring this activity, but also releasing it as open source. I hope that they will keep funding the team so that they can further extend their work.