From The Linux Foundation
Jump to: navigation, search

This is a page describing the LSB 4.0 project, which is planned for late 2008.

Rather than a conventional project plan, it's an evolving list of things that are going on - it is a wiki page after all. Expect this page to continue to change fairly frequently early in the project, then get mostly status updates after things have firmed up. Work is tracked through a combination of bugs and wiki pages. Smaller tasks should have at least a bugzilla entry; large tasks should have their own wiki page and probably should have bugs as well. Links to those resources should appear on this page, and completed tasks should be so marked (not removed). LSB uses bugs with "blocker" entries to search on work to be done, as well as a quick way to to pull together what's in the release when writing release notes. The tracking bug for the overall LSB 4.0 release is bug 1025. You may also search for bugs by using the Target (or Target Milestone) value of 4.0.

More formal project planning is being done either through Bugzilla (as described above) or via the new Project Management pages.

Release Checklist

We're approaching the first release candidate for LSB 4.0. The following tasks need to be completed before that can be done:

  • Alter the FTP layout to accommodate elements that can be released independently of the specification release: the Linux App Checker, DTK Manager, and the LSB SDK. Status: Not done
  • Related to the above, rework our repositories. Status: Not done
  • Fix Priority 1 bugs. Bugs at priority 2 or lower should be raised to priority 1 if they must be fixed before release. In particular, these bugs deserve special mention:
  • Build the LSB SI for all architectures. This could take some time, so should be started early. As an alternative, we may decide to release this in "beta 2" form, to give us more testing time. Status: Not started
  • Finish the migration to the lsb-setup package. Status: In progress
  • Decide on the readiness of the new test suites: t2c-cpp, olver core, azov-qt3, azov-qt4, and the Cairo portion of the desktop tests. Status: Not decided
  • Decide on a lite/embedded/no-desktop profile. Status: Not done
  • Bump the versions on all packages, bundles, etc. from 3.9x to 4.0. Status: Not done
  • Integrate the signing keys into the proper places in the build process. Status: Not done

Task Status

The following tasks are on track to be delivered in LSB 4.0:

Task Priority Status Notes
Database reimports High Done Qt 4, libstdc++, X11, OpenGL. See LibraryUplifts.

Dep: Fix import tools.
Dep: Need import sanity checker.
Dep: Coordinate Qt 4 reimport with TrollTech.

Uplift of glibc High Mostly done NewGlibc. Also see LibraryUplifts for general information.
Uplift of libstdc++ High Done See LibraryUplifts for general information.
RPM Build Tool High sample implementation published This is part of the autobuilds and 4.0 release target now
ALSA High Done; still trial use Move from trial use to required - late decision. Lack of tests is somewhat of a blocker.
Add libGLU High Almost done Just need spec links and review.
Uplift of GTK+ Stack High Done See LibraryUplifts.
Dep: a part could use Cairo.
Cairo High Mostly done Adds libcairo, libpangocairo, and a few libgdk functions. Just need doc pointer. Some testing work started see CairoTesting40. Failure counts are high on various distributions, which we need to resolve before we call it done.
Add libXext extension interfaces High Mostly done Import done. Need docs or reference. No direct tests, but xts5 uses these interfaces to test other things.
LSB Crypto strategy High Done (trial use) Verdict is to do NSS for now; libraries are in, working on docs. Looking at adapting Mozilla's tests. Do we need nspr? May publish an unofficial first pass on test packaging this week (Stew, 8/20/2008).
New Sample Implementation and buildenv. High In progress All architectures except ia64 have a build now. Need more formal testing.
New LSB SI tools High Mostly done A beta version for LSB SI 3.2 is out. See LSB SI Tools Development Homepage.
ISPRAS test improvements High In progress New tests for libstdc++, all lsb-graphics libs, png, gtk, qt3, qt4 (possibly some others I missed on the call) - scheduled to publish in Sept.
Improved application test tools High Done A beta version is out. See Linux Application Checker Development Homepage.
Multi-Version Tools High Mostly done lsbcc, headers, stubs checkers should work; some details remain
Best-effort dynamic linking High Done (for 4.0) Working implementation posted for review; some issues to fix.
Java specification High Done (trial use) Spec wording and tests (such as they are) are done.
LSB Automatic Distribution Testing High Mostly done See
CGL/Embedded/No-desktop profile High Not a developer priority; can be done late (after freeze).
Plan for Google Summer of Code High Done No GSoC for LSB this year.
LSB Eclipse plugin High Mostly done A beta version is out. See LSB Eclipse Plugin Development Homepage.

