Wednesday, December 31, 2014

Significant Software Development Developments of 2014

One of my favorite posts to write each year is the year-ending summary of some of the developments in the world of software development that I have read about or observed during that year. As with any opinionated posts, these are significant developments from my perspective and may be more or less significant to others than they are to me. I'll undoubtedly completely miss some significant events in the world of software development during 2014 as well.

10. Docker (and Containers in General)

Docker, described as "an open platform for developers and sysadmins to build, ship, and run distributed applications," seems to be gaining significant attention in 2014 after being open sourced in 2013 and version 1.0 being released in 2014. Docker has several major partners now including IBM, VMware, OpenStack, and RedHat. Although Docker has been typically seen as a container for flavors of Linux, Microsoft announced in late 2014 that "developers and organizations that want to create container applications using Docker will be able to use either Windows Server or Linux with the same growing Docker ecosystem of users, applications and tools." Docker has been called the first true DevOps tool and Docker might be seen as the representative of the general class of containers that are becoming very popular.

9. DevOps

I had considered lumping Docker and other containers into this DevOps category, but decided that containers (and Docker in particular) were big enough news in 2014 to leave as a separate item. However, their success in 2014 definitely contributes to the growth of DevOps in 2014. I still find that DevOps means different things to different people, but there is no arguing that the term is frequently discussed in 2014. The sheer number of conferences associated with it attest to its popularity. These conferences include Mountain West DevOps 2014, DevOps track at Agile2014, DevOps Summit 2014, and DevOps Days.

The rise of tools that many consider "DevOps tools" has also been significant in 2014. Tools such as Docker, Chef, and Puppet are widely popular this year.

8. C++14

It was announced in late summer of 2014 that C++14 has been approved. Someone who only read the most popular software development blogs might wonder why a new C++ standard matters, but anyone with a broader view of the software development industry understands that C++ is one of the most widely used programming languages on the planet. A brief summary of the new features of C++14 is available in the post "C++14 is done -- here's what's new."

O'Reilly's publication of Scott Meyer's Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 in November provides more evidence of a big year for C++. If this 300+ page book is any significant fraction as insightful as the classics Effective C++ and More Effective C++, it will be an important book for modern C++ developers.

7. Java 8

Java 8 brought arguably the most significant changes to Java since J2SE 5. Java 8 brought some of the most desirable features of trendier programming languages into one of the most commonly used programming languages.

Java 8 is not the only big news in Java and the JVM. Martijn Verburg has written The Java Ecosystem – My top 5 highlights of 2014.

6. Apple's Swift Programming Language

Until 2014, most of us thought of Objective-C when we thought about native language development for Apple devices. Apple introduced Swift in 2014, which it has described as modern, safe, expressive, and high performing. Perhaps as important as any of these characteristics is that Swift can run alongside Objective-C on Cocoa and Cocoa Touch.

5. AngularJS

AngularJS made my "Honorable Mention" list in last year's version of this post and its popularity increased even more in 2014. It seems to be mentioned as often as jQuery in discussions on web development. It is jQuery that made (and still makes) JavaScript development bearable for many of us and it will be interesting to see if AngularJS has the same type of long-range effect on web development (moving more development to HTML built-in and extension tags and away from JavaScript). There seems to be a lot of potential for this already popular framework with the coming of AngularJS 2.0, Web Components, and ECMAScript 6 (ES6). Google is introducing AtScript with AngularJS 2.0 as a "new superset JavaScript runtime type system."

4. Cloud Computing

Barb Darrow opens Yup, 2014 was a big year in cloud with this statement: "2014 was the year in which both Microsoft and Google got serious about their public cloud options and taking on Amazon Web Services directly with their own Infrastructure as a Service and associated services." Office 365, other Microsoft offerings, and Google offerings are bringing the cloud to an ever increasing number of individuals, organizations, and businesses.

In 2014: The year the cloud killed the datacenter, Jason Perlow writes:

In the last year, competing public and private Cloud providers have tremendously upped the ante in terms of lowering their costs and also improving the feature sets of their services. ... In 2013, for the enterprise, the low hanging fruit for Cloud was all about tackling Development and Test workloads which could take advantage of Self-Service provisioning and also de-provisioning. In 2014 for CxOs it was all about investigating, piloting and actively moving production workloads into the Cloud.

3. Technical Dysfunction and Outages

