paint-brush
How to Use Open Source Software: Features, Main Software Types, and Selection Adviceby@AltexSoft
769 reads
769 reads

How to Use Open Source Software: Features, Main Software Types, and Selection Advice

by AltexSoft IncJanuary 30th, 2019
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

February 1998 became one of the notable months in the software development community: The Open Source Initiative (OSI) corporation was founded and the open source label was introduced. The term represents a software development approach based on collaborative improvement and source code sharing. Prior to these events, <a href="https://blog.lizardwrangler.com/2008/01/22/january-22-1998-the-beginning-of-mozilla/" target="_blank">Netscape shared a source code</a> for its web browser, encouraging engineers worldwide to combine forces and improve the product’s newer versions.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - How to Use Open Source Software: Features, Main Software Types, and Selection Advice
AltexSoft Inc HackerNoon profile picture

February 1998 became one of the notable months in the software development community: The Open Source Initiative (OSI) corporation was founded and the open source label was introduced. The term represents a software development approach based on collaborative improvement and source code sharing. Prior to these events, Netscape shared a source code for its web browser, encouraging engineers worldwide to combine forces and improve the product’s newer versions.

Since then, employees and startuppers have been using websites like SourceForge, Tigris, and later GitHub or Bitbucket for software download, distribution, and collaborative work.

What is open source software?

Open source software (OSS) is provided under a license that allows users to access, change, and improve its source code for their purposes. The Open Source Initiative explains the features of this software type in ten succinct paragraphs.

To say it even more briefly, such software must include source code and allow distribution (even under the same name and license of an initial product) in the form of a source code as well as in compiled form. A program can be modified and used in derived works by anyone regardless of industry or project. For instance, engineers can extend a program’s functionality, fix bugs, or create a new software using parts of the source code. In the latter case, specialists can save a lot of development time. Then developers can share a product for free or sell it. But there is a limit: Developers must distribute a modified part of an open source program under the same terms and provide the source code.

Open source vs proprietary software

Open source software is the opposite of the proprietary one. Proprietary software users must sign an end-user license agreement (EULA) when they run it for the first time. Unlike open source software licenses, these agreements restrict users from sharing and modifying products.

Those using open source software with a proprietary solution must keep only the former open source. In addition, licenses prohibit users from including open source code in the proprietary solution as proprietary code.

Does open source mean free of charge?

Well, it doesn’t. That’s one of the most common misconceptions about open source software. Free means using source code for one’s own purposes while crediting the software author. Software may be available at no cost and may come with a monthly, yearly, or one-time payment (the price is usually user-based). Many vendors tend to charge for consulting and technical support instead of a software download. They may also sell exemptions to the terms under which the product is licensed or welcome product users to donate. Another monetization option for developers is to recommend solutions that complement their open source software and receive a percentage from vendors they promote.

Open source licenses

Terms of use, modification, and distribution for such software are defined in open source licenses.

The Open Source Initiative has approved more than 80 licenses among hundreds of existing ones. These approved licenses can be divided into permissive and copyleft licenses. The former allows you to use the code for any purpose, at your own risk, while acknowledging its author or contributor. Examples of permissive licenses are the MIT, Berkeley Source Distribution (BSD), BSD 3-Clause, and Apache 2.0.

The latter, the copyleft licenses, come with additional requirements to the permissive license. It entails sharing the source code for distributed binary files and doesn’t allow for placing extra restrictions on the licensee’s exercise of the license. In addition, you can’t change copyleft terms for the source code. Some of the copyleft licenses are the GNU General Public License (versions 2.0 and 3.0), GNU Lesser General Public (available in three versions: 2, 2.1, and 3), Mozilla Public License 2.0 (MPL-2.0), GNU Affero General Public License v3 (AGPL-3.0).

Benefits of using open source software

Open source licensing doesn’t involve copyright restrictions. A relative freedom of use brings advantages to such products, which lures many users. The main benefits of software with a publicly available source code are:

  • Flexibility. The software can be customized to meet specific business needs. Engineers can write more code to add an extra functionality and vice versa — delete unnecessary parts.
  • Stability. You can use this product for long-term projects with confidence because it won’t disappear from the market or become outdated if its authors stop working on it. The user community will take care of an open source software.
  • Security and reliability. Numerous people with different skill levels may work on the same software, which may lead to code inconsistency. That’s when the culture of open source is beneficial. Other developers from around the world can review, fix, and update this code. The faster code review, the more secure and reliable the software is. Authors and users improve a solution because they need it to perform well.
  • Easier evaluation. What you (or your developers) see is what you get. Full transparency of a source code allows your team to examine and evaluate a product learning about its capabilities and flaws.
  • Better support. As an OSS user, you have more ways of getting technical advice and support: from a vendor, a consultancy company specializing in this exact product, or from other users that are ready to share their experience and knowledge across forums or mailing lists.
  • Possible savings. Such products may have a download price and generally require billable customer support. But let’s keep in mind that the purchase cost for an open source software is usually lower than for a commercial one and free open source programs also exist.