The following tasks were originally planned, but won't be ready in time for LSB 4.0:

Task Priority Status Notes
Berlin Packaging API High A sample implementation was contributed. However, we're not going to meet the "shipping everywhere" criteria, so this item will have to be pushed out to next release.
Printing spec enhancements High see CUPS40
OpenGL Medium A plan exists
LSB RPM Uplift Medium
cURL Medium
MPI Medium
ncursesw Medium
Uplift qm test harness Medium
LSB DBus Medium Downgraded due to status of D-Bus in some current distros.
LSB Sane Medium (but see link) Downgraded due to absence of sane in some current distros. Also see bug 2199
Non-gcc compiler support Medium Acquired compilers. Intel just needs check for bit-rot; PGI is unknown.
Other multimedia enhancements: V4L, XVideo, PulseAudio Low See here for some important feedback.
LSB-compliant Java runtime Low De-prioritized in favor of Java spec. Incorporate JPackage for Java packaging and installation?
PAM symbol versioning Low
libxslt Low
Other X extensions Low
libxkbui, libxkbfile Low
IceGetPeerName Low
Other languages (Ruby, Mono, etc.) Low

General Planning Philosophy

As discussed in the mailing list and on the conference calls, LSB 4.0 will target the APIs available in the current major distributions: SLES 10, RHEL 5, Ubuntu 8.04 LTS (Hardy), etc.

We will need to decide what to do with APIs shipping in the next generation of distros (SLES 11, RHEL 6, and so on), and publish that in the LSB Roadmap. One possibility is to publish LSB 5.0 in 2009.


  • The following database imports are incomplete and/or incorrect and should be fixed (See LibraryUplifts):
    • Qt 4 libraries
    • libX11 and libGL libraries
    • libstdc++ (this project is already committed)
  • Work on autobuilders, autotesting, and version control system are important enablers for the 4.0 work, although not "shippables". See InfrastructureTasks.

Development Tools and Checkers

  • Improve the build tool situation (see presentation from Nov07 F2F). One suggestion is that better documentation (and tools if possible) to make including non-LSB libraries into arbitrary build systems would be very helpful. At the very least something that makes it easier to identify what needs to be added to a build system. In the proprietary world, most vendors have custom build environments, so targeting purely open-source/free-software tools will not likely help ISVs. We need a work proposal here - this is too undefined to get scheduled.
  • add a tjcat (test-journal-cat) command for concatenating tetj journals. Numbering restarts for each journal which leads to errors by certain processing tools, so a tjcat command would have to adjust this by modifying the second and subsequent file arguments to sync with the first. bug 1583
  • multi-version support for lsbcc (i.e. ability to target builds to other versions) bug 1965
  • better behavior with libtool/pkg-config bug 788
  • lsbcc no longer forcing -lpthread bug 1716
  • lsbcc support path queries (too hardwired to /opt/lsb/bin at the moment) bug 1537
  • can dynchk finally be released? bug 619
  • can archk finally be released? bug 724
  • implement to test application shell scripts bug 2015

LSB-Core Module

