CodeCraft Oy has expertise for using open source components as a part of commercial solutions. We have knowledge about commonly used server-side components, their licensing and open-source communities.
The goal for using open source components is usually cost reduction and reliability. Open source components are not usually dependent of a single vendor, which reduces risks. Most popular components are usually of very high quality, and have active developer communities.
With closed source components there has traditionally been the risk of the vendor discontinuing the development. If the component is an essential part of the software, usually the only solution may be to replace the component, and this may be in some cases either very expensive or borderline impossible. With open source components the availability of the source code changes the situation; further development of the essential component can be arranged either internally or by subcontracting.
Open source software comes with its own set of challenges. Commercial support may not be available, user guides and other documentation may be missing, and the future of the software may lie with the activity of the developer community. In some cases, in order to get the full benefits of the open source, the user is required to actively participate in the development.
The question of licensing is closely related to open source software. In our view, licensing of open source components is no different from licensing of commercial components. The licensing terms should always be inspected carefully, and the suitability of the component should be decided on case-by-case basis. Breaking of open source licensing terms is not without risk. Breaking licensing terms can lead to the license becoming void, and thus returning the software to its original status under copyright law. This means that the copyright owner can sue the license term breaker for copyright infringement. Examples of this can be found from GPL violations community web pages.
There is a large number of open source licenses, but the most common licenses (Apache, GPL, LGPL, MIT, CDDL, EPL) have fairly clear terms of use. Some licenses, for example GPL, require publication of derivatives, and this requirement may also affect the software to which the component is integrated. These kinds of terms typically prevent the use of a component as a part of closed source software. Most library components are however licensed with more liberal licenses allowing commercial use, or a license may have exception clauses.
In recent times, the use of double- or triple-licenses has increased. These licenses can be either open source licenses, commercial licenses or hybrid licenses. In practice the author of the software defines the list of allowed licenses, and the user (typically the developer using the component) selects one license, and the terms of this license are applied to the software. For example, Mozilla foundation uses triple-licensing for their software.
Another common model especially with software products is to release both an open source community version, and a commercially supported version. This requires that a company or community owns the copyright to the closed segment of the software, or has obtained an agreement from all copyright holders to alter the licensing. For example Trolltech has used this model with the QT-toolkit. Retroactively changing the license for already published versions is, however, not possible..
Open source systems are commonly associated to personal computers and servers. Home routers and DVB-boxes are increasingly using open source software.
There are multiple open source operating systems. For example Linux, OpenSolaris and FreeBSD are all commonly used, and their differences are mainly related to licensing. Most of the open source operating systems are based on UNIX.
All our developers have access to multiple operating systems in their own workstation. In order to accomplish this, we use multi-boot and virtual machine solutions. In our view, the skill of developing software using any possible operating system is very important especially in the future. For example, the developer SDKs for the new mobile platforms have varying operating system support. Mobile Linux SDKs require a Linux workstation, iPhone SDK requires a Mac OS X workstation and Symbian and Windows Mobile SDKs require a Windows workstation.
Nowadays almost all commonly used software types have an open source equivalent. Open source components typically work on multiple platforms, which makes it possible to use the same software on multiple platforms and eases porting of software from one operating system to another.
Our internal goal is that all our document formats and internal applications are usable on all operating systems (Windows, Mac OS X, Linux). In practise, this goal is easiest to achieve by using open source solutions.Open source office software has been under active development for year. Compatibility between open source and closed office software has improved, but is still not foolproof. Editing the same document using two different applications is still a bit problematic, but we hope that the situation will improve as portable document formats become more commonly used.
Open source development tools are very popular, and in some cases have very high effective market share (for example Eclipse). They are commonly used for proprietary software development. Many high profile companies, such as Google, IBM, and Sun Microsystems, publish development tools under open source license.
Nowadays almost all commonly used software types have an open source equivalent. Open source components typically work on multiple platforms, which makes it possible to use the same software on multiple platforms and eases porting of software from one operating system to another.
The integrated development environment produced by Eclipse project acts as a foundation for many specialised development environments, such as UML modellers, load testing environments, mobile development tool chains and so forth. Some of these environments are published under open source license (such as Eclipse itself), others are proprietary (such as Nokia Carbide development environment).
The Apache project publishes many commonly used open source development tools. For example the Apache Ant build tool is a very commonly used tool, and it has been bundled with most proprietary development tools, too.
Licensing is not the same kind of problem with developer tools as with software components and operating systems. Open source licenses only govern the source code of the tools themselves, not the code that is produced using them. However, there are special cases, such as parser generators, which fall into the grey area and thus require more attention to tool license policy.