Notes to Reviewers
- Items I have questions about appear in the same color and shading as
this sentence.
- Lacking much of the history of the FSG/LSB efforts, there are areas
where I took a stab in the dark. Please be sure to review everything.
- I have also tried to make the language consistent throughout the
document. Thus, there is no "reference implementation" for the LSB, there
is only the "sample implementation".
- I have included FAQs for LSB Test Suite and LSB Reference Implementation
in this document. They don't seem to duplicate anything I could find on
the LSB.org site, but they could be extracted and merged with a separate
FAQ list if needed. Note that, if we want to use this as a single FAQ list
for now, it should be moved to a higher level in the LSB Web page
tree.
- I have used the capitalized terms "LSB Specification", "LSB Test Suite",
and "LSB Sample Implementation" because we are talking about specific
items. If this is adopted, there are other places on the LSB Web site
which will also need to be changed.
- Is there intended to be an LSB "brand", which is copyrighted by the FSG
and only for use on comformant platforms and compliant applications? I can
think of several ways to control the use of the brand so that it means
something. How do we specify when to re-certify and who does the audit of
test results?
- Vendors requested that the MIPS ABI contain an API used to return the
version number with which the system complies. This was also available as
a command, for the use of shell scripts.
- Is there a style book available which discusses the format of
application/utility names, file names, etc.
- Send more Questions. Answers are relatively easy to come by, good
questions are hard.
- Some links won't work until this is placed in its proper position on www.linuxbase.org
as they are relative links. We'll check the links at that time.
- Lastly, it takes a great deal of concentration and time to review
something like this. Thanks to all who have reviewed it!
Linux Standard Base FAQ
Last revised 5 June 2001
This "Frequently Asked Questions" (FAQ) is for the Linux Standard Base's
(LSB) written specification. This FAQ
supplements the written specification with interpretations, rationale, and
summaries of previous discussions.
Index
How To Contribute
The Linux Standard Base's (LSB) written specification is developed by a set
of volunteers. Some have more time and/or experience than others; therefore,
there is a core team for continuity and stability.
You can contribute to the LSB Specification in one of three ways:
As always, your constructive contributions are welcome and appreciated!
- Is it the "Linux Standard Base" or the "Linux Standards Base"?
It is the "Linux Standard Base". As minor a character as
"s" is, this has caused significant confusion in the open source
community. This effort is to create a standard base set of features for
application development, and is not an effort to become the base for all
open source standards.
- What is the LSB Project?
From the Linux Standard Base (LSB) Mission
Statement:
"The goal of the Linux Standard Base (LSB) is to develop and promote
a set of standards that will increase compatibility among Linux
distributions and enable software applications to run on any compliant
Linux system. In addition, the LSB will help coordinate efforts to
recruit software vendors to port and write products for Linux."
For more details, see the LSB Mission page.
- Who supports the LSB Project?
The LSB Project is supported by the Free Standards Group
(FSG)
- What is the structure of the LSB Project?
As of <date to be
determined> the structure is:
Steering Committee
- Chairman: George Kraft IV (IBM)
- Free Standards Group liaisons: Scott McNeil (VA Linux), Daniel Quinlan
(Transmeta)
Technical Sub-Committee Projects
- LSB Specification
Technical lead: Stuart Anderson (Metrolink)
- LSB Test Suite
Technical lead: Andrew Josey (The Open Group)
- LSB Sample Implementation
Technical lead: Ralf Flaxa (LST)
When and how does the leadership of the LSB Project
change?
- Isn't the LSB focused only on developing commercial
applications?
Definitely not. When the LSB environment is implemented
on a wide range of platforms, all developers will reap the benefit of
writing their application without having to handle any special cases for
any particular platform. The only benefits which may be special to
for-profit companies is that implementing the LSB Specification may
increase customer comfort levels and thus sell more platforms and
applications.
- What are contributors to the LSB Project up to?
The present focus of the LSB is to produce the initial
deliverables and get
approval from interested participants in the Linux community.
The deliverables are in three main areas:
- Creating the written specification of the LSB. This written
specification includes the generic LSB plus a processor-specific
specification for each supported processor. See: The
LSB Specification.
- Creating and validating test suites to verify that a given system
conforms to the LSB Specification and to verify that an application
complies with the LSB Specification. See: The LSB Test
Suites.
- A sample implementation which is verified to conform to the LSB
Specification. See: The LSB Sample
Implementation.
Working groups are formed and dissolved according to the
needs of the Project.
- Does the LSB Project certify platform and application
implementations?
The LSB provides a set of test suites for application
and platform implementations for the purposes of self-certification. Is this true: An application or platform may only
claim to be LSB compliant or LSB comformant, respectively, if it passes
the applicable portion of current LSB Test Suite as defined in the LSB
Test Suite documentation.
- What is the process for approving a new version of the
LSB?
Anyone already have a formal
write-up I can refer to? The folks working on the FSG standards process may
be able to give some assistance here.
- Where did the LSB come from?
The LSB is a project supported under the umbrella of the
Free Standards Group (FSG). More information is available at http://www.freestandards.org.
- Is the LSB only for Linux systems and applications?
No. It can be supported with relatively little effort on
other platforms using the UNIX operating system and work-alike variants.
It would take more work, but once a processor-specific LSB Specification is
available, there is no fundamental constraint to
supporting the LSB under most other operating systems.
- Why isn't company XYZ participating in the LSB?
Though there are many companies, organizations and
individuals participating the LSB, there are others who have not chosen to
contribute it. The LSB is an open organization, but reasons for not
participating are many and include:
- The technology base being used is different from that used in the
LSB effort.
- There are insufficient people/funds/hours in the day to do yet
another project.
- The LSB looks pretty good already, we'll just use what they come up
with.
The only way to be sure of the answer to this question
is to contact the company directly.
- Where is the LSB organization headed next?
The specification, tools and sample implementation will
continue to be enhanced to meet the growing needs for a common set of
interfaces which ensure that an LSB compliant application will run on all LSB
conformant platforms using the same microprocessor.
- Who contributes to the LSB Project?
Contributors to the LSB Project are individuals,
companies and other organizations. See the Acknowledgements Webpage (Need list of
companies, organizations and people to create this.) at the LSB Web
site.
- What is the difference between a voting and a non-voting member?
The FSG pages imply that there is
such a distinction. Does this apply to the LSB work, and, if so, what can
a voting member do that a non-voting member can not do? This seems like
quite a minefield.
- What is the LSB Specification?
The LSB Specification is a binary compatibility effort.
It specifies, in conjunction with other standards documents which it
references, the binary environment in which an LSB compliant application
executes. This is different from many computer software standards which
define only application programming interfaces (APIs). Such standards
apply only to building applications, but do not attempt to provide an
cross-platform compatibility where each compliant application's binaries
will execute without changes.
Specification of the details required to ensure that
applications run on each LSB-conformant platform of the same processor
type means that interfaces are defined at a binary level.
- Is the LSB Specification a single document?
A complete LSB Specification consists of the Generic LSB
Specification plus the LSB Specification for a particular processor.
- Who is the LSB Specification written for?
The LSB Specification is written for application
developers and platform/operating system developers. For the application
developer, it provides a set of rules which, when followed, will allow the
completed application to run on a variety of platforms. For the
platform/operating system developer it provides a minimal set of
functionality required to support all applications written to comply to
the LSB Specification.
- Where can I get a copy of the LSB Specification?
You can download copies of the current and all
previously released version of the LSB Specification at the LSB Written Specification
page.
- What languages does the LSB Specification support?
The first release of the LSB supports C and C++ only.
These are the most commonly used languages for development in UNIX and
UNIX-like system environments and the standards and specifications on
which the LSB is based use only C.
- Will the LSB Specification support other languages at a later time?
There are no specific plans to support other languages
within the LSB Specification. C and C++ are relatively well specified and
the automatic inclusion of libc.so.1 means all definitions required by the
C and C++ languages will be provided. There is no such guarantee with
other languages, such as FORTRAN or COBOL.
- Is the LSB Specification released?
Not yet. Version 0.9 of the specification is available
for public comment.
- What's expected to be in the next release of the LSB Specification?
Good question. Anyone?
The LSB effort will continue to be driven by the open
source community and invites the participation of anyone who wishes to
contribute suggestions for future releases. The chances of any particular
feature showing up in a particular release is heavily dependent on having
enough people to work on it, so it is strongly encouraged that people with
suggestions be willing and able to contribute to the creation of the
portion of the LSB Specification, test suites and sample implementation in
which they are interested. Participation in the broader area of work, such
as reviewing pre-release versions of the LSB Specification decreases the
chance that a section must be deferred to a later release.
- When is the next release?
No date has yet been set for the next release as it will
depend heavily on determining what can be included in a reasonable amount
of time. Should we set up a regular release schedule, such as major
releases on odd-numbered years, point releases in between? Or just publish
a planned schedule on the Web site?
- Why isn't processor XYZ included in the LSB?
The LSB is a cooperative effort and only supports
processors if there are volunteers who can do the work to create a new
processor-specific LSB Specification. If you want to support a processor
not already supported, see if there are already people working on this.
(How?) If not, gather up volunteers and do the
work. Since several processor-specific efforts exist, there are several
models to follow.
- What are future plans for the LSB Specification?
Need either info here or a pointer to the LSB spec
itself to do this questions.
- Why doesn't the LSB Specification include a complete set of system
management features.
System management is an area under active development at
a number of companies. Those areas where there is commonality between
various systems are generally included in the LSB Specification.
Otherwise, the Specification may include more system management features
in future releases.
- Why doesn't the LSB Specification address XYZ problem?
The LSB Specification intentionally excludes many
potential areas in order to keep it manageable. As future revisions are
released, its coverage is expected to increase.
- Why is the LSB Specification so big?
The LSB's content is driven by experience with other ABI
efforts. It is the size it is because this is the minimum feature set
required to allow most software developers to develop or port their
applications.
- Why is the LSB Specification so small?
This LSB had to provide a minimum of functionality, but
has deliberately incorporated the minimum feature set so that it is
feasible to use, and, perhaps more difficult, that it can be reviewed and
approved in a reasonable amount of time. Also, the LSB does not specify
everything from bit order to the appearance of a widget on the screen. The
Related Standards section of the LSB Specification lists quite a number of
other documents which already provide definitions required by the LSB
Specification.
- What platforms are certified as conforming with the LSB Specification?
I expect this to be one of the
most asked questions when the LSB Spec is officially announced, we need to
start on a process for this quickly.
- What applications are certified as complying to the LSB Specification?
I expect this to be one of the
other most asked questions when the LSB Spec is officially announced, we
need to start on a process for this quickly.
- How do I report defects in the Specification?
What is the mechanism for this?
For now, post them on the lsb-discuss mailing list and I'll see them. To
make double-sure I see it, I'm okay if you want to cc it directly to me,
as well--David.VomLehn@Compaq.com.
- Where do I start?
- In order to develop applications which comply with
the LSB Specification, you must be familiar with interfaces and
utilities which are normally present on UNIX, UNIX-like, Linux or
Linux-like systems. The Related Standards section of the LSB Specification lists several
sources for this type of information:
- POSIX.1
- POSIX.2
- SUS-XBD
- SUS-XCU
- SUS-XNS
- SUS-XSH
- SUS-XSH
- SVID.3
- You must also be familiar with the C or C++
programming languages since the LSB Specification and related
documentation uses the C language forms of the interfaces.
- As you develop your application, be sure to refer to
the LSB specification, and its associated documentation, and use only
the interfaces, definitions and utilities specified to be part of an
LSB conformant platform.
- When testing begins for your application, use the
lsbappchk utility as a standard part of each testing cycle. This will
ensure that no interfaces are being used which are not supported in
the LSB Specification.
- Before the product ships, be sure to notify TBD that your application complies to the LSB Specification. When your
test results have been successfully audited, you will be able to use
your Certificate of Compliance with the Linux
Standard Base in your documentation, with the application and
on sales and marketing materials. Who does auditing, or do we do it at
all?
- Ship your product. If you ship your product initially
without a completed audit of the compliance tests, you will not be
able to use the Certificate of Compliance with
the Linux Standard Base. You will be able to obtain and use the
Certificate of Compliance with the Linux
Standard Base even if your product is already shipping.
For more details see TBD.
- How do I port my application to an LSB Specification conformant system?
Porting your application to an LSB conformant platform
is very similar to porting to any other platform, with one key difference.
The lsbappchk utility can be used as soon as your application compiles and
links to see which, if any, interfaces or definitions are being used which
are not part of the LSB Specification. As these issues are addressed, be sure to
refer to the LSB Specification to ensure no new non-LSB compliant features
are being used and use lsbappchk throughout your testing cycles.
- Why can't I link statically with library ABC from Jane User? Why can't I
link dynamically with library XYZ from Joe User (no relation)?
You can, provided the following guidelines are
followed:
- When linked with libraries ABC or XYZ, the only undefined symbols left
must be
those defined in the LSB Specification. This can be verified by using
the lsbappchk utility (Is this the correct
utility?) on your application.
- In addition, dynamic library XYZ must be installed by your application or be
supplied by software which your application states is
required. Note that the packaging file format specified in the current
LSB Specification does not provide a means to detect missing package
dependencies. This functionality must be provided in your installation
scripts and is dependent on the packages on which your application
relies.
- I need to use the xyz() function from a library which is not part of the
LSB specification--how can I do this?
You may choose to statically link that library at application link time
using the command:
cc -o myapp ???
If a dynamically linkable version of the library is
available, you can include it with your application. If you install it in
a non-standard location, be sure to add its location in your LD_LIBRARY_PATH equivalent.
- Do I have to use the GNU C compiler, gcc?
No. However, whether you use gcc or another compiler,
the output must conform to the LSB Specification.
- How do I use the LSB-supported SGML/XML framework?
Good question. XML is not presently
part of this.
- I don't seem to be using the shared libraries in /lib, what libraries am
I using?
In order to ensure that LSB-compliant applications run
as expected, even in the face of changes in the standard libraries, a new
library directory was created for their use. This directory is /lib/lsb.
On some systems, these may be implemented as links to their /lib
equivalents.
- Are any products recommended by the LSB Specification?
No, the LSB Specification is independent of any version
of any software product. It may refer to a specific compiler but only
as a reference implementation, not as recommendation of that compiler.
- Can I use interfaces not specified in the LSB Specification?
Yes, but your application will no longer be LSB
compliant.
- Why doesn't an LSB-compliant executable use the standard program
interpreter, /lib/ld-linux.so.1?
LSB-compliant executables use /lib/lsb/ld-lsb.so.1 as
the program interpreter because it allows a way to support LSB-specific
behavior without affecting any other applications. This is still unsettled, it must be checked before release
of the FAQ.
- Why are internationalization (I18N) issues not covered in the LSB
Specification?
There is another project handling I18N issues under the
FSG, the Free Standards
Group Linux Internationalization (Li18nux) Initiative.
The Linux Standard Base has established a multi-phase packaging task
force. The Lowest Common Denominator
(LCD) Packaging FAQ can be found in a separate document.
- Where do I start?
- In order to develop platforms which conform to
the LSB Specification, you must be familiar with interfaces and
utilities which are normally present on UNIX, UNIX-like, Linux or
Linux-like systems. The Related Standards section of the LSB Specification lists several
sources for this type of information:
- POSIX.1
- POSIX.2
- SUS-XBD
- SUS-XCU
- SUS-XNS
- SUS-XSH
- SUS-XSH
- SVID.3
- You must also be familiar with the C or C++
programming languages since the LSB Specification and related
documentation uses the C language forms of the interfaces.
- As you develop your platform, be sure to refer to
the LSB specification, and its associated documentation, and provide all
of the interfaces, definitions and utilities specified to be part of an
LSB conformant platform.
- When testing begins for your platform, use the
lsbdevchk, lsblibchk and lsbhdrchk utilities as a standard part of each testing cycle. This will
ensure that every interfaces required LSB Specification is supplied.
- Before the product ships, be sure to notify TBD that your platform conforms to the LSB Specification. When your
test results have been successfully audited, you will be able to use
your Certificate of Compliance with the Linux
Standard Base in your documentation, with the application and
on sales and marketing materials. Who does auditing, or do we do it at
all?
- Ship your product. If you ship your product initially
without a completed audit of the compliance tests, you will not be
able to use the Certificate of Compliance with
the Linux Standard Base. You will be able to obtain and use the
Certificate of Compliance with the Linux
Standard Base even if your product is already shipping.
For more details see TBD.
- Must I start with a standard Linux distribution?
This is probably an easier starting point than a
different operating system, but it is not
required.
- Can I supply interfaces not specified in the LSB Specification?
Yes, and you will probably need to in the area of system
management.
- Can I link libraries in /lib/lsb to my libraries in /lib.
Yes, so long as the libraries in /lib provide all of the
functionality detailed in the LSB Specification and do not change their
behavior from that detailed in the LSB Specification.
- Can I link /lib/lsb/ld-lsb.so.1 to /lib/ld-linux.so.1?
Yes, so long as all the functionality of
/lib/lsd/ld-lsb.so.1 is provided and no other work is done to change the
execution of a program.
There is much more to be done here.
- What is included in the LSB Test Suites?
The LSB Test Suites include:
- lsbappchk
- lsbdevchk
- lsblibchk
- lsbhdrchk
Are these names right and is the list complete?
- In detail, what does lsbappchk do?
Lsbappchk is meant to be used in your build process
where you would normally use the C compiler command, which would usually
be "cc" (or "gcc"?). It takes the same flags as the C compiler but instead
of producing compiled and/or linked code, it checks that the binary files
it produces comply with the LSB Specification.
- In detail, what does lsbdevchk do?
Need info.
- In detail, what does lsblibchk do?
Need info.
- In detail, what does lsbhdrchk do?
Need info.
- How do I report defects in the tests?
What is the mechanism for this?
- Where can I get a copy of the test suites?
The test suite bundles are available on SourceForge at
the LSB test
suites page.
What other tests are there? What other topics belong
here?
- What is the LSB Sample Implementation?
The LSB Sample Implementation is a complete, working,
Linux system containing the interfaces defined in the LSB Specification.
This is a wild guess, more work needed for this
entire section.
- Where can I get the Sample Implementation?
TBD.
- If the LSB Specification says that something should work one way, while
it works a different way with the Sample Implementation, how do I tell
which way is correct?
The LSB Specification is the ultimate authority on the
correct behavior of an LSB conformant system. You should not depend upon a
behavior in the Sample Implementation which is not in accordance with that
given by the Specification.
- Are there interfaces available in the LSB Sample Implementation which
are not defined in the LSB?
Yes. The LSB Specification does not cover all of the
interfaces required for system administration. The LSB Sample
Implementation includes enough of the system administration interfaces to
make it a functioning Linux system.
- The LSB Sample Implementation has a bug, where can I report it?
TBD.
-
Why not use one of the standard Linux distributions?
Since the LSB Project provides the Sample Implementation, its
release dates and contents can be assured to coincide with each new release of the
LSB Specification and LSB Test Suites. It also avoids the overhead of multiple packages
which will not contribute to its intended purpose.
I am sure there are many other topics
to cover here, but this is to get an idea of the coverage.
Questions Not Yet Categorized
None, at present. The reason for this section is that I can
drop question here even while I'm trying to decide whether it goes in an
existing section or needs a new section. This will not be present when a final
draft is ready.
See the LSB's written specification for more
detailed and finite definitions.
|