It was a long and winding road: a circuitous path: a roundabout way: we took the scenic route deciding which framework to use to develop our cross-platform crowd sourced fitness app. We, in this instance, being myself and the folks that I was randomly paired with to work on our final Capstone project for graduating from the OSU Computer Science Post Baccalaureate program. And although we did our due diligence and performed a spike to determine the best fitting framework for our requirements, we have none the less run into the first limitation of our chosen framework. Let me walk you through our decision process.
Initially, I performed a spike comparing the different cross platform development frameworks, React Native, with the three flavors of Ionic, with Xamarin. It was discovered that Facebook owned React Native would not be the ideal solution, since it required multiple code bases – one for each platform. It was considered that the higher performance payoff, by virtue of natively compile executables, was not an enticing enough boon to take on that additional effort in this course where time may or may not be of the essence. So, despite these reasons and having high satisfaction from developers who adopt it, we decided to disqualify React.
We next considered Microsoft’s, Xamarin, which fulfilled our single codebase requirements. Xamarin provides a simple testing environment, and many job opportunities for its practitioners. However, unlike React and Ionic, Xamarin requires knowledge of C# and .NET, neither of which have been discussed or alluded to in this program. Even though my introductory classes were taught in C/C++, and the transition wouldn’t have been as painful for my Python prone partners, it was decided the learning curve was too steep for this class. Even though Xamarin products tend to have high performance due to their, like React Native’s, natively compiled executables, we decided to forgo Xamarin was disqualified for a hybrid solution.
Of our three considered platforms, this left us with only Ionic left to consider. If only it were that simple. Ionic itself can be paired with 3 different javascript frameworks. Angular, React, and Vue. Angular being the most robust, full featured, and flexible of the bunch, and Vue, on the other end of the spectrum, being much easier to use, but allowing for less functionality. Believing our app would not require too many advanced features, and knowing that we would be crunched for time, we first elected to use Ionic + Vue. After further discussion and research, we realized that React and Angular might be more difficult to learn, but in the end would provide better experience and help develop more marketable skills. So we decided react was the way to, naively assuming it would support all of the features advertised in Ionic’s UI library. Woe upon us all.
In fact, Ionic + React does not support Ionic’s basic navigation system. This was our original strategy for displaying different types of challenges in our fitness app. So we made a hard pivot toward using Modals, but this presents other challenges with dynamically populating lists, as Ionic Modals expect functions to be passed. How will it be resolved? Well, that we will that will be the adventure of coming weeks.