Library-Centric Software Design LCSD'05

workshop, on Sunday, October 16, 2005 at

Object-Oriented Programming, Systems, Languages and Applications (OOPSLA'05) conference in San Diego, California, October 16-20, 2005.

Proceedings of the workshop

The proceedings of the workshop is available here, as the techincal report 06-12 of Rensselaer Polytechnic Institute's Computer Science Department.

Registering to the workshop

The workshop is open to everyone, no position paper is required for participating. So that the organizers can accurately estimate workshop attendance, please register by sending an email to

Keynote address

The full-day workshop will begin with an invited talk by Joshua Bloch, Google Inc:

How To Design a Good API and Why it Matters

Program, papers and slides

The program of the workshop, the presented papers, and some of the slides are now available.

Birds of a Feather session

The program of the workshop consist mainly of technical presentations and position papers. Besides being a forum for presenting research in the area of software libraries, the planned activities include the identification of open questions specific to library research and the discussion of a strategic plan for establishing library research as a field. A BoF session is planned for Monday, October 17, 2005, 5 PM for these discussions. Details will be announced at the workshop.

Call for papers

Submission of extended abstracts is now closed.

Libraries are central to all major scientific, engineering, and business areas, yet the design, implementation, and use of libraries are underdeveloped arts. This workshop is one of the first steps in the process of placing all aspects of libraries on a sound technical and scientific basis through research into fundamental issues and documentation of best practices.

A software library is an organized collection of code with associated tools supporting programming in general or in specific domains, usually united by a specified set of principles and conventions. Most libraries are aimed at the use by several people and in different environments. The areas of software library research include

We invite the submission of extended abstracts on software library research, including, but not limited to, the above list of topics. The extended abstracts should address issues important to libraries as a field, i.e., describe ideas or techniques that can be reused for libraries across problem domains and/or languages; they should refrain from merely describing a particular library, no matter how novel the choice of domain. As an additional criterion, the extended abstracts are reviewed against suitability for a journal publication of the corresponding full paper.

For uniformity, authors should use the latest ACM SIGS conference style file (option 1). Submissions should be limited to 10 pages in this style.

Accepted extended abstracts will be posted on the workshop's website prior to the workshop, and collected in a proceedings published as a technical report of the Rensselaer Polytechnic Institute. Authors of selected papers will be invited to submit a full paper for a special issue of a journal, to be announced later.

Important Dates

Aug 7 - Submission of extended abstracts (extended from Jul 31)
Sep 9 - Notification of acceptance
Oct 4 - Final version posted on Workshop web pages
Oct 16 - Workshop

Submission procedure

Please submit your extended abstracts via the electronic submission system here. The submission system will re-open soon to accept submissions reflecting the new extended dead-line.


Primarily, the email address should be used for questions addressed to the organizers.

Program committee

In addition, the organizers will serve as program committee members, with Sibylle Schupp and Andrew Lumsdaine as program co-chairs.

Keynote address

The full-day workshop will begin with an invited talk by Joshua Bloch, Google Inc:

How To Design a Good API and Why it Matters
Every day around the world, software developers spend much of their time working with a variety of Application Programming Interfaces (APIs). Some are integral to the core platform, some provide access to widely distributed frameworks, and some are written in-house for use by a few developers. Nearly all programmers occasionally function as API designers, whether they know it or not. A well-designed API can be a great asset to the organization that wrote it and to all who use it. Good APIs increase the pleasure and productivity of the developers who use them, the quality of the software they produce, and ultimately, the corporate bottom line. Conversely, poorly written APIs are a constant thorn in the developer's side, and have been known to harm the bottom line to the point of bankruptcy. Given the importance of good API design, surprisingly little has been written on the subject. In this talk, I'll attempt to help you recognize good and bad APIs and I'll offer specific suggestions for writing good APIs and coping with bad ones.
Joshua Bloch is a Principal Engineer at Google and author of the Jolt Award-winning book, "Effective Java" (Addison Wesley, 2001). He is coauthor of JavaPuzzlers: Traps, Pitfalls, and Corner Cases (Addison-Wesley, 2005). He was previously a Distinguished Engineer at Sun Microsystems and a Senior Systems Designer at Transarc. Josh led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie Mellon University.


8:45-9:00 Workshop organizers Welcoming Remarks: David Musser
9:00-10:00 Keynote: Joshua Bloch, Google, Inc., USA How To Design a Good API and Why it Matters (Slides)
10:00-10:30 Break
Technical block 1 Chair: Jeremy Siek
10:30-11:00 Gabriel Dos Reis and Jaakko Järvi, Texas A&M, USA. What is Generic Programming?
11:00-11:30 Todd Veldhuizen, Indiana University, USA. Software Libraries and Their Reuse: Entropy, Kolmogorov Complexity, and Zipf's Law (Slides)
11:30-12:00 Ron Wein, Efi Fogel, Baruch Zukerman and Dan Halperin, Tel Aviv University, Israel. Advanced Programming Techniques Applied to CGAL's Arrangement Package (Slides)
12:00-12:30 Lutz Kettner, MPI, Germany. Reference Counting in Library Design---Optionally and with Union-Find Optimization
12:30-14:00 Lunch
Technical block 2 Chair: Frank Tip
14:00-14:30 Bjarne Stroustrup, Texas A&M, USA. A Rationale for Semantically Enhanced Library Languages
14:30-15:00 Mohammad Hasan, Vineet Chaoji, Saeed Salem and Mohammed Zaki, Rensselaer Polytechnic Institute, USA. DMTL: A Generic Data Mining Template Library
15:00-15:30 Marcin Zalewski and Sibylle Schupp, Chalmers University, Sweden. Changing Iterators with Confidence. A Case Study of Change Impact Analysis Applied to Conceptual Specifications
15:30-16:00 Break
Position papers 1 Chair: Andrew Lumsdaine
16:00-16:15 Antonio Cisternino, Walter Cazzola and Diego Colombo, Pisa University and IMT Lucca, Italy. Meta-Driven Library Design
16:15-16:30 Kaspar Osterbye, IT University of Copenhagen, Denmark. Framework Design Using Inner Classes---Can Languages Cope?
16:30-16:45 Nick Mitchell, Gary Sevitsky and Harini Srinivasan, IBM TJ Watson, USA. The Diary of a Datum: An Approach to Analyzing Runtime Complexity in Framework-Based Applications. (Slides)
16:45-17:00 Break
Position papers 2 Chair: David Musser
17:00-17:15 John Hunt and John D. McGregor, Clemson University, USA. A Model for Software Libraries
17:15-17:30 Robert Ramey,, USA. Making a Boost Library
17:30-17:45 Eric Niebler, Boost Consulting, USA. xpressive: Dual-Mode DSEL Library Design

Workshop goals and activities

The workshop establishes a scientific forum for presenting original research in the design, implementation, and evaluation of software libraries. Other major activities include the identification of open questions specific to library research and the discussion of a strategic plan for establishing library research as a field. The outcome of the workshop is a combination of research contributions and specific next steps for improving the infrastructure for library research.

Participants are expected to read the accepted submissions beforehand. The technical presentations, although based on the accepted papers, should not provide mere summaries of the papers. Instead, authors are encouraged to use their presentation slots (20 + 10 mins) to bring up topics for discussion.

The technical presentations are mixed with scientific and organizational discussions. The discussions aim at furthering the topics of the presentations, thus their agenda will be publicly discussed among the participants and then posted on the website of the workshop. All participants are expected to come prepared with their tentative answers or thoughts.

The full-day workshop starts with a keynote talk for the stimulation of discussion and concludes with a plenary discussion that decides the specific next steps for improving the infrastructure for library research.