POC for Low code platforms and DSL integration

Sorry, I definitely wrote cryptically. And yes, you are right, a textual target does not prevent you from concatenating model transformations as long as your transformation language is model to model.
The point is that if you use a textual target (real text or instances of a Text DSL is the same) to encode a target DSL instance, you lose all the domain information and your ability of concatenating additional transformations is severely limited.

For instance, if you are generating Java code as text, you are able to expand a template by filling its slots with the expansion of nested templates and so on. But you are not able to perform a context dependent weaving, that is to perform a semantics aware change in the actual fragment surrounding the expansion point, because it is just text for you.

For a low code platform targeting data-centric applications this could be a minor limit, but if you plan to generalize to include behavioral languages, this will end up being an important limit, in my experience.

1 Like

Thank your @solmi.riccardo for the clarification. I must say it still is not very clear to me, I am not for instance familiar with “context dependent weaving”. I guess with a concrete example / use case I could project myself and understand the relevance of it

Given a source model fragment and a target template with a variability point, you may simply want to generate the target template with the variability point replaced by the source model fragment.
You have a context dependent weaving if the source fragment, the target model or both are expected to change in the result based on the application of a weaver function.

I often use the ability to rework the models I am deriving.
I try to isolate some examples by minimizing their context, I hope they remain understandable.

  1. If you are generating a metamodel from a stream of model constraints, you cannot simply append a new entity definition; whether you want to merge on the fly the partial definitions of an entity or merge all partial definitions in a next generation phase, your target must be a model, not a text.

  2. In a derived model you may want to perform some refactoring and/or optimizations to improve its quality. For example, in a metamodel you might want to perform an inlining/embedding of some entities according to the structure of the types and of the associations.

  3. If a source fragment contains variables, types, or blocks, you may want to: import the necessary types if necessary; rename local variables to avoid shadows or collisions in the target scope; inline or wrap your expression/statements depending on the target container type/precedence level.

  4. If one of your target languages evolve over time, you may need to migrate your templates and, at the text level, this may prove impracticable.

All of the above examples are taken from the work I did to add the Swift language to the Whole Platform in the form of a reverse engineering tool that, starting from a grammar-like data model extracted from the official Swift repository, derives the following artifacts:

  • SwiftSyntax - a concrete syntax metamodel of Swift
  • Swift - an abstract syntax metamodel of Swift
  • SwiftNotations - a domain level definition of a Swing concrete notation
  • SwiftMigrations - Two domain level M2M transformations to transform to/from AST and parse tree
  • Two swift level transformations to try transform to/from official parse tree and JSON
  • … and a few others

Ok, thank you @solmi.riccardo for your explanation. I don’t know if it would make sense at the moment in the low code platform GO. I would need to see a concrete case where this would be needed, or realize that this technic would solve one of the challenges I am facing with GO.

@solmi.riccardo may I ask you a question ?

What is your interest in the GO platform and your intention with all these questions ? So that I can understand where you are coming from and what benefit there could be to continue sharing, and how we can do this in an efficient way ?

Thank you
Walter

You had shown interest in evolving the GO platform from a low code tool to something more general, so I tried to understand what you have done and the directions you are taking into account.

I tried to find some missing features to bridge the gap with LWB tools, and to discuss their relevance with you, but also to show you that they are expansive to add.

If you decide to implement them I could only cheer for you, since I’m the first of the old school of programmers always ready to reinvent the wheel :slight_smile:

On the other hand I got the idea that the most interesting part of the GO platform is the engineering of the frontend generation (starting from the UI metamodel plans shared by @tvillaren).

So I would suggest taking into consideration @meinte.boersma proposal to delimit the GO low-code platform with a programmatic/modeled interface and to decouple the rest, perhaps implementing it with an existing LWB.

On the UI front, I think that we can share more, since I too am going towards a multilevel architecture to support desktop and mobile UI frameworks at the domain level.

It would be interesting for me to understand if (or help to make) your web frontend is suitable for the notation of behavioral languages.

2 Likes

Thank you @solmi.riccardo for your answer, and sorry for late answer !

Yes I get it, thank you for your inputs. And the idea is not to create a new LWB. To start, I am not really familiar with LWBs and therefore I can’t really say that I want to build one !

My objective is to have an open source low-code platform that is evolutive, versatile, and give services to a maximum people, especially people with impactful projects that can create a new reality and a new way of seeing the world and business. I am especially interested in decentralizing the internet and build services and platforms that can help go in this direction. See for instance my post here : New decentralized social network, specialized in sharing public and Creative Common content - Ideas for Solid Apps - Solid Community Forum

That said, what I envision for the future or GO is not so much a fully fledged LWB but rather a generic low-code platform that can be used to model and generate specific low-code platforms for specific domain needs, as discussed before, but this is not even the priority at the moment. First is to push GO as it is now.

Yes, got it ! We can keep in touch, and your help is most welcome. I am quite busy planning the open sourcing of GO, but going back to this new versatile front end that @tvillaren designed is definitively on the roadmap. And yes we will decouple as much as possible all the bits, including this front-end part.

