I am Walter Almeida, the founder of Generative Objects, the low-code development platform I have been developing full time since 2009. Today I am very excited to officially announce the very near future full open sourcing of the technology. This post is also a call for developers who want to join the project, please register for the presentation in eventbrite for a full technical presentation of Generative Objects, if interested.
EDITED : The presentation has already been held, you can access here the replay And we have just setup a forum for users and contributors of the Generative Objects technology, but also for discussion around open source low-code technology in general, don’t hesitate to join us !
- The story of Generative Objects
- Why I am open sourcing Generative Objects
- Generative Objects Founding pillars
- Open sourcing plan
- Connection with other open source projects
The story of Generative Objects
To understand why I am fully open-sourcing the technology, it is important to tell you about my journey up to this point. After having dedicated 12 years of my life as a software consultant, 4 as a freelancer, and saving enough money to start my own project, I began working half time on the Generative Objects project in early 2009. In early 2010, I went full time until today. I was already in touch with the modelling and code generation approaches of that time, and strongly felt the intuition and the pull to create a new technology that would go far beyond all the model-driven technologies that existed at that point in time.
More than 10 years of maturation of the Generative Objects platform
I passionately and relentlessly worked more than 3 years full time developing the GO platform in my “garage”, until I hired my first employee in 2012 and ran my first proof of concept applied to a public company: Le Groupe La Poste (France). Since then, I grew to a 6-person team in 2019, running many enterprise projects on the Generative Objects technology. We worked for around 20 customers, including big institutions and corporations (APF France handicap, CEA, EPT Grand Orly, Haut Conseil du Commissariat aux Comptes, Inserm, Meteo France, Thales, Rue du Commerce …).
The difficulty in finding a business model for Generative Objects
This was an extraordinary experience, very intense and sometimes exhausting, for both myself and my team. Since I never seriously wanted to get investors (more on this later), I had to bootstrap a business model that would bring enough money to pay for all the salaries. Therefore, we had a double model of software editor and consultancy company, which is the most difficult path I could have possibly chosen. We were a team of 2 people working full time on the customer projects and 4 people working on the R&D of the platform, regularly helping on the customer projects. Even though we were fast thanks to the competitive advantage of our own platform, it still is an extremely hard challenge to have only 2 people actually generating cash for sustaining a 6 person team. On top of that, we never managed to fully play our software editor role, since there was no time to actually do concrete product development.
Our biggest success was that we exclusively worked on projects using the Generative Objects platform; therefore, running an applied R&D process, as we matured the platform with constant feedback from the customer projects. All of these projects were successes, with the biggest one being deployed in a corporation with more than 5000 active users of the application. We also succeeded in creating a platform empowering non-developer users to actually create full fledge enterprise applications. Our 2 people team working for customer projects were indeed not developers and were capable of co-creating with our customers, with support from our technical team only for the custom code (representing less that 5% of the overall application code) and for time to time advise on efficient data-modelling, for the most complex cases.
Back to the beginning, the re-invention of Generative Objects
And here I am today, writing this post. At the time of writing, I am back to a one guy team, preparing the open sourcing of the technology. I let go of my employees and transferred my customers and their projects to partners who integrate the Generative Objects technology. You might be asking, why am I doing this? Let’s dig deeper into this.
Why I am open sourcing Generative Objects
I am a tech guy, not a salesman!
Firstly, I was not fulfilled anymore by my day to day work. I was becoming exclusively a CEO and sales guy, spending my time on finding new customers and ways to sustain the company, stepping away more and more from my passion and the platform itself. I tried several times to hire someone to take this role, but it always failed. I realized that it came mainly from wanting to be both a software editor and consultancy company, an impossible to solve equation, with opposite objectives and priorities. As a result of this, we never succeeded in being profitable because the customers’ projects did not produce enough revenue, and ultimately, we were sustained by the financial support we received from the French government for our research and development investments.
On changing the world vs. making profits
Secondly, it appeared that my only option to concentrate fully on the development of the technology and deployment of the platform would be to get investors involved, but getting investors has always been a big NO for me. I knew from the start that I am not doing this for profit. I am not doing this for an exit. I am doing this to bring something new to this world that would change our relationship to technology. I want to empower people to co-create the world we want to live in and to build new businesses from scratch that could actually be sustainable, fair, and of service for our growth as humanity. In essence, I am proposing a holistic, integrative plan that introduces a new business paradigm, focusing on the common good and shared profit, and unfortunately, this does not fit the typical investor’s agenda.
Low-code technology as an accelerator for the next Internet revolution
Low-code technology is an extraordinary tool to go faster, further and take technology to its next level. Low-code is a huge opportunity to empower many people. Today we all are consumers of data and services on the Internet, but I believe we are primed for the next leap forward: making all of us the creators of the very services we are actually using! What about a “Wikipedia for services”, that would allow us to co-create the next Facebook, Airbnb or Uber, but fully decentralized and belonging to us, the users?. This can be possible as a natural evolution of low-code technology, provided that the technology stays accessible to all.
Low-code technology is a business opportunity
Low-code technology is growing, here is the result of a study From MarketsAndMarkets : The global low-code development platform market size is projected to grow from USD 13.2 billion in 2020 to USD 45.5 billion by 2025, at a Compound Annual Growth Rate (CAGR) of 28.1% during the forecast period. The increasing need of digitalization and maturity of agile DevOps practices are expected to enhance the use of low-code development platform market across the globe.
The race has begun to determine who will become the next generation low-code software editor, fueled by millions of dollars of investments. If we sit back and allow this race to unfold as per usual, nothing changes, and new major actors would predominate the market because they have the capital, and we would have failed to empower the majority of us. This race is for profit, and democratizing access to technology is not on the table. The 45.5 billion forecast for 2025 is for high-end customers who are ready to pay the big price to access the technology.
You can refer to Jordi Cabot’s post on low-code platform pricing models to get an idea of what it coming and around the business models that are emerging.
Open sourcing Generative Objects to democratize access to low-code technology
This is exactly why I am now open-sourcing Generative Objects, to provide an alternative to commercial low-code platforms, accessible to all, and to accelerate the next evolution of Internet I mentioned. Low-code development technology must become a common good, as it is essential for unleashing the creativity and ingenuity of the individual working to radically change the way in which we operate, as we have recently become more aware that our current economic system is not serving us and the planet in an optimal and sustainable way.Low-code development technology must become a common good, as it is essential for unleashing the creativity and ingenuity of all individuals Click To Tweet
Generative Objects Founding pillars
The Generative Objects platform is a highly engineered product with more than 10 years of active research and development efforts. From the start, Generative Objects has been built following a set of core principles.
Code Generation approach, with human quality generated code
Generative Objects is built following a code generation approach, as opposed to a model interpretation approach. The user models his application, by creating a model, compliant to the Generative Objects meta-model, and then the final application is generated through a model to text transformation, applying the model information to code generation templates. The user can model his application through the Generative Objects user interface or using the SDK and full set of APIs available.
The generated code is truly of human quality, making it fully understandable and extensible by a developer. The extension points are clearly defined so that the model can then be changed and the code regenerated, without losing the custom extensions.
The code generation approach, along with human quality generated code, allows for a very pragmatic and efficient approach to evolving Generative Objects, the meta-model and the code generation templates, because any improvement can be done directly on a generated application code, individually tested and retro-applied to the meta-model and generation template.
Generative Objects is self-modeled & self-generated
Generative Objects is bootstrapped, or self-modeled & self-generated. That means that Generative Object is created using Generative Objects. The process to evolve the Generative Objects platform is to open the model of Generative Objects using Generative Objects, evolve the model and regenerate the full platform. This ensures that Generative Objects can actually evolve very fast, through the promise of low-code development, but also that our design is actually fully resilient and evolutive. We are applying the same principle as for self-compiling compilers, you can read about the benefits of bootstrapping compilers, which also applies to the self-modeling, self-generating approach of Generative Objects.
Generative Objects is a platform for creating enterprise applications
The Generative Objects platform is not limited to developing proof of concepts or small range applications. From the start, the platform has been designed following an enterprise range architecture and associated code generation templates. This is based on my own expertise in designing and developing enterprise applications for my customers, prior to creating Generative Objects. Furthermore, our customers are paying us for building complex enterprise applications, therefore, we had to ensure that the Generative Objects platform is actually meeting the challenge.
Generative Objects is multi-data sources, agnostic of where data is actually stored
The idea from day 1 was to be able to create applications that could consume and create data from and to any data source. The data source is modeled and configured for each entity and all the other levels of the Generative Objects meta-model are agnostic of the data source. Any entity can be related to any other entity, even if they are connected to different data sources. The code generation engine and templates are doing the magic of aggregating and consolidating the data at the application level. Examples of data source are relational or document databases, APIs, files or any data source that would be required for a given application. We recently integrated a SPARQL end point data source connector, to consume linked data, like for example dbPedia. We also integrated a connector to Solid Pods, with the intention to integrate with Tim berner Lee’s project.
Open sourcing plan
The objective is to fully open source Generative Objects as soon as possible, definitively this year. Before the public open sourcing of Generative Objects, I am already inviting around 5 developers to join me on the Generative Objects GitHub repository, to be part of the final efforts to open source the platform and initiate the core team of the project.
What I want to achieve before open sourcing is the following:
- Improve the documentation to make it easy for anyone new to quickly get started on the project, as a contributor to the Generative Objects platform, or as a user.
- Migrate the code base to .NET Core (being now .NET Standard), to be fully OSS, and running on Linux as well as Windows Server.
- Re-write parts of the code generator that are using non-open source components.
As part of re-writing the code generator, we will make it fully independent from the Generative Objects modeler, so that it can be used as a stand-alone product itself.
I am also working on defining the open source licence and the model to apply to sustain the project. A core team on the project is a must have, and this core team has to be remunerated. I am exploring the creation of a fair business model that will allow redistribution of the generated wealth to all the contributors on the project. My intention is growth, in the sense of initiating an open source community that will be fully sustainable and autonomous, with the objective to bring the project to its full potential, ultimately to support the next leap forward for the Internet and the empowerment of people.
I am doing an online presentation of the Generative Objects code base on the 9th of june, please register here if you are interested, as a potential future contributor of the platform or if you are just curious to know more about the technology.
Connection with other open source projects
Open sourcing a project and creating a community around can be a challenge. To me, it is incredibly important that the project brings immediate value and is of service to already established projects and communities. This is what will bring visibility and rapid adoption of the Generative Objects platform.
I am already working on connecting to two communities: the Solid project and the dbPedia project, for I am sharing their values, and our projects can be complementary for accelerating the next leap forward for the Internet. Solid is an initiative inspired by Tim Berner Lee, the inventor of the Internet. Solid is an open source project to restore the power and agency of individuals on the web. As an example on a potential complementary use of Solid and Generative Object, you can read about this discussion about the creation of a new decentralized social network.
Dbpedia is a initiative to bring further exposition of knowledge by giving access to knowledge stored in different sources (Wikimedia, Wikipedia, Commons etc.) through Linked data. I have already created a data source connector for SPARQL end points, that I tested and validated against the dbPedia SPARQL end point. This allow for the fast creation of applications making use of Linked data, especially from dbPedia.
The idea is also to modularize the Generative Objects platform so that it comprises several sub-projects that can be used individually and bring values to different people, therefore widening the exposure of Generative Objects. The code generator is an excellent example of this.
My wish is that you are as excited as I am about this ambitious project. It feels to me like the real start of what I am here to do, in big ways, and I definitively want this project to be a co-creation. Ready to ride the wave with me ?
You can reach me on [email protected]
many, many thanks not only for your article.
Your article pretty exactly reflects my view on the term low-code. A common problem with terms getting popular, more and more companies use the term in with different meanings. Just to pretend to be part of the wave.
Back in 2002 me being the lead architect in an international project we faced a problem. Are sales droids sold the part of doing web forms for 180 person hours. That translates to approx. 23 person days. When that part was to be done, it became obvious a little more than 400 web forms had to be implemented. The developers estimate — we did Kanban back then — was 3 person days per form, giving more than 1200 person days of work.
Facing that mismatch, I had the choice to either make the project black — black, being the darkest shade of red — or to follow another approach.
I voted for the second. The forms contents have been already specified by the customer with XML Schema Definitions (XSD) annotated by a text document. The customer’s business analysts also liked to get more formal. They really disliked the vague prose of the text documents.
OK, in cooperation with the customer’s business analysts I developed an extension of the XSD XSD. We simply added label information. Furthermore we added some conventions on writing XSDs.
I took a highly talented programmer fresh from the university and made him programming XSLT transformations on the new extended XSDs to produce Java Servlet Code for the forms. …
It worked well, altogether we required approx. 17 person days to get the 400+ forms productive. Productive means passing all customer tests and get qualified for use by the customer.
That was my way to code generation (= low-code?).
Thank you Carsten for sharing you own story. What I like in your telling is that it is a concrete case and it is alive, no bullshit, you had a problem to solve, and you needed to find an innovative solution, and you just did it. Brilliant!
This is the way to go: use tools as a means to solve problems, not just for the sake of using a beautifully marketed tool.
And yes, your approach is code generation, and is therefore a low-code approach, in the sense that there is less manual code to write than it would required in a mainstream way.
When we are talking about low-code platform, there is the addition of the word “platform”, meaning that it is no longer only an approach, but the consolidation of a set of tools and practices in order to solve a whole range of similar problems. In your case, your low-code approach could become a low-code platform, if you would generalize what you did for your specific case into a platform that could be used by others to solve similar problems.
Also, the current maturation of low-code platform actually implies, in my view, that the platform is easy to use and abstracted enough to be used by non-developers. Or better said : used in full autonomy by a business analyst, non-developer, for 90-95% of the project. And support can then be required of a developer for the low-code part. This is the way we did our projects at Generative Objects, our team of 2 business analysts were actually fully autonomous in the co-creation of the applications with the customers, yet getting some episodic help from our developers when code was required.
The presentation of Generative Objects, functional and technical, has already been held, here is the replay : https://www.youtube.com/watch?v=K7iM9Z6TGG4
when will it be open sourced?
It is on progress, this year definitively, hopefully around september. At the moment I am giving access to the git repository to a few developers who are willing to help finalize a few things on the code base (remove a few dependances, documentation, etc.) before public opening. Reach me if you are interested : [email protected]
And Jason, here is the pointer to the github repository : https://github.com/generative-objects-org/generative-objects, with pointers to existing resources. The sub github repo are still private, but these are the one which will be public soon. Feel free to register to the generative objects newsletter to be informed of the public opening : https://generativeobjects.us8.list-manage.com/subscribe/post?u=3fe158812c7a7849f8af5ebe1&id=2d543c7f67