I have been using your tool for some years now. I started my bootcamp with 4.2, so I have some iterations of the tool (Speaking to some people I am glad I did not experience the much older ones).
Needless to say I am very happy with the tool and am very fond of all the new features of 9 and looking forward to 10 already.

Yet, lately, something is bugging me again and that's how we need to organize our applications, espaces, datamodel and actions, especially actions. It's missing something and I could not figure it out.
But recently I thought it's my basic background of programming, and that's OOP.

The X-layer archictecture is a start, but it lacks a LOT. and it seems like a nice decoupling of functionality, it's so strict you lack advantages of simple programming stuff like inheritance.
or even give them a protected mode, so public actions, entities are only usable with espaces inside the application.

Even more so with actions, sure, we learn to split actions up, but we end up with tons of actions doing rougly the same thing, yet because we cannot inherit or pass records in a more smart way we have to create seperate actions. I want to create a skeleton-actions and expand on that.
create an interface-espace and build on that.  etc. etc.

Just a figment of my imagination...

Honestly... I don't like OOP in a lot of ways. I think it adds little value to many (most?) projects. Teams spent WAY too much time arguing about what color to paint the bike shed with OOP. "Is this an abstract class with factories for concrete classes or should I write an interface and then implement it?" Etc. etc. etc.

Not a single one of these things benefits the end user... all they want is working code, delivered on time and within budget.

Does OOP deliver that?

If it did, I would be using C# or Java instead of OutSystems.

Like I said, the current struggle atm is too many the same actions, webblocks, just we CANNOT inherit.
it's the other side of the spectrum.
and yes, I agree with you if people get into OOP too much it gets problematic at that side as well.
(I have been in a project where they used K.I.S.S. to the maximum, everything was an object. characters were objects as well)

I am not saying we have to go full force OOP, because than the tool becomes obsolete as well.
but there are parts which could be improved smartly and imho the most gain is with better encapsulation and inheritance.