Core / Foundational Libraries

  • uplift glibc to 2.4. As of the LSB F2F in Nov. 2007 glibc 2.7 was the latest release, but see General Planning Philosophy above, this limits the release to 2.4. bug 1209, and subsidiary bug 1773, bug 1211
  • sync with POSIX 2008. In-ballot update to POSIX, too early for LSB to require full compliance, but most of the tech changes are actually part of glibc, already proposed for uplift.
  • can async I/O finally be added? bug 1391
  • libpam is now versioned from upstream. bug 1133. PAM also has spec issues - bug 1097
  • do we need libncursesw? or is there some better solution coming? bug 1761
  • complete work on rpc interfaces bug 1546
  • complete IP, IPv6, TCP and UDP information bug 1675
  • dbus: bug 1857. See Freedesktop dbus page
  • bzip2: bug 404
  • libpcre and libpopt have been mentioned because they rate fairly high on the Navigator statistics of used non-LSB libraries
  • libCURL: This is commonly used library for many applications. Given the level of documentation and tests, it should not be too controversial. This was being explored, but there are no resources working on it now - waiting to see if demand rises high enough for this.

ISV Requested Interfaces

  • ptrace: bug 1664. In a way this could be considered a "kernel interface"...
  • mount, umount: the system calls, not the command-line utilities. Seem to be particularly popular according to Navigator; should they go in? The standard response has been to tell people to shell out and run the command-line tool. There are also a set of interfaces dealing with mount table entries.
  • mallinfo, mallopt: bug 1768
  • dlinfo: bug 1751

Kernel interfaces

See LSB_Kernel_Interfaces.

Greg KH has expressed interest in standardizing certain interfaces into the kernel. Most likely, these will be /proc and/or /sys interfaces. It may or may not be a good idea to add a library interface in front of the raw /proc or /sys pathnames.

Notes from LSB_F2F_November_2007 meeting:

  • Other option is shim layers.
    • libhal - Not much info here; may need to get some libhal people involved to firm up a standard.
    • NUMA

ELF Section

  • DWARF 3.0 should become the reference specification for dwarf. This is a published LF standard at [1]. bug 1819
  • Thread Local Storage Debug Information: bug 992
  • ELF extensions for thread local storage: bug 993
  • Structure of call frame information: bug 994
  • Clarify DWARF 64-bit support: bug 1034

Packaging Section

LSB-C++ Module

CXX Developments lists some of the available updates in various minor version of libstdc++v6. The C++ ABI in LSB 3.x is based on the libstdc++ that comes with gcc 3.4(.3). In the 4.0 timeframe it looks like gcc 4.1.0 or higher will be the default compiler pretty much everywhere. The symbol set matching thus GCC 4.1.0 meets the planning criteria, and LSB should be uplifted to this level. Done.

Improving the import and specification in general remains a goal, but not one with a really specific target - we know we can improve here but how do you measure "got better"?

Need to continue to watch for libstdc++v7 developments, but that appears not to be an impact in LSB 4.0 timeframe.

libsigc seems to be a popular library; should it be added to the C++ module?

LSB-Desktop Module

