Some days ago, Dropbox developers through a post in the official blog of the application They announced the route they intend to follow in terms of mobile development of your cross platform application, where the team has decided to create a unified code base, for various objectives or platforms.
The approach can be useful for small teams with little skill, but production is needed as quickly as possible. Since 2013, the Dropbox team relies on this strategy. TOTip to Android and iOS platforms through a unique code base built in C ++. The publication explains why the company now prefers native development in Swift and Kotlin.
“By assembling our code base in a non-standard way, we inherit the costs that we would not have had to worry about if we had aligned with the default weapons that third parties use on a large scale.” In the end, it was more expensive than writing code twice, ”he said.
Abruptly, the comments of the Dropbox engineer show that the choice of the cross-platform development approach introduces additional development costs related to the implementation of custom frameworks and libraries.
Not to mention those related to the implementation of customized work tools or the need to train or recruit third parties capable of adapting to a very personalized software stack.
In fact, emphasizes that the choice of C ++ for cross-platform development of Android and iOS can lead developers to face difficulties that they would not have had natively.
For example, he says, establishing a framework to manage tasks that run in the background may be essential in the C ++ cross-platform development pipeline.
Conversely, Another engineer explains the Dropbox engineer, it is not a problem in native.
He even states that the Dropbox team, in the process, had to configure a JSON library for C ++ 11, as well as another for the administration of NULL pointers.
The company's engineer went even further by emphasizing that he is turning to the theory of thinking that one can mount a single code base for several platforms.
In fact, he insists, the specificities of each platform are factors that cannot be avoided.
"The way an application runs a background job is platform specific, and you have to look at it from the beginning," he says.
In addition to the considerations that affect the code, there are those that concern work tools. In this sense, the engineer of the company develops in two axes: debugging and configuration of customized tools.
“The native debugging experience is generally superior to that of C ++ through the default IDE of the target platform,” he writes, adding that “in addition to having to move away from the available tools, we had to mobilize development efforts for the development of others capable of supporting the cross-platform approach in C ++. "
Finally, in terms of training and recruitment aspects, Eyal Guthmann indicates that the multiplatform adventure was built around a core of engineers with a solid C ++ background.
With the latter's departure to other teams or companies, the company has had more and more difficulties filling the technical gap to maintain the basis of the C ++ code. Internally and externally, the company has had problems to train and recruit in this axis, because it seems that very few mobile developers are interested in C ++.
The passage of the Dropbox team to the native through Kotlin and Swift for Android and iOS brings benefits.
In fact, the C ++ language, together with the C that you no longer cite, serves as a common denominator for managing such problems.
It is not difficult to imagine that the initial group of engineers has integrated it for the management of certain critical aspects of the backend. Only questions about the quality of the C ++ interface with target platforms can be put on the table.