TAB2APP, concept and objectives

TAB2APP, May 2020
This article tackles three problems of today's web development ecosystem (and software development in general). The increasing complexity and cost of web projects and the big technical gap that impedes active contribution, of non-developpers or low resources organizations, to it and obstructs the benefit they can withdraw. Web is a foundation for any digital transformation and web applications are central pilars. For this transformation to succeed, it is necessary to solve or attenuate those obstacles. We beleive No/Low Code platforms are a promising option. We explain TAB2APP vision and show how it differentiates compared to other solutions.
lines of php code
php, html, bootstrap

Since the advent of the world wide web in early ninetes, SW institutions, companies and communities have untiringly developped tools, languages, frameworks, standards that greatly contributed to the rich content we have today. This tremendous effort enabled the transition from what we call retrospectively web 1.0 to web 2.0. The web has evolved from a collection of static text and medias pages linked together, to a rich network where advanced interactions and transactions happen between users. Today, we can buy, sell, book, share, plan, organize, communicate over the web. Many of our daily use objects (phones, gears, cars, TVs,..) autonomously exchange data and controls over the net to "smartly" improve our user experience. Many of business and metier-application softwares run on the browser and are reachable from any point of the globe. Furthermore, anyone can contribute to the web content by creating its own blog, website, online store or a profil on social media. It is in fact this last faculty that is considered as key point characterizing the web 2.0.

Allowing anyone to contribute to the web is a great progress, however, this contribution is in fact guided and framed. One can create a content using tools that offer him a standard "way" to do things sometimes supplemented with a palet of plugins and themes. As soon as, you leave the beaten paths, you will need coding skills. As an example, try to find how to add a simple checkbox into the blog you built with the world most famous CMS. Assume that you want to let your reader select an option based on which you perform some filtering or selection. You will not find an answer or you will find yourself in a forum thread talking about code and integration tricks. Simple users may not be concerned about this limitation, however, companies and organizations who want to digitalize their operations would be greatly interested in a simple and flexible way to go on the cloud without the need for external support nor internal specialized staff. Web 2.0 enabled people to contribute and collaborate, but it has yet to give them chance to be creative, moreover, this category represent the big majority of users and the real final customers.

Web 2.0 enabled people to contribute and collaborate, but it has yet to give them chance to be creative

A web application is in fact a compound object, each of which component is executed in different physical location (servers on the cloud, client browser) and is designed following a specific paradigm. The terms used to describe technical and organisation of a web projects reflect this composite nature. A full-stack developper can operate at all the the stages. For big projects, specializations are needed (front-end or UI/UX for the user intefrace, back-end for business logic, database, graphical design...etc). This is not to invoke infrastructure (management of servers/databases, scaling,...) which becomes the main activity at deployment and operation phases. We limit the scope of this text to the development phase which for small to medium projects do not need to worry about the deployment early. Different coding languages are used for each component. Some of them were created specifically for the web (HTML, CSS, Javascript, PHP...), some others are (traditional) general purpose languages extended to support the web. The popularity of mobile devices increased this complexity. Not only the responsivness (adapting display to different screen sizes) is crucial but also the web application are more and more required to behave like native-mobile-apps. Store data on the local device, operate offline and asynchronously communicate with server, send notifications and other features the user used to benefit of on native-apps, minus the disadvantage of installing and updating a package on his terminal. So, web development is essentially complex. Nevertheless, the explosion of web development technologies goes far beyond the above constations. In many cases, the differentiation between two languages or frameworks is only the simplicity of syntax, or the availability of some toolkit or such a such. In fact, web languages are completely developper-centric. From functional point of view, end-user is completely agnostic to which stack is used. All what he sees is a user-interface which is pretty well standarized semantically and aesthetically across web browsers. the plethora of frameworks enlarged the options available to developpers but in the same time increased the complexity and costs. Frameworks born and die (obsoleted) at a speed of light, inter-operability between different stack could be also a problem. Code reusability becomes difficult. Besides the tools you find in your framework reference, it is generally hard to find or integrate a higher level construct ready for plug-and-play. Even if some features were known and developed since the childhood of web, you still need sometimes to reinvent the wheel. Resources that have skills for a specific tech-stack combination are hard to find in the market. We are putting too much energy in diversifying the toolkits without significant added-value for the final user. Web languages shall be simplified, abstracted and brought the closer to non-developpers.

Web languages shall be simplified, abstracted and brought the closer to non-developpers.

Industries in general tend to decrease product cost by automation, diversity reduction, processes optimization, volumes. It is not the case of the web industry. The cost of web development (and software) projects are still high and man-day rate contributes to the major portion. Even if a CMS or other legacy code base are used, as soon as you leave the path, custom code is needed, and consequently, integration, test and validation effort. Trying to patch too much a code base may cost far more than a development from scratch in addition to the risk of project failure. It is also hard from customer perspective. Many customers do not have resources nor skills to formally specify their requirements and effectivly manage projects. Thus ambiguities and mis-communications arise between the customer and contracting companies. This is an other consequence of the gap between developpers and end-users speaking totally different "languages". SaaS business model (Software-as-a-Service) encounter a big success this days because it solves this economical issue. The client has not to spend NRE-costs. He simply get access to the service, operated and maintained by the provider, against a reasonable monthly rate. However, the drawback is loose of control over processes and data governance. In fact, SaaS being shared it tends to be a broad solution and offer few or no flexibility to adapt to a specific process variant. The data being stored and managed by a third-party, data governance issue arise whatever guarantees of confidentiality and security promised by the service provider. Furthermore, we can't find a SaaS solution for every single problem. SaaS addresses general topics (project management, accounting,...etc) that can be shared by many companies across many sectors otherwise the business model fails to be profitable.

