I don't think those are good analogies - software is pretty abstract and personally I don't think maintaining a reliable software platform that other third-party developers build on top of has much relation to a restaurant. Tweaking random bits of internal code is fundamentally unmaintainable. This is widely understood among professional software developers. There is no way to make that work. The solution is a public documented API which you promise to support. That is what we have done.
I think a better analogy is: imagine a block of flats where any resident is allowed to make any structural, electrical, plumbing, gas, or water alterations, to any part of the building, at any time, without permission from anyone. Chaos would ensue and the result would probably be extremely dangerous. This is not a reasonable way to run a shared building. There are rules about what you can and can't do, and who is allowed to make which changes, specifically to prevent that end result. Residents who complain that they can't just break open a few walls and run another gas pipe through several neighbor's flats are not being unfairly restricted in their freedom to do what they want with their flat - the rules are there to make sure the building can continue to function and be properly maintained in the long term.
Fair points, but the public documented api sometimes doesn't let us put up our christmas tree the way WE want to (the point maybe actually IS to light the tree on fire, not put lights on it). And when I break my project, I am not harming my neighbor. In this case, you are requiring us to build our house to code- not for the sake of any neighbors (because we have none), but for the sake of the county inspector who like easy paperwork. I agree on the point about maintainability... but also, from our side, sometimes a project needs to be done today, not maintained 10 years from now. From your perspective, I get it, but you also have to see it from the side of the developer that is in a huge pickle, that a small tweak could save huge ammounts of time, and that future maintainability of the engine isn't a concern when you can't finish the project... Its back to that, you lose users to other engines that don't even want to leave but have to. Once they get invested in those other systems, they have an even easier time porting every project there.
I have, in many respects, tried to make unity more like construct, because I prefer construct. I have scripts over there that essentially mimic the behaviors I commonly use that come stock with c2/c3... But the more I invest in unity to get around a small problem in construct, the smaller that problem has to be before I dive towards unity.
Like I said, I like working in construct better than unity - and start pretty much any idea in construct, but I have only finished 1 project in construct (and that one involved making external tools in c# to manipulate c3 save files in order to inject data and assets more efficiently and not deal with it in construct... for important reasons :p.
I'm rambling now.