In addition, junior developers or students may use the open source code to learn how to code better. There must be at least some life areas where people can learn from someone’s mistakes, right?

Types of open source software for small businesses and enterprises

A lot of solutions with open source code are available across the Internet. Software groups we describe allow for building an organization’s IT infrastructure, managing data and content across departments, app development and testing, as well as managing interaction with customers.

Operating systems

Linux operating system has various versions aka distributions that will suit users with different levels of computer literacy. The most popular Linux distributions include Ubuntu Linux, Arch Linux, Fedora, Linux Mint, Debian, and openSUSE.

FreeBSD is a free open source OS, a Unix-like operating system that’s based on Berkeley Software Distribution (BSD) Unix. It’s the most popular BSD operating system: Websites of such giants as Netflix, Hacker News, Yahoo!, and Netcraft use it.

Android is a mobile OS by Google. You can find out more about Android app development in our dedicated article.

ReactOS is a free open source operating system that’s compatible with Windows.

Web servers

Web server is a computer system that distributes data from web pages to end users over the Internet using HyperText Transfer Protocol (HTTP).

Apache HTTP Server is the most popular web server with 45 percent of websites using it as of November 2018 according to W3Techs. BuiltWith Internet services company has counted 62,624,313 live websites using Apache.

NGINX comes in second in the server popularity contest with 40.2 percent of running websites (November statistics by W3Techs), which accounts for 43,190,053 websites according to BuiltWith. The web server is released under a BSD-like license.

Two open source web servers are at the top most popular servers. Source: W3Techs

Node.js is a server-side cross-platform JavaScript environment designed for building and running network applications like web servers. Node.js is available under several licenses. In November, 0.5 percent were running on Node.js.

Apache Tomcat is used to run Java applications. To be more specific, it’s a Java servlet — a Java software component that extends a web server’s capabilities. Released under the Apache License version 2, Apache Tomcat powers 0.4 percent of websites.

Lighttpd is a web server optimized for high-performance environments. It’s released under a BSD license and is used by 0.1 percent sites.

Database systems

The capabilities of open source databases have reached the level of proprietary solutions thanks to the growing number of companies using them for large-scale projects.

The TrustRadius review platform illustrates the popularity of open source databases among companies of different size in the dedicated TrustMap chart. Results are based on satisfaction ratings and research frequency by potential buyers. The chart includes products with 10 or more reviews on their website.

Let’s talk about the popular databases with open source code.

MySQL is one of the most widely used relational embedded databases. In 2010, Oracle purchased it, so that’s the company to look for support.

PostgreSQL is an object-relational database (ORD) that supports macOS Server, most distributions of Linux, and Microsoft Windows.

MariaDB is a fork of MySQL database, so the interface for accessing data is the same as in SQL.

Apache Hive allows for quickly writing SQL-like queries to pull data from the Hadoop distributed file system (HDFS) and other compatible systems. Apache Hive can be used both as a database and data warehouse.

SQLite is a self-contained, serverless, zero-configuration, transactional database engine.

Mobile development frameworks

Ionic is a free open-source SDK (software development kit) for hybrid cross-platform mobile app development. Besides native apps, Ionic allows for building progressive web apps.

React Native is an open source framework for fast native app building with JavaScript and React (Facebook’s JavaScript library for UI development). Code written with React Native can be used for both Android and iOS.

Flutter is an open source multi-platform SDK by Google. Those who want to use Flutter must know the Dart programming language.

Xamarin is Microsoft’s tool for cross-platform mobile app development that allows engineers to share nearly 90 percent of the written code. Xamarin uses the C# programming language and is based on the .NET framework.

QA automation tools

Selenium is a suite of open source software testing automation tools. The tool supports mobile testing, numerous programming languages, operational systems, and browsers.

Watir (Web Application Testing in Ruby) is an open source Ruby library for executing simple automated tests. It works with Edge, Internet Explorer, Firefox, Chrome, and Safari. It’s also available on RubyGems.

Robot Framework is an open-source automation framework for keyword-driven testing. It can be used for web and mobile (Android and iOS) testing.

Big data analytics tools

Apache Hadoop is the most popular big data framework for the distributed processing of large volumes of data and storage for applications running in computer clusters.

Apache SAMOA (Scalable Advanced Massive Online Analysis) platform analyzes streaming data and develops ML algorithms without using distributed stream processing engines (e.g. Apache Storm or Apache Samza).