2014 saw continuation of the technical dysfunction that landed high on my list last year. There were high-profile cloud outages, security incidents (get their own #1 item below), software update problems (such as iOS 8 on iPhones and August 2014 Windows update) and other problems with consumer-focused software (such as inability to submit bar exams and the RepricerExpress/Amazon.com issue).

2. Open Sourcing of .NET Core and Freely Available Visual Studio Community Edition

In the post .NET Core is Open Source, Immo Landwerth writes, ".NET Core will be open source, including the runtime as well as the framework libraries." He also explains that ".NET Core is a modular development stack that is the foundation of all future .NET platforms" and "the new .NET Core stack will be entirely open sourced on GitHub." Earlier in 2014, it was announced that the C# compiler was being open sourced.

Scott Guthrie's blog post Announcing Open Source of .NET Core Framework, .NET Core Distribution for Linux/OSX, and Free Visual Studio Community Edition talks about the .NET Core open sourcing and also mentions Microsoft's intentions to support it on Linux and OS X. Guthrie also introduces Visual Studio Community 2013 edition and states that it "is a full-featured IDE" that is "completely free" for developers in one of several categories (individual developers, developers contributing to open source, academic, non-enterprise development with team of 5 or fewer developers).

Microsoft is not one of the first companies one thinks of when one thinks "open source" and these announcements have even been called "shocker." Patrick Hynds's Microsoft developers are no longer isolated provides a thorough overview of the market forces that led to this announcement from Microsoft and an explanation of why this policy change could mean "another decade of that language (and maybe even that framework) remaining relevant."

1. Software Security

In my post on last year's most significant software development developments, my top two developments were the categories of "technical dynsfunction" and "security." The high profile cases that made these major factors in 2013 were matched by more high profile cases in 2014. The year 2014 was the year of both Heartbleed and Shellshock. I found the pieces The Internet Is Broken, and Shellshock Is Just the Start of Our Woes and How Heartbleed Broke the Internet — And Why It Can Happen Again to be insightful (and scary) looks at how these respective bugs were introduced and not found earlier. It could easily happen to many other software development teams and projects.

Rick Delgado states, "These recent attacks beg the question as to whether the worst is behind us, or still ahead." His opinion is, "Unfortunately, it seems to be the later."

"Software Security" was already my #1 item for this list and everything in this #1 description above this sentence was already written when news of the Sony hack came to light. The rest of this section is on the Sony hack and only further cements "Software Security" as my #1 development in software development in 2014.

The Sony hack has been expensive in terms of money, reputations, and earning potential. It has also embarrassed many people, become an international incident, and impacted free speech in the United States. In addition, its spawned conspiracy theories, allegations against North Korea, and arguments that it was a Sony insider. It also is likely a sign of what's to come.

In one of the articles I cited earlier on cloud's huge 2014, that article's author pointed out that "data security concerns remain the biggest inhibitor to cloud adoption."

Honorable Mention

I've never been able to squeeze all the significant developments in software development in a given calendar year into ten items. This year is no different and this "Honorable Mention" section allows me to list items that I considered for the top ten, but ultimately, for me, did not bump any of the items in the top ten.

SQL Reminds Us of Its Dominance

Nearly eight years ago, Steve Yegge wrote in his post The Next Big Language that rule #1 for making sure a new programming language "stands a chance" is to create it with a "C-like syntax." A similar post on creating the next big database might say the same thing for a SQL-like syntax being rule #1. In my professional career, I've obviously worked with relational databases, but I have also worked with object-oriented and XML databases. In all cases (not just relational), SQL or a SQL-like syntax was introduced to the products I used in an attempt to gain marketshare that the relational databases enjoyed.

We're seeing the same thing with the NoSQL databases today, making the name "NoSQL" even more imprecise. One of the things that appealed to me about Cassandra when I first started using it was it's SQL-like Cassandra Query Language (CQL) (and cqlsh environment). CouchBase has announced N1QL (pronounced "nickel") as its "next generation query language" and the N1QL Language Reference describes it relative to SQL: "N1QL builds on the SQL language and includes many of SQL's features in addition to features associated with document-oriented databases."

Although relational databases in particular and database of all sorts in general have adopted SQL, the Structured Query Language has impacted software development outside of databases as well. XQuery brings SQL-like semantics to XML, JMS selectors are often described SQL-like, JMS expression syntax "is based on a subset of the SQL92 conditional expression syntax" (Java EE 6 Tutorial on JMS Message Selectors), and introductions to Java SE 8 streams and aggregate operations often use SQL as part of their explanations.

Legal Changes Regarding Software Patents

At least in the United States, there is some evidence that software patents may be increasingly difficult to obtain and defend. Timothy B. Lee writes in "The patent office is rejecting a lot more software patents" that a recent Supreme Court decision (PDF) is "causing the patent office to reject a lot more patents on 'business methods,' a category of software patent that is notorious for its high litigation rate."

Reactive Manifesto 2.0

We seem to like to use common phrases in software development. For example, "xxxxxxx considered harmful" has become very popular for a variety of allegedly harmful software development practices since Edsger Dijkstra's 1968 letter Go To Statement Considered Harmful.

In a similar vein, manifestos have become popular in software development. The manifesto has been used outside of software development well before there was such a thing as software development. Karl Marx (who is unrelated to me as far as I know) is well-known for his contributions to the Communist Manifesto.

The Agile Manifesto has popularized the manifesto approach in software development. Other software development related manifestos include Manifesto for Async Software Development, Manifesto for Software Craftsmanship, the funny (but somewhat true) Manifesto for Half-Arsed Agile Software Development and Manifesto for Realistic Software Development, proposed DevOps Manifesto, Rugged Manifesto, Software Design Manifesto, The Gobbledygook Manifesto, Manifesto for Minimalist Software Engineers (Minifesto), Software Architecture Manifesto, SOA Manifesto, GNU Manifesto, and even the Anti Agile Manifesto.

The Reactive Manifesto asserts that "reactive systems" are "more flexible, loosely-coupled and scalable" and therefore are "easier to develop and amenable to change." The Reactive Manifesto also states that reactive systems are responsive, resilient, elastic, and message driven. Version 2 of the Reactive Manifesto was published in September 2014. Differences in version 2 are discussed in Martin Thompson Discusses the Reactive Manifesto 2.0 and Reactive Manifesto 2.0. Other interesting posts on the Reactive Manifesto include Thoughts on The Reactive Manifesto, The reactive manifesto is 'not even wrong', and A Response to the Reactive Manifesto.

Chrome Dropping NPAPI Plugins

It was announced in a September 2013 blog post Saying Goodbye to Our Old Friend NPAPI (Netscape Plugin Application Programming Interface) that the Chrome web browser would "block webpage-instantiated NPAPI plug-ins by default on the Stable channel" starting in January 2014. The November 2014 blog post The Final Countdown for NPAPI announced that the whitelist allowing the most commonly used NPAPI-based plugins (Silverlight, Google Talk, Java, Facebook, Unity, Google Earth) to still work would be removed in January 2015. A "NPAPI deprecation: developer guide" with additional information regarding Chrome's deprecation of NPAPI has been provided.

The post "Soon-to-be-banned Chrome browser plug-ins get reprieve" explains that plugins making use of NPAPI are encouraged to move to Google's own Pepper Plugin API (part of Native Client). There are some implementations available already, such as Flash.

There are very mixed reactions to this news. Some focus on the positive aspects, including the argument that dropping NPAPI moves things towards being safer and "more mobile friendly." Others argue that they don't need Google being Big Brother and making it impossible to use plugins even at the consumer's own risk. Another argument is that the alternatives to NPAPI are not mature enough or sufficient to justify complete abandonment of NPAPI and that Google's Pepper Plugin API is insufficient for using popular plugins that are said to work with it. It does seem to make things more difficult for the web developer who needs characteristics that have made plugins more attractive than HTML5 if that developer needs to write his or her application differently for each browser because they cannot agree on their native client technology.

Internet of Things

The Internet of Things was on my list last year and remains a major concept in the software development community that has spread to the general populace as consumers have purchased connected devices.

HTML5

HTML5 continues to gain market share thanks to the ubiquity of the web and of mobile devices.

OpenStack Moving to the Enterprise

The reasons why OpenStack is more appealing for use in the enterprise are covered in OpenStack is becoming more cohesive.

systemd (Linux)

The introduction of systemd in Red Hat's Linux distribution has been the source of major controversy. The titles of articles and blog posts on the subject communicate the strength of feeling involved here: Systemd: Harbinger of the Linux apocalypse, Meet systemd, the controversial project taking over a Linux distro near you, Broken by design: systemd, and The Biggest Myths of systemd. Nice summaries of systemd and why it's so controversial are presented in Understanding and Using Systemd and Linus Torvalds and others on Linux's systemd. The stated purpose of uselessd is "to reduce systemd to a base initd, process supervisor and transactional dependency system, while minimizing intrusiveness and isolationism."

NetBeans

Geertjan Wielenga covers NetBeans-related 2014 highlights in the post NetBeans Top 5 Highlights of 2014. One of the highlights is "Release of NetBeans IDE 8.0, 8.0.1, and 8.0.2." NetBeans supports JDK 8.

Eclipse

Eclipse Luna was Eclipse's annual release in 2014, supporting JDK 8.

IntelliJ IDEA

IntelliJ IDEA saw major new versions in 2014 (Release 13.1 and Release 14) and now supports JDK 8.

Material Design

Google's Material Design concept was all over the blogosphere in 2014. It's defined as a "visual language for our users that synthesizes the classic principles of good design with the innovation and possibility of technology and science." Coverage of Material Design includes What Google's Material Design is Really About and Google Developers Blog's This is material design.

Conclusion

2014 was another year with many developments in software development. I have not had as much time as I like this year to put into this post, so I may add to it over the coming days. If I add any new items, I will note the added items in Feedback comments.

Previous Years' Editions

1 comment:

Bretislav Wajtr said...

Cool summary, thanks for it