Certifying an Application to the LSB
The Linux Standard Base (LSB) aims to unify the Linux platform for software developers, and to make it easier for them to deploy and support those applications under more than one Linux distribution. There are several levels at which the tools the LSB provides can do this, from simply identifying distribution dependencies to evaluating compatibility between several popular distributions.
The ultimate level of compatibility comes from complying to the LSB specification completely. Once an application achieves this, developers can advertise their applications' compatibility with the LSB by going through a certification process. This puts the application on the Linux Foundation's official list of certified applications, and provides marketing materials for the developer to advertise their certification. Developers will most likely still have to work with individual distributions to provide support, but this process will be much easier with the assurance of LSB certification.
Some decisions need to be made beforehand, and the process of achieving compliance may take some work, but the actual certification process happens through a series of web pages that guide the applicant through the process.
Over time, the LSB has changed quite a bit. Older distributions may not be able to certify to newer versions of the LSB. As a result, it's important for application developers to choose the oldest version of the LSB you can certify to, back to version 3.0. LSB 3.0 is the version at which our compatibility guarantees start, so an application certified to LSB 3.0 should be able to run on any distribution certified to LSB 3.0, 3.1, 3.2, or 4.0 (as well as any future 4.1, 5.0, etc.).
If you have a specific set of "priority distributions" you want to target, you may want to consult the list of certified distributions for the version of the LSB those distributions have certified against.
Otherwise, choose an initial version based on a general idea of the interfaces your application uses. If your testing shows that you've moved too far back, you can always re-test against a later version. In general, desktop interfaces began to be included in 3.1, with Qt 4 becoming required in 3.2. Printing was very rudimentary before LSB 3.2. Perl and Python were included as well in 3.2.
Test Your Application
If you can build your application, you can test it.
Our testing tool for applications is called the "Linux Application Checker". It works as a web application, but it runs on your local machine, not on a server on the Internet. Download the tarball, and run the "install" script that's included. Once it's installed, run
/opt/lsb/app-checker/bin/app-checker-start.pl to start the server. The startup script will attempt to start a browser; if this fails, point a browser at port 8888 on the machine.
Once the Application Checker is running, make sure the built files for your application are available on the machine running the tests. Then click on "Application Check", and you'll see the following:
Give your application a name, and then click on "Select Application Components", which brings up this window:
You can select individual files to check, or ask the Application Checker to search for appropriate files in a directory. You can even have it check an RPM, or an installed package on the system. Once you've selected what you want to check, click on "Run the Test," and watch it go. The checker will default to testing against the latest version of the LSB available; if you want to test against an older version, click "Additional options" and choose the version you want to check.
After the tests are run, you will be taken to the results page:
At the top of the page, there will be a link where you can see all of the interfaces your application uses that are not in the LSB. Detailed information about each interface, including what components use it, what problems there are with the interface, and links to the LSB Navigator information online, will be available from that list.
If you want to see the results later, click on "Result History." You'll see a list of past results; click on the one you want.
Using this information, you can start the process of getting rid of dependencies in your code on distribution-specific features. In nearly all cases, there will be an alternative way to do what you need to do that is portable.
If you find you're using certain features not available in the LSB, and you can't make your use of those features optional, the LSB workgroup would like to know what those features are. At the top of each page of results, there is a link that allows you to upload your application's test results to the LSB Navigator. Those results will then be used by the LSB workgroup to determine what features and interfaces are important to support in a future version of the LSB. If you do not wish your name or your application's name to be publicly displayed, we can make your submission anonymous, showing us only the data we need. Please consider doing this if you can; we consider this information to be critical in deciding how to make the LSB better and more useful to more developers.
Building with the LSB SDK
Very commonly, applications built with a distribution's native tools will add dependencies on that distribution into your application that it does not need, and that may not work on other distributions. To help with this, we distribute the LSB Software Development Kit (SDK). It installs the same way as the Linux Application Checker: download a tarball, and run the "install" script it contains.
The LSB SDK works by wrapping the distribution's native compiler and setting some options to prevent distribution dependencies from being added during the build. In most cases, switching to the LSB SDK is as easy as using
/opt/lsb/bin/lsbcc as your C compiler and
/opt/lsb/bin/lsbc++ as your C++ compiler. Each build system will have its own way of specifying which compiler it will use. Many common build systems use the CC and CXX environment variables to determine the correct compiler, so adding something like:
$ CC=/opt/lsb/bin/lsbcc CXX=/opt/lsb/bin/lsbc++ ./configure ...
may do the trick.
Apply for Certification
When your certification run completes and reports that no compatibility problems with the LSB were found, you're ready to certify.
To start the certification process, choose the results you'd like to use for certification in the Application Checker. Go to the "LSB Certification" tab; the first sentence contains the link to apply for certification. After a brief description of the process, you may be asked to log in to the certification system, and to create a new company profile.
After this, you will be able to register your product:
Enter the information requested. Some of the information may be filled out for you, depending on the information you entered when preparing to test your product. Make sure everything is correct; this is how your product will appear in our register once your application passes. When everything is entered, press "Submit".
At this point, the certification system will show you a chart showing where you're at in the certification process:
When you click "Continue", you'll be asked which version of the LSB you're wanting to certify against, which architecture you want to certify at this time, and whether this is a new certification or a re-certification of an existing product (a maintenance release, for example).
Fees and Licensing
Once your initial application data has been submitted, you'll see the Trademark License Agreement, as well as the fee schedule. At first, you'll just be asked to agree to the license agreement; you won't be asked to pay any fees until after your test data has been evaluated.
To protect the meaning of the certification program, we require that the makers of certified products agree to a Trademark License Agreement regarding the use of the "LSB Certified" term and the various logos and graphics associated with certification. If you have a signed agreement already for one product, you do not need to sign the agreement again.
Certification costs a small amount to cover the costs of the Linux Foundation's engineers evaluating your certification request. It's important to check the fee schedule, as the fees can change. The Linux Foundation has waived fees for application certification in the past; in this case, when you apply, the certification engineer will mark the fees as paid once your certification request is in. If you have any issues with the fees being incorrect, you can contact us via the certification system and ask for a correction or clarification, or email email@example.com.
Finishing the Certification Request
After accepting the license agreement and seeing the fee schedule, you'll be asked to upload your data. The proper data bundle should be selected for you; decide whether you want your data to be visible via the LSB Navigator, and press "Upload." The data set will be uploaded, and your request will be complete.
You should be notified via email when the status of your request changes. You can also check on your status by going to the certification page and selecting your company's home page. All of your company's pending requests will be shown. If you have more information or questions regarding your certification, click on "Audit History" and submit a note.
It's possible that you might encounter a test result that seems to conflict with the LSB specification, and you think this result should be waived. The certification system provides a link at the top to "Reporting Problems" which will take you to a form where you can request a waiver. This will ultimately result in a bug being filed in the LSB bug tracker. From there, the LSB workgroup will evaluate it, and let you know either way.
After you've applied, you may be asked for more information; this is especially true if you have requested a waiver. Feedback can always be entered via the certification system; simply add a comment to your audit log. As you provide feedback, the certification system will notify us, and we can continue to go back and forth until the request is deemed sufficient.
Once all information has been received and evaluated to our satisfaction, and your fees (if any) are paid, you will be marked as certified on our list of certified products, and notified of your success. At that point, you can claim LSB certification for your application, and use our graphics in your advertising.