HPCC (High-Performance Computing Cluster) Systems is an open source, big data analytics platform by LexisNexis Risk Solutions.

Office software suites

Apache OpenOffice is a free office software package published under the Apache 2.0 License. Its use cases include word processing, presentations, graphics, spreadsheets, databases, etc. The suite stores data in the OpenDocument (ODF) format and is capable of reading and writing files from other common office software packages.

LibreOffice is another free open source office suite. LibreOffice users can work with text documents, databases, spreadsheets, draw flowcharts and vector graphics, create presentations, and edit formulas. The software also allows for exporting and working is different document formats, including PDF.

NeoOffice is a software suite for Mac users based on OpenOffice and LibreOffice. The suite is available in three versions, one of them — NeoOffice Viewer — is free but can’t save documents.

Content management systems (CMSs)

Content management software allows users to create, manage, edit, and publish digital content.

WordPress is a one the most popular open source CMSs for building dynamic blogs, websites, and apps based on the PHP scripting language and MySQL database system. It can be extended with more than 45,000 plugins.

Django is a platform for publishing content on the Internet and Intranet (private network for organizations). Written in Django and Python, the platform suits users with different backgrounds and skills: marketers, developers, and business leaders.

Joomla! is a free, open source CMS with the support for MySQL, MySQLi, or PostgreSQL databases. The platform gives users more control over the ways they can show web content and has thousands of templates and extensions. Specialists also note Joomla! is a good choice for developing eCommerce websites.

Joomla! in brief

Drupal is a highly scalable, free, open source CMS used by more than a million sites worldwide. Its content management features include mobile editing, editorial workflow, granular tagging, and in-place content creation.

DNN is a free, open source content management platform built on the .NET framework that doesn’t require thorough programming knowledge. DNN powers over 750,000 websites worldwide.

Enterprise resource planning (ERP) tools

ERP are comprehensive systems including numerous modules to enable information management across all of an organization’s departments.

ERPNext is an open source and “infinitely extensible” product with HR management, collaboration tools, enterprise asset management, project management, and CRM functionality. The solution is built for small and medium businesses and, particularly, for non-techies. It’s billable for more than five users when hosted online and completely free if installed on-premises.

MixERP is an open source system built on the ASP.net framework. It helps businesses manage inventory, sales, as well as the work of the HR and accounting departments. While download and use are free, the provider charges for support ($49 per issue). According to Capterra’s review, the solution lacks payroll and manufacturing management options. That’s why larger businesses will require one of the cloud or on-premises paid versions.

Apache OFBiz is a fully customizable, scalable business software suite. The package comes with out-of-the-box modules for accounting, warehousing and inventory management, as well as manufacturing and manufacturing resource planning (MRP). eCommerce companies can also use it to fulfill their needs, such as order management and CRM. Apache OFBiz is written in Java and distributed under an Apache 2.0 license. It’s free and open source.

Apache OFBiz modules with listed accounting capabilities. Source: Apache OFBiz

There is an abundance of choices for those looking for ERP tools. You can also consider Odoo, Dolibarr, Opentaps, xTuple PostBooks, Openbravo, iDempiere, or VIENNA Advantage Community Edition.

Enterprise resource planning systems combine numerous modules, each of which serve a particular purpose. You can consider separate products (e.g., accounting, HR, or CRM tools) if you’re interested in one or a few features. Let’s look closer at customer relationship management solutions.

Customer relationship management (CRM) systems

SuiteCRM is based on the SugarCRM Community Edition. The latter used to be a leader in that type of open source products. The solution is designed for businesses of various types, sizes, and industries. With SuiteCRM, users can generate invoices and quotes, maintain leads and contracts, make reports, as well as manage documents and notes. The solution even lets customers log in to track their own cases.

CiviCRM is a web-based solution with a focus on non-profit organizations. The solution features include case and contact management, contributions, communications, events, members, advocacy campaigns, peer-to-peer fundraisers, and reporting. CiviCRM is available under GNU Affero General Public License version 3.

EspoCRM is a web-based software that works best for small- and medium-sized organizations. Standard features like sales automation, email management (individual and mass mailings), or event and task planning can be expanded with purchasable extension packs. Some of the extra functions are VoIP integration and synchronization with Google Calendar and MailChimp. The vendor distributes the CRM under the GPLv3 license.

Other solutions that are worth checking out and trying are Zurmo, Fat Free CRM, Vtiger, and Oro CRM.

How to select an open source software?

There are many considerations to keep in mind. Aspects we’ll tackle should help you answer several main questions: Does this product have the needed functions? How can we extend its functionality? Is this product and its components secure? How do we use and maintain this solution? And can we afford it? Let’s begin.

Functionality and flexibility

