When CIOs invest in enterprise applications—whether developed in-house or purchased from third parties—they must balance a number of key characteristics: supportability, maintainability, deployability, and cost. Nine years ago, as Area9 developed its adaptive learning platform and related applications, we needed a programming language that would let us optimize those characteristics for ourselves and our clients. The result was Area9 Flow, and today we are releasing it to the open source community.
Back in 2010, Flash (since retired) was the only way to run complicated code on browsers across different operating systems; HTML5 was not yet a standard. While languages such as Java and Haxe worked well, they were not as suitable at the time for programming mobile apps, which were becoming more popular.
Our solution was to develop our own programming language: Flow, which allows the same software—written only once—to run on Windows, Mac, Unix and browsers[i], as well as iOS[ii] and Android[iii]. Today, we are releasing Flow as open source software on GitHub, including the programming language, incremental compiler, multiple backends, and a standard library—including a best-in-class user interface (UI) library.
While we believe Flow will appeal to programmers developing their own applications, there is another significant reason for open-sourcing Flow: Flow is the language we use to write Area9 Rhapsode™, our fourth-generation adaptive learning platform. We are sensitive to the fact that there can be concerns with any proprietary software as to stability and robustness. Now that Flow is open source, customers and prospective clients can see for themselves the foundation on which Rhapsode is built, and how it has evolved over nine years (see timeline, below). Applications written in Flow are used by millions of users, and it has proven itself to be scalable, robust, maintainable, supportable, and efficient.
Flow is a functional computer language, which contrasts with the more common object-oriented programming languages such as C# and Java. While functional languages can be somewhat more complex to learn and use in the beginning, they allow code to be written succinctly. For example, in some scenarios, Flow takes one-tenth the amount of code that would be required in Java. Programming effort and the number of bugs (which are present in all software) are proportional to the number of lines of code and relatively consistent across multiple languages. Less code means inherently more efficient development, and less code also means fewer bugs and few bug fixes, which further improves productivity and software quality.
Looking back on nearly a decade of Flow developments, we see the importance of the decision we made in 2010, as a startup company aiming to develop next-generation adaptive learning solutions. While apps on smartphones were still nascent at that time, we saw the future with mobile devices. We couldn’t afford to ignore mobile platforms, nor could we expect our customers to pay us to develop learning solutions three times—once for browsers, once for iOS, and once for Android. We needed software that could do it all.
From its launch in 2010 to its open source today, Flow has established a timeline of continuous improvement:
- August 2010 – first Flow program ran on Flash and HTML5
- November 2013 – first app is approved in the iOS App Store
- April 2014 – first app approved in Google Play Store
- November 2015 – Flash was (for practical purposes) retired; Flow migrated to HTML5
- January 2016 – Google Material Guidelines were implemented
- November 2016 – JIT for x64 was added
- May 2018 – Self-hosted compiler, written in Flow
- April 2019 – Initial open source release
Flow-ing into the Future
We believe Flow can hold its own against other computer languages given its proven track record. The biggest selling point is Flow’s ability to build across multiple platform UIs, using fairly simple code.
One of the advantages of Flow is its “compositionality”—meaning code can be written once and reused from one platform and one app to another. This increases productivity as code can be “reused,” the way Lego building bricks can be snapped together in different combinations. As an example, the preview feature in the Rhapsode Curator app uses functionality from the Rhapsode Learner app, allowing one app to operate within the other.
As with any software, Flow continues to be developed and refined. Area9 programmers are constantly making changes and improvements, which are updated in our browser-based and app products and solutions, and also pushed out to GitHub. In addition, as an open-source software, Flow will benefit from feedback and suggested bug fixes from the programming community.
Looking ahead, we expect Flow to have a great life as a functional language for learning apps and for other applications. We’re pleased to make it open source, allowing our clients to examine it thoroughly and programmers to learn and use.
You can download Flow from GitHub: https://github.com/area9innovation/flow9/
[i] All trademarks are owned by their respective owners
[ii] iOS is a trademark of Apple
[iii] Android is a trademark of Google