The Apache Foundation and the World of Open Source Software

There’s no denying the continuing influence of open source software on the modern business world. Many of the most important innovations in software technology happened because of open source. Some notable examples include the ubiquitous HTTP server, Apache, the distributed computing framework, Hadoop, as well as modern NoSQL databases like Cassandra and CouchDB.

The Apache Software Foundation (ASF) remains one of the most important incubators of these kinds of applications, including the four examples mentioned above. Let’s take a closer look at its history and relevant accomplishments to inspire your own team’s development work. Maybe you will find a useful application to make your software engineering process easier?

A Rich History of supporting Software Development

The Apache Foundation grew from the team responsible for the Apache HTTP server. Development first began on that project in 1993, with many of the initial team agreeing to incorporate as a non-profit entity in 1999. As a US 501(c)(3) charitable organization, the ASF receives support and funding from a variety of individual contributors and corporate supporters.

The Foundation’s framework protects the intellectual property involved with its own development work. It also helps to limit any legal exposure for those involved in contributing to the various applications managed by the ASF. The foundation currently includes 500 members and 4,500 contributors working on a variety of projects.

ASF members are individuals who have shown a history of supporting open source principles. They get nominated and are subsequently voted upon by the existing membership. Earning ASF membership status is a feather in the cap of anyone involved in software development.

This organizational structure allows applications to be developed and supported by the ASF once they enter the public domain. In addition to the software built in-house, thousands of enterprise-level programs are distributed freely under the Apache license. The benefits the ASF provides to modern business world are essentially incalculable.

Interesting Apache Projects for Developers

Apache doesn’t only incubate and support full applications; included among the Foundation’s projects are a whole host of libraries suitable for use in a wide array of applications. Java developers looking for an ORM tool when working with relational databases need to check out Apache Cayenne. It provides a user-friendly environment for creating data models and defining business requirements with easy portability to any JDBC-compliant database.

Writing logging code is a time-consuming necessity for many software developers. Apache provides a logging framework, usable at no charge, supporting many popular languages, including Java, PHP, C++, C#, and Visual Basic. This saves software shops valuable time, allowing them to concentrate on the core parts of their applications.

Apache Subversion is used by many software development organizations for source code management and version control. It is an example of a project first developed outside Apache that entered the incubator program, and is now a top-level project at the Foundation. It is the source code program of choice for ASF projects.

Chances are excellent you use at least one application either developed at the ASF or released to the public under the open source Apache license. The Foundation and its work is a true example of what can be accomplished by the open source software community.

Keep coming back to the Betica Blog for additional insights from the world of software development. As always, thanks for reading!

Swift – the Apple Programming Language for Mobile Devices and More

Until 2014, if you wanted to write applications for Apple iOS (the iPhone or iPad), watchOS (the Apple Watch), tvOS (Apple TV), or even a macOS desktop application, the most straightforward way involved using the Xcode IDE with Objective-C as your language. This changed when Apple released a new language, known as Swift. The main advantages it brought were a relative ease of learning, improved safety, along with a more readable and concise programming style.

Let’s take a closer look at Swift to see if it makes sense to use for your team’s Apple programming projects or more.

The Genesis of Swift

The development of Swift began inside Apple in 2010, with an internal project team led by Chris Lattner. The language’s first iteration was introduced to the world at Apple’s WWDC in 2014. New versions are typically released in concert with an Xcode update – Swift 3.0 becoming available in September of 2016.

Although originally a proprietary language owned by Apple, Swift entered the open source domain under the Apache 2.0 license in 2015. This also allows developers to target Linux in addition to Apple’s array of platforms. RemObjects Software even makes the Elements compiler that lets Swift code target .NET, Android, and the Java runtime. 

Needless to say, the language is growing in popularity, as evidenced by IBM’s website allowing you to write Swift code and quickly see the resultant output. Apple themselves released an iOS app, called Swift Playgrounds, that provides an introduction to the language as well as the practice of programming. It is suitable for anyone from ages 12 to 100.

