There is a case of rewriting an application from scratch and smoothly transferring users from an existing one to a new one within a single application. Aleksandr wants to describe how such a case arose, how the company started to solve it incorrectly, how they eventually solved it, and what came out of it.
Questions are raised about the hard fork of the project and its subsequent unification with the existing one under one roof. And merging two unrelated applications inside one with the possibility of using either one or the other with a program change of the application.
A simple example: imagine that with a single button click in Yandex.Taxi your app turns into a fully functioning Uber, and back again. Different architecture, different backends, different code styles, partially shared modules, and several million users around the world. At the same time, you can release both application A, application B, and a combo application A+B from the same repository.
Target audience: mostly middle, seniors.
The purpose of the talk: to share a rare experience of changing the project on the go.
Key ideas: how to fork a project and bring it back, how to develop features that should work equally with 2 different backends, how to change the application in runtime.
What people will learn from the report: what are the options for running 2 projects in one code base and what options are available for a fork of the project. How to provide project-specific dependencies into common modules, how to transfer a user from one project to another in runtime so that he almost does not notice it.