CppCast - Boost 2.0

Episode Date: May 13, 2015

Rob and Jason are joined by Robert Ramey to talk about the future of the Boost C++ Libraries. Robert Ramey is a freelance Software Developer living in Santa Barbara, California. His long and v...aried career spans various aspects of software development including business data processing, product, embedded systems, custom software, and C++ library development. Lately, he has been mostly interested in C++ library design and implementation related to Boost. He is the author and maintainer of the Boost Serialization library and Boost library incubator News Boost XP Support Breaking changes in Visual C++ Examples of Best Practices for C++ 11/14 Libraries Robert Ramey Robert Ramey Software Development Links Boost 2.0 session at C++Now! Boost Library Incubator Sponsors

Transcript
Discussion (0)
Starting point is 00:00:00 This episode of CppCast is sponsored by JetBrains, maker of excellent C++ developer tools. Listen in for a special discount code later this episode. And by CppCon, the annual week-long face-to-face gathering for the entire C++ community. The call for CppCon 2015 submissions is now open with a deadline of May 22nd. Episode 11 of CppCast with guest Robert Ramey recorded May 10th, 2015. In this episode we discuss Boost support of Windows XP. Then we'll interview Robert Ramey, author of the Boost Serialization Library. Robert will discuss his vision of Boost 2.0 podcast for C++ developers by C++ developers.
Starting point is 00:01:29 I'm your host, Rob Irving, joined by my co-host, Jason Turner. How are you doing today, Jason? Doing great, Rob. How are you doing? Doing great. Doing pretty good. I know we have some exciting times ahead of us. You're heading out to C++ now tomorrow, right? I am. I drive out tomorrow afternoon. And fortunately for me, it's a much closer venue than a lot of the people who are attending from Europe. But yeah, it's a great drive into the mountains for us.
Starting point is 00:01:53 Yeah, so I look forward to hearing about all the sessions you get to attend next week. Very cool. So at the top of every episode, I like to read a piece of feedback. This week, Paul writes in, Hi, thanks for creating this podcast and congrats on the 8 plus episodes. I think it would be great if you could invite someone who can talk
Starting point is 00:02:12 about compilers. Some suggestions for discussion topics would be are there some bad habits of programmers that prevent compilers from optimizing? Is there some undefined behavior compiler writers do not dare to exploit but are tempted to? And would it be possible having a setting to trade off compilation time versus quality of the produced code,
Starting point is 00:02:36 much like FFmpeg can encode video with user-selectable choice of encoding time versus encoded quality and size? And that comes in from Paul. I would definitely love to have a compiler author on the show. I know we're talking to Jim Radigan from the Microsoft Visual C++ team, who I believe is involved with the compiler end of MSVC. But it'd be great to have someone familiar with Clang or GCC on as well. So it's definitely good feedback, and we'll see if we can get some compiler authors on the show.
Starting point is 00:03:09 So thanks for the feedback, Paul, and we'd love to hear your thoughts about the show as well. So you can always email us at feedback at cppcast.com. So joining us today is Robert Ramey. Robert is a freelance software developer living in Santa Barbara, California. His long and varied career spans various aspects of software development, including business data processing, product embedded systems, custom software, and C++ library development. Lately, he has been mostly interested in C++ library design and implementation related to Boost. He is the author and maintainer of the Boost Serialization Library and Boost Library Incubator. Robert, how are you doing?
Starting point is 00:03:47 Fine, thank you very much. Thanks for having me. It's great to have you on the show. So before we get into the interview, I just wanted to talk about a few pieces of news. The first one is actually just a discussion post on the Boost, guess this came from the boost forums and it's about windows xp support on boost and whether you know the boost community is going to continue supporting windows xp now robert i know you're highly involved in boost uh do you have any thoughts on this is boost going to continue caring about Windows XP? I have to say, I think the question is not really relevant.
Starting point is 00:04:30 Because when we write a library, we really... Boost requires that it compile with the latest C++ standard. Beyond that, it's had no specific requirements and indeed some libraries won't
Starting point is 00:04:47 compile with some compilers so now the question of something like the particular operating system if you've if you're using no operating system at all you still might be using a boost library or whatever right uh it's really it's really a question of the language and not the operating system. Now, having said that, there are a couple libraries, threading, file library, which would relate to or would be relevant to which operating system one is using. But even those, generally speaking, when they improve an operating system, they don't deprecate the old stuff. So I just don't imagine that us trying to make a decision whether we should support XP or not support XP has really been an issue, and it can just be left up to the individual library author, and nobody really even has to think about it.
Starting point is 00:05:41 Well, I guess one of the concerns is that, you know, as Boost moves forward and starts using C++11, that, you know, there's no version of the Microsoft, you know, C++ compiler that can target XP using C++11 is my understanding. Correct, but Boost distributes source code, not compiled code. So at that point, it's the person who uses the Boost code on his compiler, and he wants to generate XP code. Well, he's going to have to find a way to do it, but if he can do it with his own code, he can do it with Boost code. So it's not really something that boost has to think about in general. That's interesting.
Starting point is 00:06:29 Jason, do you have any thoughts on this one? Well, I mean, I'm for boost moving forward. So if there was effort made to continue to support XP and that was holding boost back, then I would be in support of dropping XP. But if what Robert's saying, then it doesn't really sound like there would be. Right. When one writes a library, we strive for portability.
Starting point is 00:06:55 We use boost config. It's got a bunch of flags in it to avoid certain compiler features that don't work on all compilers or whatever. Same with the operating system. But there's only a few libraries which I think are dependent or coupled to the operating system itself. So for the most of us, it's frankly just not an issue. We distribute the source code and people compile it,
Starting point is 00:07:17 and it doesn't matter. If you've got the problem, you haven't got it just with Boost, you've got it with all your stuff. So it's really a separate issue and it's not related to Boost at all, in my view. Interesting. So the next article is on MSDN, and this is about breaking changes in Visual C++ related to the version that just came out, Visual Studio 2015 RC. And I'm not going to go too deep into this,
Starting point is 00:07:46 but it's basically a list of known issues that you might run into when moving from Visual Studio 2013 to 2015 if you're using the MSVC compiler. So it's definitely worth looking at so you can kind of be forewarned that you might run into some various compile issues. But there's definitely a few too many things here for me to really go through everything. Jason, did you take a look at this at all?
Starting point is 00:08:16 I did. I did. that has annoyed me about Visual C++, which is the fact that they allow you to pass a temporary value to a function taking a non-const reference, is not deprecated, which that's just surprised me, anyhow. Yeah, it's something GCC and Clang are always going to complain about, which is one of the benefits of using multiple compilers.
Starting point is 00:08:46 I'm not sure why Visual Studio wouldn't complain about that one, though. I did learn if you turn the warning levels all the way up to warning level 4, then it'll warn you that you're doing something that's not in the standard. But anyhow. Well, for me, it's not a problem. Because I
Starting point is 00:09:01 use CLang, I use GCC, I make the whole thing work, and even between GCC and CLang, I use GCC, I make the whole thing work. And even between GCC and CLang, there's quirks. And then I'll compile it on Microsoft, and anything that bails, I'll just fix it or work around or include a fix or whatever. And so as a practical matter, I start with something that's as close to the standard as I can. And then when I run it against something else, then I'll just make some tweaks. It's a practical matter. I start with something that's as close to the standard as I can. And then when I run it, it gets something else. Then I'll just make some tweaks. It's a workaround for me.
Starting point is 00:09:30 And it's not part of my – I don't design. I looked at the length of that list. It's daunting. There's no way I'm going to remember C++ and all these extra rules. I mean, I can't even remember C++, really. So what I do is I'll program to C++, make it work, compile it in Microsoft, and anything that bails or doesn't work right, I'll just work around it or whatever. Yeah, that's fair. So the next article was examples of best practices for C++ 11 and 14 libraries. And this is a list of a couple
Starting point is 00:10:08 libraries from Neal Douglas. And he's actually going to be presenting about these at his talk at C++ Now next week. So it's just an overview of a couple libraries that he thinks are great examples of 11 and 14. Robert, did you take a look at this one at all? You know, I just skimmed it. Yeah, it's a big article. And it nails a big contributor to the mailing list and always has lots of ideas. And I wasn't really sure what this talk was going to – I got a couple different impressions of what the talk was going to be.
Starting point is 00:10:56 But now that I see this abstract, I mean, I don't really have much to say. I don't know that much about those particular libraries because I think they're all in the proposal stage. And so, honestly speaking, I don't have a lot to say about that. Okay. There's actually a couple libraries in here that we've talked about recently on the show. Roland Box SQL++11 is here, which I did not realize that he was submitting to Boost, but it's on this list, so I guess
Starting point is 00:11:18 he is. And there's also Fit and Tick from Paul Foltz II, who was on the show a couple weeks ago. I think he was episode 4 or 5. So that's cool to see those guys here on this list. And they'll be in Neil's talk next week.
Starting point is 00:11:34 I guess those are listed as not submitted yet at the moment. Right, but I guess they're planning on submitting it. It looks that way. It does. Well, I can tell you Fit and Tick are right now in the Boost Library incubator. Okay. So if you go there, you can pop up the documentation and take a look at it.
Starting point is 00:11:54 And the Rollins Library, I pitched him to put it there, but he didn't have the documentation ready at the time. Okay. So that's the status on that from my perspective. Okay. Well, let's get started talking to you, Robert. So you're going to be speaking at C++ Now about Boost 2.0. Can we talk about what your background is with Boost and how long you've been contributing?
Starting point is 00:12:20 Well, I've been contributing to Boost more or less since 2003. I'm the author of the Boost serialization library and maintain it as well. Just from the feedback I get, I know it's pretty widely used. And it's also, frankly, taught me pretty much all I know about C++ and template metaprogramming and all the little stuff you have to deal with to do something that is, let's call it a large-ish component of that nature. And then I'm also a frequent contributor to the list, and I've also been promoting certain changes in the way we do things,
Starting point is 00:13:01 and part of that has been the the preparation of the boost library incubator to and to address what I feel is a problem that we have is not having enough reviews for to get libraries into boost so that's the kind of thing that I've been working on and this session I gave a session a couple years ago about the review system and last year about the Boost Library Incubator. And this year, I'm basically going to propose a series of relatively modest changes in the way Boost functions in order to prepare it for what I see is the next decade. Okay. Do you want to tell us about what some of those proposals you're suggesting are? Well, I'll give you a short thing. The fundamental viewpoint here is that Boost has been a huge success. And pretty much, it's almost driven itself out of business. It's a victim of
Starting point is 00:13:59 its own success. So the question is, what now? Well, we could be fiddling with the same stuff forever and become more and more irrelevant as we get older. Or we could really think about what we're doing. And I like to see Boost basically improve, refocus its mission a little bit, promote more libraries. But I wouldn't expect, I don't think the standard can take all that many more libraries but i wouldn't expect i don't think the standard can take all that many more libraries and i also don't feel that it's necessary there's lots of ideas for libraries like big numbers and uh you know money and uh certain kinds of file formats and all sorts of stuff that people use that one would not want to put in the standard. We want to continue to promote and improve the quality of code.
Starting point is 00:14:50 We want to continue. I mean, I learned C++ and how to do it and type constraints and template program through C++. We want to keep diffusing that kind of knowledge so that more people can make better contributions. And that's really what we're trying, what we want to do. And in order to do this, it's going to require changes in things like some changes in the way we develop libraries, some changes in the way we review libraries. We've got to get improved documentation. We've got to get serious about that. That's a big, big problem in my particular view. We're going to have to boost, can't really continue to be, in my view, can't be really distributed as a large monolithic package. It's already too
Starting point is 00:15:40 difficult to get everything in sync. There's a lot of stuff in there that we don't want to throw away, but a lot of users don't need. All the stuff that's gone into the standard library really should be available, but it doesn't really have to be in the standard package that gets distributed. So that opens up the whole possibility of how should Boost be deployed. If it can't be deployed as one giant thing, well, then maybe we'll have sub-packages or maybe there'll be boost math or maybe there'll be boost C++11.
Starting point is 00:16:13 I don't know. But right now, it's a monolithic procedure and it has to be broken up somewhat. We have to deal with the issue about, what about library deprecation? Some stuff is really not interested to be distributed anymore, and we don't really have a mechanism. And even just mentioning that word is going to open up a big can of worms. So I have a method which I think can address that issue to everyone's satisfaction.
Starting point is 00:16:41 Boost needs better economic support. We really kind of dropped the ball on this. We're kind of scraping by. We could do a lot better. And I have some significant proposals for that. And our website is just all over the place. It's kind of grown incrementally and never changed. And it doesn't really support all the changes that I think I want to make. So we have to find a way to get that upgraded. So that's the thrust of my understanding or my view of where Boost is today. And we want to make improvements, and we have to find a way to make those improvements happen.
Starting point is 00:17:22 And I have proposals for all of this. With wanting to get boost you know more economically supported i know the c++ now conference is basically you know comes from the boost community does that help you raise any funds at all or is it just not enough it's um it it's uh it's kind of a different issue actually um c++ now has been able to support itself pretty well. The thing I'm really – because it's got good sponsors and people like to go and it's a fun thing and a lot of good – that's actually not a problem. The thing that I'm really more concerned about is specifically library maintenance. We get libraries and people who are in love with their own stuff are willing to make an effort to make a great library. But on the other hand, we don't feel it's fair
Starting point is 00:18:14 that it turns into a life sentence. And on the other hand, the library maintenance, without the library maintenance, when new compilers come out and all the bugs appear etc etc there's no real way to recognize or help out the authors who continue to invest in this effort and i i'm i'm going to reveal this now because i know this interview is after my talk anyway so i'm going to propose that we promote the idea of uh allowing companies and talking to companies that make use of Boost libraries so that they can get some bucks a month, we wouldn't have any difficulty getting people to make libraries or maintain them. And, you know, they could easily do that, and it would be just a small portion of what they actually would pay if they had to do it themselves.
Starting point is 00:19:21 So, on the other hand, we're really not set up for that. And we have, we got a lot of problems as far as organizing ourselves in that way. But I do think that there's, we have real value here, which can be exploited and just worked a little bit better way. So that's a specific idea. And that's more of an example of the, the ideas that I have are along on the other areas are very similar in that they're not revolutionary. They're really taking what we have and finding a way to make somewhat better use of it in order to promote our new mission. That's in a nutshell.
Starting point is 00:19:56 That's a great idea. And I mean, another, I'm not sure if this is your line of thinking, but letting those companies put an ad for themselves on the Boost website could be a great way for them to get some value out of Boost. Well, let me give you a really great example. In the Boost library incubator, I have a library that I've been picking at and I'm still working on called the Safe numeric library and this is basically it's a drop-in replacement for the standard integer types except that when you use it uh if you if it doesn't overflow uh or results in a negative an invalid number which can happen in c++ it will trap with with a trap usually with an interrupt or something like that so So you will write your program, and if in any time it generates an invalid value, it will trap, and then you can handle it, and you won't have a situation where you have now where the program just keeps going on forever with that invalid number.
Starting point is 00:20:59 And that's actually been the result of a couple disastrous failures in the hundreds of millions of dollars things like that now we got the f-35 fighter jet which is like five years behind uh schedule and i guess 100 billion dollars behind budget or whatever gosh you know would that something like that not be useful to them and wouldn't they wouldn't they be happy to contribute 500 bucks a month for something like that sure so you know uh you got the whole secure coding scheme which some companies are required to fulfill which means basically not using c++ this would implement all that for for free it would they why shouldn't they pay something to that wouldn't they be happy to do it if they were pitched about it right? That's kind of my way of looking at it. Okay. So your talk is going
Starting point is 00:21:51 to be on Tuesday, the first full day of the conference. And there's another session at the end of the conference called the Future of Boost. Do your session and this Future of Boost session tie together in any way? Well, I mean, I don't know. The future boost is not a presentation. There's been no abstract presented above it. As a matter of fact, no speakers announced. So I'm guessing that what will happen is I'll make this presentation Tuesday. Other people are making presentations along similar lines. There's one about CMake, and there's one about Git,
Starting point is 00:22:25 and there's one about a couple others. And then there's some boost working sessions as well where people who actually do the work are going to talk about the release management setup, the library maintenance. And so I believe, and I know that in my talk, I have a feeling that the attendance is going to be pretty good.
Starting point is 00:22:45 I also got a lot of people already bugging me, you know, that they want an opportunity to participate in the conference with their own ideas, which, you know, like I said, I told them, hold it off. You'll get that opportunity in the future of Boost. So I'm expecting that everybody who wants to stick his fingers in this topic will then show up there, and they'll have a forum to get it off their chest. Okay. That'll be exciting to hear what comes out of that session. Well, it might be just a huge argument. As a matter of fact, it probably will be. That's what we do.
Starting point is 00:23:19 Jason, you wanted to ask one of your questions? Oh, I was just, well, I was also curious a minute ago to clarify your proposal on, excuse me, if you're proposing that funds coming into Boost might go directly to the library writers, not just to support the organization itself? Ah, now that's very interesting, because there has been complaints or ideas that the Boost steering committee doesn't do anything. They don't actually steer anything. They don't really take a decision and direct people to do stuff. That's exactly correct.
Starting point is 00:23:57 And in my view, that's exactly right. Boost has been successful because it basically doesn't do anything what it does is people come to boost and they say i want to add my library i make up the the the library incubator and i say look i want you guys to endorse this uh people come up with a tool they say i want to put this in but the the boost itself basically just vetoes the stuff that's like really boneheaded and it's it's a whole different way it's not like the government it's not like the catholic church nothing happens at the top it's it's more like the the free market it's more like it's more like uh al-qaeda you know everybody's doing their own thing it's's just, you know, if you want to compare Boost to something like a large organization, it's the wrong way to look at it.
Starting point is 00:24:49 It's more like barely managed chaos. And just by keeping out all the crap, it makes the stuff look like it's been really organized, which is totally not true. That's the appeal of it. You guys could sit there. I got a great idea. You write it up. You don't have to get permission from anybody. You get it in there and sell some people on it, and all of a sudden you're a Boost library author.
Starting point is 00:25:09 That's how it works. Okay. And so that's in line with my view for the economic. Basically, if there's economic support, I would say it should boost itself. How's enough money from the conference for the Boost infrastructure? All they need is the economic support would go directly from the companies directly to the Boost author. And Boost itself, I'm not sure what it would do, either maybe the accounting or some legal BS. I don't know.
Starting point is 00:25:36 From an accounting perspective, it could be helpful to have someone orchestrating that, but that's a very interesting proposal. Well, as I say, the whole idea of Boost is it's from bottom up. It's not top down. You have to think of everything in terms of that way, or it's not going to be Boost. And that's how we've gotten as far as we've gotten. Okay. So far, you seem to be talking mostly about the structure of the Boost project itself,
Starting point is 00:26:00 how new libraries come in, how they're maintained. I was wondering if you're planning to address at all the code. As a longtime user of Boost myself, I see that there's probably still a lot of code in Boost that uses, for example, Boost.pp for variadic functions instead of using variadic templates from C++11. And that's the kind of thing that I would like to see personally get cleaned up. And I was just wondering if you're planning to address that kind of thing at all. I'm not going to, I mean, I'd be happy to talk about that, but I'm not addressing my talk at all. The main reason is I'm talking about something else.
Starting point is 00:26:40 Right. And there's plenty of people and it happens on the mailing list and all that. There's no shortage of people willing to talk about that stuff, but there is a shortage of people willing to talk about what I'm going to talk about. So I'm doing the stuff that nobody else wants to do because that way I get a big audience. I want to interrupt this discussion for just a minute to talk about this special offer that JetBrains has made for CppCast listeners. JetBrains makes some awesome tools for C++ developers in any environment. There's the ReSharper C++ plugin for Visual Studio developers, AppCode if you're working on iOS or OSX apps, or their new cross-platform C++ IDE, CLion, which runs on Linux,
Starting point is 00:27:23 Windows, and OSX. JetBrains is offering a coupon code, which can be used to get a personal license to any of those tools for 25% off. The code is cppcast jetbrains cpptool. All one word, just enter the code during checkout where it prompts you for the discount code. Again, that's cppCast, JetBrains, CppTool, which will get you 25% off any of JetBrains C++ tools, CLion, AppCode, or ReSharper C++. I was told this coupon will expire by May 17th, which is just a few days away,
Starting point is 00:28:00 so this will be your last chance to make use of this special discount from JetBrains. Don't let it go to waste. Well, let's talk a little bit about the Boost Library Incubator. You've mentioned that a couple times. Could you tell us about the goals of the library incubator? Basically, the Boost Library Incubator is to give people who are interested in making a Boost Library all the information they need in order to be successful at it while wasting the minimum amount of time possible. I included in this basically a summary of what Boost requirements are. I included a place where anybody who wants to can submit their library and they can get feedback on it from other people who were looking there. And I gave my, I have my own personal pages of advice for documentation, how to go about it, all that stuff.
Starting point is 00:28:59 And that's pretty much it. The motivation for me is when I made the serialization library, I probably went through like 25 versions. I spent a lot of time doing stuff that I didn't have to do. And a lot of stuff that I did have to do, I didn't do it when I should have done it. Then I had to do it later. And if I had had this when I made the Boost serialization library, then I could have done it in, well, half the time. So that's my motivation. I want to make it easier for people to make libraries, and I want it to contribute to the review process to make the review process work better. It's those two goals.
Starting point is 00:29:40 You mentioned documentation there again, and that was one of the things you talked about, there being a major lack of documentation amongst Boost. Do you think that's one of the major problems with new users adopting Boost, just not finding enough documentation? Well, the documentation with Boost is all over the place. Some of it is really, really, really good. I mean, some of it is just, as I say, the Phoenix and the Spirit is really good. The iterator library is excellent. There's a bunch of others that are also really good.
Starting point is 00:30:15 Other ones, I mean, I just bang my head against the wall. I just can't figure the damn thing out. I end up pouring through the source code. And it's a real problem so uh i think and then there's another huge issue is that people do not know really how to document template parameters and you really kind of i didn't know this when i did it and i I had a huge to-do with David Abrahams about it. And finally, no thanks to the help I was given, I figured out actually how to do it. And I put in a special section on how to do that. And so people don't know how to do it.
Starting point is 00:30:56 I want to help people learn how to do it. And I also want to encourage reviewers to insist upon better documentation and also in particular template parameter requirements. The problem really is that programmers don't like to do the documentation. They do it as an afterthought. No, we don't. And I believe that, in fact, that's not the way to do it. And if you do it as you go in smaller pieces while you're doing the code, it makes your code better and it's much less painful but so i've got a whole shtick on that which of which i haven't really been very successful in convincing anybody else but you
Starting point is 00:31:34 know that's not a problem for me can you give an example i mean i i agree with you that documenting template parameters is hard and i have not personally come up with a good way of doing it, but I was wondering if you could give an example as to what you think is a good way? Well, in the Boost Library Incubator, I do have a section called Advice, and then in there is Documentation, and then there's a section which is Type Requirements. is type requirements. Now, type requirements is my word for C++ concepts. And C++ concepts are basically just type requirements. And basically, it just describes what that parameter, what has to be valid C++ code for that parameter. And the best source I found besides the Boost Library Incubator, and there's pointers to other places, the canonical explanation for that is in the SGI STL library. And there's a section in there that describes how to do it and what it means. And then there's what I wrote, which is my way of doing it, which is the same way. It's just that I tried to make it clear that the standard is totally
Starting point is 00:32:51 impenetrable, even though it's there. And also C++, CPP reference has some examples on where they use concepts to describe. They call it concepts. I forget what they call it, but it's the same thing. They do describe template parameters in terms of what operations are legal on the types. So the information's there, but it's not intuitive. And there's another big problem in that people like to use Doxygen for making documentation. And Doxygen, as far as I can tell, has no way to document a template parameter. I think it does, actually. T-param. Well, you know, that's interesting.
Starting point is 00:33:34 I looked at it, couldn't find it. And that will be interesting. I'll have to check on that. And then I'll update my advice if necessary. But anyway, you touched on another interesting subject. I wrote these advice pages, and each one of them can be commented on. So if you were to look up there and then check it out and then note that it correct me on that, that would be really interesting for me to know.
Starting point is 00:34:00 And I see the Boost Library Incubator and all these pages, they're all commentable by anybody who reads them. So I like to see the information kind of develop or the help that people need grow as we go along. But that's a very interesting thing, Docs. I didn't know they had that. Yeah, I did just verify it, but I think I've only used it briefly myself. And I also found it fascinating that you brought up that the SGI STL documentation has some guidance on how to document template parameters. Because I'm thinking to myself, like, I know those documents are old, but I'm not entirely sure how old they are. And it looks like the copyright is 1994. So it's a question people have been asking for a while, it seems like.
Starting point is 00:34:46 Well, it's still correct. And the thing is, I say the real problem is, and I talk to people, they think they know about it. And it's not a problem. And my view is, no, they haven't got it right. And the original SGI documents, they did that exactly right. And it's still kind of obtuse. and you have to spend some time figuring it out but that's the correct way and the only way it can really be done so uh the and i struggle a lot with that now i got it fixed in my brain i don't have a problem with it but other people have been dismissing it as as not being a big deal and it's tedious anyway and blah blah blah and anybody can always look at the code, and et cetera, et cetera, et cetera.
Starting point is 00:35:28 And that's why we end up with a number of libraries that are just totally indecipherable to the human brain. So bringing it back to the Boost Library Incubator, do you have any success stories of new libraries that came out of the incubator? Well, there are two libraries that were submitted to, at least two, that were submitted to the library incubator, which subsequently were reviewed and have been accepted into Boost. I don't think that they've been deployed yet,
Starting point is 00:35:58 because when your library gets accepted, then there's a few tick marks, there's a few things you're asked to change and whatever but one of them is a uh an extension or enhancement to the boost pre-processor library or or a beefed up version of that by edward diener and another one is boost compute which is uh really interesting and this is a C++ wrapper around the, shoot, I forget the name of it, the OpenGL, OpenCL, that lets one, gives a better, more abstract way of using the graphics core processor
Starting point is 00:36:40 on your computer for doing regular math work. And that went through the Boost review. It was considered very good, and now it's accepted. It's still in the incubator. All I did was just change its status to accept it into Boost. Very cool. Both of those sound pretty interesting. I've used Boost PP a bit, and it's kind of difficult for me to wrap my mind around exactly how to use
Starting point is 00:37:06 it but i have put it to good use and i'm kind of fascinated by the idea that there's a large enhancement to it or significant enhancement to it that's been approved well there you go you know the boost process pp is basically when all else fails right and uh you know i know it is like it's like it's like a gymnasium for your brain no question about it but sometimes that's that's all you've got and uh i've used it and i looked at edward's library and man i didn't want to go there but other people did and so that was fine there's by the way there's a number of interesting uh libraries there that uh i think they're all interesting and i'll give you another
Starting point is 00:37:45 interesting tidbit. Whenever I find somebody with code or whatever, and I think it's interesting, or it meets the library incubator requirements, I pitch them to include, to make the submission to the Boost library incubator. And many times they that and uh but if when i'm looking around at code i probably see maybe out of a thousand libraries there's only one that that meets the basic requirements and the the basic requirements are it it should more or less look like a boost library that's not a problem it should have, and it should have documentation. And, you know, I can't find enough libraries that meet those three requirements. Those are the only ones I found. And so there you go.
Starting point is 00:38:35 That's where the source of our trouble is. Those are some pretty basic requirements, I would agree. You'd think so, but there you go. Well, having said that, I mean, if people are working in a company, how much time are they going to be allowed to spend a week writing a document for it? No, they're already on to the next project because that's another fiasco that they have to fix. So, as a practical matter, their time isn't allotted for it. That's why I suggest doing it on the slide little by little as you go along. Right.
Starting point is 00:39:09 Well, Robert, is there anything else you want to talk about, about what you're going to discuss during your session at C++ Now? Well, you're talking in the future tense, but I think that this interview will come out after I've given the talk. Right. So, you know, I can, nothing comes up to mind that I haven't described already. And so nothing specific comes to my mind. Okay. Well, where can people find more information about you and you know your work online well um i'm the if you just google my name comes out of the top so uh i've got
Starting point is 00:39:58 a website www.rrsd.com and uh i'm also uh the Boost Libraries and also the Light Boost Library Incubator. And if you look for any of those things, if you look for Google Serialization Library, you'll get a couple pages there. And I'm involved in most of them. So there you go. Okay. Well, thank you so much for coming on the show, Robert. Well, it's been my pleasure.
Starting point is 00:40:27 I love to talk about my stuff. Thank you, Robert. Thank you. Thanks so much for listening as we chat about C++. I'd love to hear what you think of the podcast. Please let me know if we're discussing the stuff you're interested in or if you have a suggestion for a topic. I'd love to hear that also. You can email all your thoughts to feedback at cppcast.com.
Starting point is 00:40:47 I'd also appreciate if you can follow CppCast on Twitter and like CppCast on Facebook. And of course, you can find all that info and the show notes on the podcast website at cppcast.com. Theme music for this episode is provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.