Some of these may be for LSB 4.x instead of 4.0. Roughly in priority order but not precise...

  • Add interfaces for extensions (XextAddDisplay, XextFindDisplay, XextCreateExtension, XextRemoveDisplay, XextDestroyExtension, XextMissingExtension) to libXext. These are normally not needed directly by applications, but they're needed in order to test X extensions, and some applications use them that way). While these are old and have stable ABIs, the project team continues to feel these expose data structure that should not be exposed and are not appropriate for standardization. bug 1957.
  • libXtst, home of the XTest interfaces (to the extension) appears to be used by some key technologies, including Java runtimes and Assistive Technologies (ATs). Done
  • libpng is now versioned from upstream. bug 1435, and is missing some frequently used interfaces bug 1714
  • add libGLU: bug 1924
  • uplift OpenGL to current version: bug 707. See LibraryUplifts
  • add Cairo: bug 1858.
    • libpangocairo is a dependency that could be done after cairo is in
  • Depending on DBus (in the Core section):
    • libdbus-glib
    • libQtDbus was omitted from the Qt4 specification since the dbus prereq could not be met before.
  • uplift gtk libraries to 2.10 or later, if necessary to accomodate other features (e.g. Acessibility). Note the 2.6 gtk version was the last that did not require Cairo. Also note starting with 2.10 it appears the four packages (gtk, glib, atk, pango) are not necessarily released in lockstep any longer. See LibraryUplifts.
  • libXmu: continues to show up high on the list of used non-LSB libraries
  • libgconf seems like it should be in the ABI; programs that want to use Gconf don't really have the opportunity to bundle the library, they should use the system facility.
  • Proposed extension libraries: libXcomposite, libXdamage, libXfixes. Requested to enable functionality needed for Accessibility. Versions of these found on a current distribution: Composite 1.1, Damage 1.0, Fixes 3.0. NOTE: new information questions whether these are needed by applications. It appears a system will have a compositing manager which will be part of the window manager; there can only be one job in charge of compositing anyway. Thus, unless portable window managers seem a concern, these may end up left as "system provided" and not go into the LSB.
  • libxslt: libxml2 is already part of LSB 3.1. libxslt library will complement libxml2
  • libexpat: another popular xml foundational library.
  • libtiff and libXpm are utilities libraries in the graphics space that are commonly used.
  • C++ bindings for several desktop libs could be considered: libglibmm, libgtkmm, libgdkmm, libatkmm, libpangomm, libcairomm, libxml++
  • interface scanning turned up a new interface in libICE, IceGetPeerName, which was made public in Jan 2005 (apparently because it is used by libSM, another LSB-specified library). There are no apps known to us that use this directly, but adding it shouldn't hurt anything, either.
  • Proposed and somewhat controversial are libxkbui and libxkbfile. It is felt these are "internal" interfaces that should not be exposed to application developers. LSB does have support for Xkb in the base libX11; it appears this is is actually sufficient and at the moment this request is on hold and will not be elevated to active unless new information surfaces to support it.

LSB-Printing Module

Requirements being worked on by Printing Workgroup.

  • SANE (Scanner Access Now Easy): It is in all distros and needed to support multi-function devices, also to cover scanners with LSB-DDK-based driver packages - SANE40
  • Add CUPS HTTP/IPP interfaces: CUPS40

LSB-Multimedia Module

  • ALSA (moving from TrialUse in 3.2)
  • GStreamer
  • PulseAudio/SydneyAudio

LSB-Languages Module

  • more complete Perl, Python
    • The supported modules will be in the DB, and spec/tools need to be converted to use this (internal, not user-visible, change)
    • Embedding support? (libperl, libpython)
    • solution for compiled Python
  • Other languages, such as LsbJava, LsbMono and perhaps PHP and Ruby.

Other Proposed Libraries

  • OpenSSL (libssl, libcrypto) or other - note recent discussion on mozilla-nss (libnss3)
  • OpenMPI - has been mentioned a few times


Runtime test issues

  • eliminate the need for multiple root prompts when starting up runtime-test. (Note: this is already handled if using dtk-manager for testing, as it scripts these) bug 1959.
  • explore non-root runs of those tests which currently run as root. We believe that is now limited to the two tests which start Xvfb prior to testing, as well as systems which are modified during the first-run configuration (e.g. installation of test fonts or locales) which could either be done with a root prompt like runtime-test does, or be done at install time when the installer is already running as root. Except for runtime-test, individual tests should not need root, and runtime already handles that case via carefully crafted setuid programs. includes bug 1441, bug 1385 (both closed/fixed 01/23/08, Stew)
  • Upgrade qmtest harness? We seem to be two versions behind upstream. bug 1734. We should also build the harness from the upstream tarball (+ patches) like we do for tet, instead of having a local snapshot in bzr - it makes it harder to keep in sync with upstream. bug 711.