Yesteday I found this link about Low-Code Platforms. It is an answer in Quora:

https://www.quora.com/What-are-the-best-no-code-and-low-code-development-platforms-of-2020/answer/Mustafa-Sakalsiz

that talks about Code2. Here are the links for Code2

Github — icodebetter/icodebetter

Docs — Getting started

Demo Site — Code2

1 Like

For those who are interested, I did an online presentation and went deeper in the code of Generative Objects. Here is the link : https://www.youtube.com/watch?v=K7iM9Z6TGG4

I tried the password and it didn’t work.

Does this link to the recording include the proposal under discussion? I think I’m out of the loop.

Is the proposal of @voelter to extend the GO platform to include DSL Workbench? Would this turn the GO platform into an online language workbench?

Sorry @iandrich for the broken link ! the replay is available there : https://www.youtube.com/watch?v=K7iM9Z6TGG4

and sorry for my late answer, I just saw your comment !

For now the discussion is around Generative Objects as a low code platform for modelling and generating what @voelter would call “boring” data driven applications :slight_smile: but the question was raised and answered during the presentation around how to make it a generic low code platform that can be used to create specific low code platform (thus having full control on the meta model for modeling applications and the associated generation templates). This is my ultimate goal ! You can join the forum I’ve created to discuss around Generative Objects in general and open source low code technology in particular. You can raise this topic of making a workbench out of Generative Objects in the Vision category

I thought of doing all these discussions in this strumenta forum, but there will be much more going on on this new forum, also all the support part around the use of the Generative Objects technology and the contribution as a developer. And I wanted this forum to be fully public. You can access the forum here : https://forum.generativeobjects.com, feel free to join !

However I believe there is overlap between the strumenta forum and the Generative Objects Forum. @ftomassetti , we potentially can see how to create bridges between the 2 forums for common discussions. What do you think ?

For information, the plan is to licence Generative Objects as A-GPL, the Generative Objects metamodel as A-GPL, and keep the generated applications as fully free. So that anyone can use Generative Objects to create commercial applications, but every evolution of the Generative Objects platform itself have to be published as A-GPL too. And I am not planning on a double commercial / AGPL licence, giving everyone the right to use Generative Objects technology to do business.

I would appreciate your feedback on this licensing choice !

1 Like

Done :slight_smile:

Yes, I think there could be an overlap. I am not sure how that bridge could work. We can have conversations here about Generative Objects which could encourage people to join the Generative Objects forum, and viceversa, I think. Did you have something different in mind?

1 Like

Yes @ftomassetti we can promote each other’s forums when it makes sense. For instance, there is the whole R&D team of the lowcomote project who are interested in low-code technology that I believe would have a great interest to join your forum.

Also, it would be a matter of cross referencing posts in both forum when it makes sense.

However it would help if your forum would be open, and not only for people who subscribed, would it be an option for you to open your forum so that anyone could read the content ? This could potentially raise awareness and bring more interest, and content would be then indexed by google, making it visible for search engines. Any reason you keep it private ?

I thought about that, also because I think it would be useful for people to find these discussions when searching for answers around these themes. I am just not sure if participants would feel more reluctant to freely discuss if the forum was public

1 Like

Would you personnally feel more reluctant to freely discuss ? This could be the answer about weither opening or not the forum. To feel for yourself and trust your own intuition that what ever you feel inside is the right thing to do.

If I reflect on this for myself, on a similar subject about a choice to make : I can see that 10 years back, I already had this intuition to go open source, it was very clear for me that this is the way to go for me. And yet I waited for 10 years, because I was afraid of beeing stolen what I was putting so much effort creating. It is OK that I am open sourcing just now, I was probably not ready yet … But I now know that my intuition 10 years back was true. This is why I am now going fully in and I am now following more my intuition than my mind !

I hope I am not going to far here and that you are welcoming my comment ! Please tell me otherwise :slight_smile:

Sometimes yes. I do not share confidential information here, but sometimes I may share something that it should not necessarily be available to everyone

No problem. I am also a supporter of sharing: I have hundreds of article and open-source projects, and I work for the most part in the open, so I think that in general that is the right direction to go

About opening the forum: I wouldn’t hesitate to post in a more open forum.
However, I see one other concern: Malicious “members”. I heard quite a few stories now where people joined communities and brought their own agenda in (that might be totally unrelated to the communities’ topics) and effectively destroyed the community. I think the invite-only style limits this danger a bit.

1 Like

Yes good point. Although it can be detected ? and such people banned ? coming with an agenda can be pretty obvious. But yes this is an issue and more work to moderate the forum … Maybe an extensive enough introduction could be mandatory before being accepted as a writer ? Or even writer as invitation only ? and keep it all open for read?

Based on my previous experiences, this is possible and not always as easy to avoid as it seems in theory. I would suggest we all keep our eyes open regarding negative behaviors and we are ready to ban people out, when necessary

The good thing is that this forum is very technical, so only an expert could actually be doing this without being seen !