An Overview of Swift’s Features

It is difficult to go into too much depth on a programming language in a simple blog post, but here is a quick overview of some high-level features of Swift. The language syntax is similar to most other object-oriented languages (Objective-C, Java, C#, C++) with the notable absence of semicolons at the end of every line. Object notation using dots is easily understandable by any veteran software engineer.

Automatic memory management is a useful feature, greatly simplifying the coding process. Namespaces, generics, and native error handling (using a try-catch-throw block) are some of the modern language capabilities also provided by Swift. It even supports a few patterns from the functional programming world – most notably, map and filter.

In addition to memory management, a variety of compile-time features help enforce code safety. For example, your code isn’t allowed to set an object to nil; the complier throws an error in this situation. Xcode also includes a debugging console that provides a built-in interactive version of Swift.

If your team already has a few projects written in Objective-C, you are easily able to use Swift modules within the same codebase. This allows a quick migration to the new language or a mixture of both to leverage the capabilities and experience of your development staff. Finally, the compiler produces high-speed native machine code, providing fast performance to your users on any supported device.

The growing popularity of Swift, even beyond Apple’s proverbial “walled-garden,” makes it worthy of exploration if your shop is writing applications for the desktop or any type of mobile device – from wearables to smartphones. Leveraging Apple’s Swift Playgrounds iPad app or the IBM Swift Sandbox website offers an easy way to perform your own due diligence.

Stay tuned to the Betica Blog for additional dispatches from the wide world of software development. Thanks for reading!

Making Sense of Agile Metrics

Leveraging the Agile methodology offers organizations a chance to streamline their software development process; ultimately making their business more efficient. Measuring the impact of Agile on an application engineering team becomes easier with the use of metrics. The ultimate question is: what kinds of metrics offer the meaningful information and actionable insights software engineers need?

What follows is a look at some examples of useful Agile metrics and how they are able to truly make this modern methodology work for a software development shop. Perhaps your team needs to look at using them as well?

Useful Agile Metrics for Software Development

An article for Extreme Uncertainty analyzed the use of Agile metrics and offered a few insights on which ones added value to the software development process. Let’s check them out.

A Burnup Chart gives the project manager or Scrum Master a view of a project’s overall progress by displaying a graph of how many stories are completed during each iteration compared to the total number of stories in the project. This is a simple metric able to be shared with business stakeholders curious about the current status of the work.

The article author, Leon Tranter, commented on the need to fully estimate the effort of each story for the Burnup Chart to be meaningful. If that estimation hasn’t been completed, he suggests using an average for any future stories.

Metrics related to Agile Stories

Estimating the development time for stories becomes easier when using metrics aimed at tracking the work spent on these portions of a project. Story cycle time measures the period it takes for a story to go from a ready for development state to its completion. Be sure to take into account the number of resources working on a story for the most accurate view of the overall effort.

Story lead time includes the period between the creation of the story and its ultimate completion. Subtracting cycle time from lead time helps measure the effort spent in analysis.

Story count is essentially the average number of completed stories during a sprint. Once again, combining these three metrics helps to measure the efficiency of a software development team during a project. It also serves nicely when estimating the effort on future projects or sprints.

Use First Time Pass Rate to track Quality

First time pass rate is a percentage used to track the test cases that pass either system integration testing or system testing on their first try. Tranter feels this is an especially vital metric for measuring the overall maturity level of a software development team’s use of Agile. His expectation for teams familiar with Agile is a rate of 95 to 100 percent. It definitely gives teams new to the methodology a goal worth reaching.

Hopefully, this quick analysis of a few Agile metrics offered some ideas on adding them to your own team’s software process reporting. They are especially worthy of consideration for shops embracing Agile for the first time.

Keep coming back to the Betica Blog for future news, stories, and insights from the rich world of software development. As always, thanks for reading!