If you haven't developed applications for SUSE Linux before, the thought of developing on a new platform might be a bit daunting. If you've developed for another version of Linux, BSD, or Unix, the transition won't be as tough as if you are coming from another platform like Windows, Macintosh, or NetWare. Certainly, there are new paradigms and methodologies to learn. However, this really isn't as tough as it sounds. Here at Novell, we've all made the change and we want to help you do the same. We think that, once you get used to application development on SUSE Linux, you'll find that you really enjoy it. Having developed on many different platforms, I can honestly say that I prefer to program on and for SUSE Linux than any other platform. And I'm not just saying that because I get paid to.
Contents |
You've probably noticed that we have a few different versions of SUSE Linux. Why all the different versions, and what are they used for? Hopefully we can shed some light on this from a developer's perspective.
At Novell, it all starts with openSUSE. openSUSE is our free, open source distribution of SUSE Linux. You can download it and use it for no charge. You are also welcome to get involved in other ways.
openSUSE is essentially our most cutting-edge Linux distribution available. You can download a more stable, released version, which is still a pretty cutting edge distribution, or there is always the development snapshot for those who like to take a ride on the wild side.
Future versions of our enterprise Linux platforms will eventually come from a selected, stable openSUSE build. By getting involved with the openSUSE project, you can start developing today for tomorrow's enterprise SUSE Linux platform.
Choose openSUSE For Development If:
Choose openSUSE For Deployment If:
Formerly known as SUSE Linux Professional, SUSE Linux is essentially a for-cost version of a stable, release version of openSUSE. SUSE Linux is a versatile, powerful Linux distribution for a variety of uses. When you pay for SUSE Linux, you are essentially paying for media, included documentation (manuals), and maintenance (upgrades).
SUSE Linux is a teenage version of openSUSE, without the raging hormones.
Choose SUSE Linux For Development or Deployment If:
When openSUSE grows up, it becomes a SUSE Linux Enterprise distribution. SUSE Linux Enterprise distributions have been through rigorous testing processes and are of enterprise quality, ready for use in even your most mission critical deployments.
We offer two different versions of SUSE Linux Enterprise - SUSE Linux Enterprise Desktop (SLED) and SUSE Linux Enterprise Server (SLES). These two distributions differ from each other only in the packages that comprise the distributions. They both come from a common codebase. This means that you can easily develop SLES applications on your SLED workstation without worrying about software incompatibilities.
Choose SUSE Linux Enterprise Desktop For Development If:
Choose SUSE Linux Enterprise Desktop For Deployment If:
Choose SUSE Linux Enterprise Server For Deployment If:
When you combine the flexibility of SUSE Linux Enterprise with the legacy and power of NetWare, you get Open Enterprise Server. Open Enterprise Server includes all of the functionality and capability that NetWare users are accustomed to, but is available atop SUSE Linux Enterprise Server so you can run your Linux applications easily. Probably the most notable of these NetWare capabilities is eDirectory, the world's most powerful and scalable LDAP directory service.
Choose Open Enterprise Server For Deployment If:
What is our recommendation? We recommend that you familiarize yourself with a few different versions of SUSE Linux. Here's an example of a wise use of these different distributions in a hypothetical company:
With a platform as versatile as SUSE Linux, you have to expect support for a variety of programming languages and applications as well. With so many language options available, how does one make a choice? We hope this page will serve as a guide for selecting the best language options for your type of application development.
For development at this level, we recommend C. This could include not only kernel modules but also other rather low-level applications that interact directly with the Linux kernel and other low-level APIs. Since Linux is written in C, and since it supports a POSIX-compliant interface which is also provided in C, this makes C the obvious choice for this type of programming.
Choose C For
Linux is commonly deployed as a workhorse machine to run all types of systems applications. Both C and C++ are good languages choices for thes types of applications. Which of these you choose will have to do with your experience, the application type, libraries to be used, etc. The POSIX libraries that come with Linux are all written in C. However, if you do prefer C++, there are several system libraries for Linux in C++, such as Boost and BloCxx.
Without getting into the details, suffice it to say that if you choose to use C++ libraries in your application, best practice recommends that the whole application should be a C++ application. While I personally have seen it work otherwise without trouble, there are some areas subject to interpretation, where the standard doesn't define proper behavior, that can be a source of trouble.
Choose C or C++ For
Choose C If
Choose C++ If
Scripting languages, great for the quick and dirty, have gained popularity as robust languages for certain types of applications on their own. No matter what type of development you do for Linux, there will come a time that you will want to do things in a script. In addition to the ability to write scripts for the bash shell, Linux also supports other scripting languages like Perl, Ruby, and Python.
Choose Bash Scripts For
Choose Perl, Python, or Ruby Scripts For
Choosing between Perl, Python, and Ruby is as much a matter of personal preference as anything. Perl's CPAN library is probably the most comprehensive, giving you a wealth of existing functionality. If you prefer to program using an IDE, you will probably want to use Eric and Python. Ruby is the newest of the three and is generating a lot of excitement. However, because it is new, it is sometimes harder to find the libraries you are looking for.
SUSE Linux makes a great web platform. Whether you want to use a mainstream application server platform like Java/J2EE, ASP.NET, or LAMP, or one of the more obscure open source platforms like Zope (Python) or Ruby on Rails, you can do it on SUSE Linux.
For both web applications and web services, we recommend either Java or PHP. Each has many pros and cons, including your own personal familiarity, the application in question, and your need to tie into or leverage other applications. Java has been widely used for years in this capacity, and several powerful open source frameworks like Struts, Turbine, Velocity, and Hibernate have emerged to help you create your applications. However, PHP is the most widely used and fastest growing web application language today, and there are many existing open source applications in PHP to choose from.
Choose Java and J2EE for Web Applications and Web Services If
Choose PHP and LAMP for Web Applications and Web Services If
Choose ASP.NET with Mono for Web Applications and Web Services If
Today, there is no technical reason why many computer users in business settings cannot use a Linux desktop to do their job. A SUSE Linux Enterprise Desktop workstation comes with everything you need to send and receive e-mail, use the Internet, and create documents, spreadsheets, and presentations. Expect to see a major shift as more and more companies start to move many of their desktop systems to Linux over the next few years.
On SUSE Linux, you can write desktop applications in almost any language you want: C, C++, Python, Java, or C#, for example. One area that has traditionally been lacking on Linux, however, has been the domain for the Visual Basic developer. Now, through our partnership with Real Software, we can offer you the ability to develop desktop applications for SUSE Linux as simply as VB was for Windows.
Real Software provides a tool called RealBasic, which uses a Basic variant very similar to VB6. In fact, independent users have found that migrating existing VB6 applications to RealBasic is faster than migrating them to VB.NET. And, RealBasic delivers a cross-platform executable that runs on SUSE Linux as well as Windows - perfect for your mixed environment where some desktops have moved to SUSE Linux Enterprise Desktop and others have remained on Windows for a time.
Choose RealBasic for Desktop Applications If
SUSE Linux includes a very powerful suite of development tools for C and C++ development from GNU. Some of these tools include:
If you are planning to develop C or C++ applications for SUSE Linux, you will definitely want to become familiar with gcc, gnu make, and gdb. We also recommend you take a serious look at the GNU autotools, especially if you believe that your software will need to run on different architectures or platforms.
The standard packaging mechanism for software packages on SUSE Linux is RPM. RPM provides a database of installed packages so you know what software is installed on your system, and which files were installed as a part of a package. It also helps you to manage dependencies between packages and greatly simplifies the installation process. Other products for SUSE Linux, like ZenWorks Linux Management and YaST, make use of RPM technology to simplify software installation and maintenance.
Whether you are writing open source software, proprietary software for sale, or enterprise software to be used only in house, we believe you will want to learn and leverage the power of RPM for your applications. Doing so will greatly simplify the installation and maintenance procedures and make your software more appealing to your audience.
Read Building Packages for Novell's Linux Products for detailed information on creating RPMs.
SUSE Linux includes a tool called Build.RPM (or sometimes just "build"). Build.RPM is used in the development and testing of RPMs to make sure they are enterprise-ready.
One of the problems in creating an RPM is that it is usually done on a workstation that does not necessarily represent the target environment for the RPM. Build.RPM helps you address this problem by attempting to rebuild and repackage your RPM in a pristine environment. This helps to make sure that your RPM includes all of the correct source code, that the build process is correct, and that you have specified all of the appropriate dependencies for your RPM.
For more information, read Beginner's Guide to Using Novell SUSE Linux's Build Utility and Using Build.rpm to Package an Open Source Project.
© 2008 Novell, Inc. All Rights Reserved.