How we shifted from Semantic Driven Transformations to a deep network of transformation bots

--

MyAppConverter offers a unique and compelling proposition to mobile developers wanting to port their mobile applications to other platforms in seamless and straightforward way. The aim of MyAppConverter is to become the de-facto porting service of choice for mobile developers to develop their mobile apps to service the largest possible smart phone user audience, and this in a simple, fast and user-friendly manner with the followings benefits:

● Native to native mobile code conversion across multiple platforms.

● Ability to access the converted source code of the ported application

● Accelerate the access of the mobile app across multiple stored by the largest possible audience

● No need for developers to abandon their favourite development language, nor use/adopt a new language, restricted and opaque frameworks.

Since the creation of the online code conversion tool prototype , we have received, more than 45000 user sign-ups wanting to use our tool. During the product market fit phase we’ve learned a great deal in terms of what prospective customers want from such tool. First, the vast majority want to have the full code conversion (part automated part manually) leading to the full mobile application porting service. Indeed potential customers interested in porting their apps, are keen to use the full porting option. Therefore we’ve decided to listen to these prospective customers and have built the initial porting platform, a first of its kind. We’ve received more than $1 million customer porting requests and have generated automatically more than 1 billion line code with more than 5000 iOS apps submission to be ported to Android.

MyAppConverter Technology

The initial technology of the service was based on Model Driven Architecture specification, we have designed several layered meta-models that describe a mobile application and it’s lifecycle in a device.

Based on these meta-models we have constructed a series of models that explain and describe iOS and Android ecosystems. And we were using theses constructed models to perform code transformations that maps semantic concepts and generate corresponding native code in the target platform.

Based on semantic driven code conversion and model driven software engineering, we were able to generate a fully native applications in the target platforms.

The cost of mappings (xenon paradox)

Every things goes well and we decided to map in priority the most submitted ios frameworks to our platform. We have build a mapping system allowing us to feed the transformation engine with the corresponding calls in Android sdk.

We Spent a lot of time mapping 80% of iOS frameworks, Apple release a new version of its sdk with more features and capabilities to map. The same goes for android SDK and our Mapping coverage drops to 50%.

We were generating up to 80% of the target mobile application and the remaining 20% has to be finished manually.

The turn around

This service offering was unbearable by our customers, and was costing us a lot in terms of development resources. We decided to shift our business offering from an automated service for developers to a full porting service backed by a marketplace of developers.

That was not easy at all, we had to readjust our staffing plan and reduce our operation cost.

This allowed us to create new customer success stories and we started generating more revenue.

Next Evolution

with the business shift comes also a technology enhancement, in order to learn the kind of complicated functions that can represent high-level abstractions (e.g., in technology, platform, and other AI-level tasks), we need deep architectures.

Deep architectures are composed of multiple levels of non-linear operations, such as in neural nets with many hidden layers or in complicated propositional transformations re-using many sub-transformation.

AI Driven Transformations -Transformation Bots

MyAppConverter Deep architectures is composed of multiple levels of non-linear operations, such as in neural nets with many hidden layers or in complicated propositional formulae re-using many sub-formulae. In the next part of the article we are going to describe the principles behind MyAppConverter Transformation Bots and how the Ai learn its Knowledge.

Retrieval based transformations VS. Generative based transformations

Retrieval-based transformation use a repository of predefined transformation rules and a predefined heuristic to pick an appropriate rule based on the input model and code context.

The heuristic could be as simple as a rule-based expression match, or as complex as an ensemble of Machine Learning classifiers. These systems don’t generate any new rule, they just pick a response from a fixed set.

Generative transformation don’t rely on predefined rules. They generate new transformation rules from scratch. Generative models are typically based on Machine Translation techniques, but instead of translating from one language to another, MyAppConverter “translate” from an input Model to an output Model.

Both approaches have some obvious pros and cons. Due to the repository of handcrafted transformations, retrieval-based methods don’t make grammatical mistakes it a matter of knowledge.

However, they may be unable to handle unseen cases for which no appropriate predefined transformation exists.

For the same reasons, these transformations can’t refer back to contextual entity information like different source code file mentioned earlier in the conversation.

Generative models are “smarter”. They can refer back to entities in the input and give the impression that you’re porting by a human. However, these models are hard to train, are quite likely to make grammatical mistakes , and typically require huge amounts of training data.

● Declarative transformations (Retrieval)

○ Input Model → Hand designed Transformations→ Output model

● Imperative transformations(Retrieval)

○ Input Model → Hand designed Features → Mapping from Features → Output Model

● Semantic transformations (Generative)

○ Input Model → Features → Mapping from Features → Output Model

● AI transformations (Generative)

○ Input Model → Features → Additional layer of more Abstract features → Mapping from Features → Output Model

Deep Learning techniques can be used for both retrieval-based or generative models, but research seems to be moving into the generative direction.

Open Domain vs Closed Domain

In an open domain setting the user can submit to MyAppConverter any platform and any language. The infinite number of languages combinations and the fact that a certain amount of platform knowledge is required to create reasonable output makes this a hard problem. Typically MyAppConverter have the ambition to solve this problem using a General AI.

In a closed domain setting the space of possible inputs and outputs is somewhat limited because the system is trying to achieve a very specific goal.

Retrieval Based transformations are a great first step for a Transformation Bot because it is contained, may not require the complexity of smart machines and can deliver both business and user value.

In Generative Based transformations, the inputs are submitted and the Transformation Bot has smart machine technology that generates outputs. Generated models allow the Transformation Bot to handle both the common code mappings and some unforeseen cases for which there are no predefined responses.

The smart machine can handle longer conversations and appear to be more human-like porting. But generative outputs increases complexity, often by a lot. When a transformation bot get around an unforeseen case of mapping for which there is no predefined responses in self-service, we pass the problem to a developer in the Marketplace.

What’s next for MyAppConverter?

One of the most interesting aspects of what we’ve built thus far is the UI porting tool, something that is the customer proof the market wants i.e. the porting to be fully automated and instant.

Besides, with the advent of most user friendly mobile development frameworks such as React Native, it is clear the vision of “develop once, deploy instantly to many platforms” will become soon a reality.

Our overall vision is to make multi-platform mobile app development & deployment as easy as single platform. 10 years from now, the issues of fragmentation and interoperability across platforms and devices will still remain. Our vision is to have services like “Click to publish” instantly and automatically Apps and Services across multiple stores and devices. Developers should create apps and not port them and MyAppConverter will be the foundation of such AI based code conversion capabilities.

--

--