SW canonisation and/or mutualisation is not sufficient. Efficient and abstract development tools are needed to solve more problems, onboard more creators and shorten the development leadtimes.

Intellectual production (like SW development) can't be industrialized. Technical and economical tentatives have improved the situation to some extent but there is still huge gaps to fill. This reality is encountered in other sectors as well. In the automotive industry, SW development graps around half of vehicle development expenses. Although, manufacturers and suppliers defined standards (AUTOSAR) and retentessly tried to share and mutualize developments through partenrships and alliances. In fact, the problem-space is infinite and design targets are generally antagonists and require many compromises and arbitrations. The least tiny modification you make to a shared SW component will require a big re-work with potential impact on the overall system. The more generic is a SW-component, the bigger and more complex it is. Thus commonalization competes with performance, safety, economy. Standardization efforts are not useless, many aspects of the development were improved especially design, collaboration and integration. However, some activities like testing and validation are still "artisanal" and are quickly overwhelmed by the increasing volume of features and diversities. Traditional OEMs are mutating their old processes (and processes of their suppliers) to adopt modern agile methods (CI/CV) in order to improve their operations and to stay competitive in a market disrupted by the new tech-players. One of the big advances made in the embedded SW development process is model based design (MBD). Today, application SW is designed graphically by engineers with different technical backgrounds and who don't have necessarily a strong SW skill. The models so constructed can be analyzed and validated in simulation then a production code is automatically generated. Models helped OEMs keep control on their know-how and formalized their exchanges with suppliers. TAB2APP is inspired by this approach of development.

A model based approach to web development would help in abstracting and simplifying it while keeping the creativity space open.

There is still a wide range of problems and opportunities that need to be serviced on the cloud and can't be answered by CMSs or SaaS, and which don't worth a custom development because of the reasons we explained earlier. How many ideas or projects never see the light because of lack of budget or because the owner do not have coding skills or can't quickly prototype a proof of concept before engaging investments in money and time. The no/low code platforms are a promising answer to this class of problems. No/Low code refers to any platform (or language) that lets the user build web-applications with no or very few coding. They generally expose a drag&drop UI builder with extensive parameters backed with data and workflow modelers for customizing the look and behaviour. All is done in one place and in a consistent way so that user can build incrementaly and efficiently a solution. Nevertheless, one shall not expect a magical to happen. First, no code doesn't mean zero learning curve. One need to learn and train on the target platform however, this is far less hard than learning 4 or 5 languages (HTML/CSS/JAVASCRIPT/+a Server-Side language and a database query language) in addition to a framework. Secondly, no code doesn't mean no design. An application is a conceptual program at first before being a set of code files. A good webapp needs a thorough design of the functional architecture (features, data structure, user interface and interaction, access permissions...). The big advantage for non-developpers is dispense from learning a programming language and for developpers dispense from typing code, syntax correction, code architecture, debugging, unit-test, integration and all other activities that takes a non-negligible portion of development-time. In terms of scalability, no/low code solutions can handle most common traffic volumes (blogs, e-commerce, small/medium ERP...etc). Unless a project has the ambition to be the next Facebook or Amazon, it can be easily covered by a no/low code product.

NO/LOW CODE platforms will play an important role in the near future of the web.

TAB2APP joins this movement of NO/LOW Code and aspires to handle the challenge. The appoach is different from the common observed trend. In fact TAB2APP is closer to a high level language than to a Builder/Configurator. As said before, it is inspired by MBD (Model-Based-Design). The idea is to have a "dream" all-in one tool (and language) where one can design data, computation and presentation concisely and easily. This methodology shall be abstract enough and high level enough to be easy to learn without SW background. This representation (model) shall keep formal so that it can be simulated and automatically translated into code. Simulation is important because it gives immediate feedback to the designer before proceeding with final product auto-generation which should be anyway compliant to the model. Designer can loop over this process to improve his product. The learning curve shall be as fast as possible and invokes preferrably existing tools and knwoledge to not increase the complexity discussed earlier. This "dream" tool is simply called a SPREADSHEET. People from different horizons use spreadsheets to structure, compute and present data. It is also interactive. Modifying a cell value updates all the dependent ones. Clicking on an hyperlink bring you from one sheet to another or triggers some action. It has a rich formula language enclosing many functions for computation and data processing. It offers a descent styling toolbox (police, colors, borders...). The most important point is that many people are familiar with and do not consider it as "coding". What else? it is all what we need to build a web application focused on data acquisition, processing and display. This is TAB2APP philosophy. The idea is to model (i.e. emulate) a web application using a spreadsheet, then automatically generate it and run it on the cloud. The user define his app, following tab2app methodology, uploads his wokbook to the platform, builds and runs it in few minutes.

Building a web application shouldn't be much more difficult than working on a spreadsheet.

It is important to point out that low code is not only beneficial to non-developpers. Students and engineers shall spend more time learning emerging technologies (AI, Data Science, IoT,...) than learning the "1001 way" how to do the same thing. Waiting for an AI that is able to translate natural language into a machine code, we need no/low code to be able to jump to the next step. Only after, we could think about web 3.0.