First things first, software must have the functionality you need in your day-to-day operations. A good practice is to make a list of necessary features and compare it with a program’s capabilities. Developers usually provide a brief solution description on their website. You can find more information in FAQ sections and documentation.

Find out how the program integrates with your existing software components, what operating systems it’s compatible with. Make sure to check whether you will also need to purchase additional hardware to support the solution requirements.

The software may not have all the needed capabilities or include non-essential ones. So, it’s important to understand how to fill the functionality gap or customize a program. One option is to find another software that has the missing features. Another way is to use the benefits of open source software and extend its functionality by changing the code. No matter how this task is managed — in-house or with outsourcing — it’s crucial to evaluate whether an organization has enough time and financial resources to implement these changes.

Security

Since source code is publicly available to everyone and a single vulnerable open source component puts the whole application at risk. Test software components for security vulnerabilities.

Developers can check whether a product is safe in the National Vulnerability Database (NVD) U.S. government repository. The NVD provides databases of security checklist references, misconfigurations, security-related software weaknesses, solution names, and impact metrics.

SecurityFocus, an online computer security news portal and information security services provider, consolidates the development community with services and information sources. You can use the Bugtraq mailing list, discuss issues with other users on SecurityFocus Mailing Lists, or monitor security across platforms and services with the SecurityFocus Vulnerability database.

In addition, regularly checking a project’s bug tracker should become a daily task.

Maintenance and support

It’s also important to understand how to get maintenance and support for your software of choice. Large, open source software developers typically hire another company that consults users on a regular basis. If several companies provide customer support, do your own research on their reputation among customers and check their financial success to help select the right one. However, a software vendor that provides technical support is the software vendor of your dream.

You can create an internal maintenance team. In this case, specialists will have to find as many support forums and related sources with information about software use and maintenance as possible.

Don’t underestimate the knowledge you can get and share with a community of active users.

User community

A sufficient user community is one of the signs a software does the job. And what’s more important, such a product will remain competitive and improve with every new version release, bug report, and fix. Quality software must have an army of people with and without coding skills who will be focused on making its functionality better and providing feedback. Make sure you’ll be able to get timely advice on deployment and integration, or answers to any other questions you may have.

Specialists suggest checking out a project mailing list archive and post ing a question to the list to see how fast people respond to it.

Documentation

Professionals not only can build good software but also describe what it does, how it works, and how to use it. That’s in theory. In fact, 93 percent of users surveyed by GitHub in 2017 note that incomplete or outdated documentation is a widespread problem.

Pain points for open source software users. Source: GitHub

So, our advice is to read software documentation and evaluate whether it’s well-written and sufficient to understand solution capabilities and usage. Authors that care about their product and user community usually encourage both code- and non-code users to help make documentation clear. Developers may explain the terms of contribution and reward users for documentation requests.

Licensing

According to the previously mentioned GitHub’s 2017 Open Source survey, 64 percent of users agree that an open source license influences their decision whether to use a project or not. It’s worth clarifying that the type of license matters when a user plans to make changes to software instead of just using it.

So, you should scrutinize license conditions and be sure they work for your organization. You also have to make sure all the software licenses you use are issued under compatible licenses.

Computer scientist David A. Wheeler recommends verifying if there are any pending lawsuits against a project, evaluating the probability of their success, and assessing possible consequences. “Simply having some legal action is not necessarily an issue; widely popular OSS/FS projects and large proprietary vendors sometimes attract frivolous lawsuits. In that case, you’ll need to examine the evidence (or at least examinations by technologists of the evidence) to determine if the issue is serious,” concludes David.

Budgeting

We’re all living in the material world, so we can’t neglect such aspects as budgeting. While getting or customizing the software with a shared source code is cheaper than building it from scratch, other aspects like deployment and training require consideration.

How to estimate deployment price? Here is another tip from David A. Wheeler: To calculate total ownership cost (all expenses for deploying the software over a period of time) or as a return on investment (ROI) over a specific time period.

Remember to consider prices for the initial software license, product installation, as well as license and product upgrades. Staffing, technical support, data transition (between existing and new systems), hardware or additional software purchase should also be estimated.

Conclusion

Using open source software and components may be reasonable for organizations and businesses of all sizes. Benefits include the freedom of distribution, the ability to modify or extend software capabilities, and possible development cost savings, to name a few.

Good software is backed up by a large user community that’s motivated to keep it updated, monitor for security vulnerabilities, and constantly polish the source code. With the culture of knowledge sharing and mutual assistance, you can be sure to get professional advice and help when needed.

At the same time, quality and security of open source solutions vary greatly. That’s why it’s important to evaluate products according to your own technical requirements and standard criteria, some of which we described above.

Photo by Joel Filipe on Unsplash

Originally published at AltexSoft Tech Blog How to Use Open Source Software: Features, Main Software Types, and Selection Advice