+ All Categories
Home > Documents > 5/1/2015 1 The Boost Software Process Where Standardization meets the Chaos of Open Source David...

5/1/2015 1 The Boost Software Process Where Standardization meets the Chaos of Open Source David...

Date post: 15-Dec-2015
Category:
Upload: krystal-hurry
View: 217 times
Download: 0 times
Share this document with a friend
14
03/21/22 1 The Boost Software Process Where Standardization meets the Chaos of Open Source David Abrahams, Boost Consulting
Transcript

04/18/23 1

The Boost Software Process

Where Standardization meets the Chaos of Open Source

David Abrahams, Boost Consulting

copyright 2007 David Abrahams04/18/23 2

Why We Need High-Level Libraries Less code Real productivity

Less to writeLess to debug

More expressive codeNatural to writeMore self-documentingMore likely to be correct the first time

copyright 2007 David Abrahams04/18/23 3

Standard Library Deathmatch

Python JavaC++

copyright 2007 David Abrahams04/18/23 4

Boost Is… A collection of C++ libraries that are:

Open-source Portable Peer reviewed Rigorously tested

A volunteer developer community A set of online resources:

http://www.boost.org Mailing lists / newsgroups Documentation Articles File Vault: http://www.boost-consulting.com/vault

copyright 2007 David Abrahams04/18/23 5

Boost Origins - 1998 C++ standard ratified Beman Dawes

considers the state of std::

And asks where the new libraries will come from (~2008)

OK, we’re a little late…

Beman

copyright 2007 David Abrahams04/18/23 6

Boost Goals Fill gaps in std:: Establish “existing practice” for

standard.

Develop best practices for C++ library design

Have fun building great libraries!

copyright 2007 David Abrahams04/18/23 7

Consequent Goals Adoption

Portability Licensing Testing Scrutiny Quality Documentation

Volunteer contribution Community Ownership Acknowledgement

copyright 2007 David Abrahams04/18/23 8

Committee Software Process

1. Write proposal2. Submit proposal3. Wait for it to reach committee members4. If serious, show up at next meeting5. Proposal goes through wringer6. Apply feedback7. Work on formal wording (or back to step 2)8. More meetings9. Standard is Released

copyright 2007 David Abrahams04/18/23 9

Boost Software Process1. Gauge community interest2. Apply feedback3. Show the community something4. Apply feedback5. Request formal review6. Library goes through wringer7. Apply feedback8. Integrate into Boost (or back to step 3)9. Another Boost release10. Apply feedback11. Back to step 9

copyright 2007 David Abrahams04/18/23 10

Where Are the Libraries?

Boost:

72 libraries and growing!

(10 in TR1)

83

copyright 2007 David Abrahams04/18/23 11

Why Boost Matters Free high-level libraries Cutting-edge C++ practiced here!

Generic Programming InnovationBest practices

High quality Unique peer review process Major contributor to C++ standard /

TR1 Does stuff you need!

copyright 2007 David Abrahams04/18/23 12

Which do you prefer?Imperative: Declarative:

if (line.compare(...) == 0){ std::size_t offset = ...; if (line.compare(...) == 0) offset += ...;}

"^Subject: (Re: )?(.*)"

Describes procedure Verbose Hard to maintain Temporal

Describes goal Concise Easy to maintain Timeless

copyright 2007 David Abrahams04/18/23 13

Infix Calculator Grammar In Extended Backus-Naur Form

group ::= '(' expr ')'fact ::= integer | group;term ::= fact (('*' fact) | ('/' fact))*expr ::= term (('+' term) | ('-' term))*

copyright 2007 David Abrahams04/18/23 14

group ::= '(' expr ')'fact ::= integer | group;term ::= fact (('*' fact) | ('/' fact))*expr ::= term (('+' term) | ('-' term))*

Infix Calculator Grammar In Boost.Spirit

rule<> group, fact, term, expr;

group = '(' >> expr >> ')';fact = integer | group;term = fact >> *(('*' >> fact) | ('/' >> fact));expr = term >> *(('+' >> term) | ('-' >> term));


Recommended