Open Questions

  • Do postinstall messages from individual tests still make sense? (note testkit bundle currently suppresss those but they're still in many of the packages as if they were expected to be seen). bug 1940

LSB Sample Implementation

Drop, upgrade, or re-engineer on something besides Linux From Scratch?

Current notes for the LSB SI in version 4.0 can be found at LSB_SI_4.0.

Summary: Proposed Libraries

Taken from the above, these are proposed, with rank in the LSB Navigator "most frequently used non-LSB libraries" list:

  • libgconf-2 (#6)
  • libGLU (#15) Note: this is in current development snapshots
  • libXmu (#18t), libXtst (#18t) (XTest)
  • libcairo (#23t), libpangocairo (#47t) (Cairo)
  • libdbus-glib (#27t), libdbus-1 (#37t), libQtDbus (>#100) (LSB DBus)
  • libcurl (#27t)
  • libsigc (#27t)
  • libbz2 (#32t)
  • libexpat (#32t)
  • libncursesw (#47t)
  • libxslt (#53t)
  • libhal (>#100, also libhal-storage >#100)

Not on any recent request list but small potentially fairly easy utility libraries that score high on the list of libraries used by apps:

  • libtiff (#16), libXpm (#17), libpopt (#18t), libpcre (#47t)

Another possibility is official C++ bindings for some libraries:

  • libglibmm (#37t), libgtkmm (#42t), libgdkmm (#47t), libatkmm (#58t), libpangomm (#58t), libcairomm (>#100), libxml++ (>#100)

Libraries asked for, but we don't yet know what to do with

  • something for crypto/ssl (libcrypto is #1 and libssl is #5; meanwhile libnss3 is #83t)
  • multiprocessing support - openmpi, libnuma/numactl (neither appear on apps list)

For completeness, here are the rest of the libraries in the top 80 in current Navigator Community Data, which are neither on the above list, nor demonstrably Gnome/KDE specific (LSB 4.0 does not have a target of moving up either of those stacks, which is why those were excluded, with the single exception of gconf). People may feel free to argue for these libraries being added to the above list but at the moment these libraries are not considered LSB 4.0 candidates.

  • 1-10: libSDL, libreadline
  • 11-20: libresolv
  • 21-30: libldap, libSDL_mixer
  • 31-40: libdb, libvorbisfile, libSDL_image, libXxf86vm
  • 41-50: libjack, libsndfile, liblber
  • 51-60: libpython2.5, libaspell, libXv
  • 61-70: libogg, libvorbis, libXinerama, libXp, libXrandr, libgdbm, liblcms, libnspr4, libperl
  • 71-80: libXaw, libXcursor, libXm, libtcl8.4, libvorbisenc, libesd, libgssapi_krb5, libmysqlclient, libsqlite3

Implementation Priorities

These priorities are taken from the LSB F2F November 2007 meeting, and since modified. Note that the rest of this page has seen some expansion, and so there are a number of items above not yet reflected on this list. By the April F2F at the Collaboration Summit, we should at least have some status for the high priority tasks, and at least a few should be done.

High priority tasks

Medium priority tasks

  • LSB DBus. Was listed as a high-priority item at the F2F, but some targeted distros don't have a 1.0 level so it's been moved down.
  • LSB-version-independent lsbcc (medium to high priority).
  • Add libncursesw.
  • Kernel interfaces.
  • Uplift of RPM specification.
  • Uplift of OpenGL. See LibraryUplifts
  • Add cURL.
  • Add MPI.
  • Enhance/fix Perl and Python support.
  • Uplift qmtest.

Low priority tasks

  • Enhancements to alien to support LSB packages better.
    • Could possibly write requirements and shop for volunteers.
  • LSB-version-independent test suites.
    • DTK Manager takes care of this already for us.
  • PAM symbol versioning.
  • Other multimedia work (PulseAudio, sydneyaudio, etc.)
  • Adding X extensions.
  • Adding libxkbui and libxkbfile.
  • Adding libxslt.
  • IceGetPeerName.
  • Add other languages (Ruby, Mono, etc.)