I am wondering if it is reasonable to write closed source, paid web apps in Javascript (JS MVC Frameworks like AngularJS, Backbone, Knockout, ...)? I'm concerned because in this type of frameworks you use typically a REST backend for CRUD operations and the majority of business and application logic happens in Javascript which can be looked up by anyone using my app. He can see how i do things. 

When I use for example PHP or Java (Wicket) most of the logic is happening on the server and so a lot less of my source code is exposed. This seems to me a lot safer if I want to have an edge over my competitors, so potentially I earn more money.

So is it reasonable to use JavaScript MVC Frameworks for paid applications? Does it depend on something and if yes on what? 


Question: How does the Unity3D entity system work?
Answer: Unity3D works on top of GameObject-Component model. It's so much different than Entity Component Systems. To my experience it's worse because when you want to code some logic it's put into Script Component, instead of Systems. How different is it to OOP model? Unity3D GameObject contains data and logic - same as in OOP, those components aren't reusable (which is one of reasons for not doing OOP). Of course, you can make some bulletproof conventions which will hold you from mixing data and logic but it might be a pretty hard work to do so continously.

Dependencies. When you work in ECS, every System has an Aspect (it's described which components it manages). Thanks to the Aspect your Components are depended by System and not by other Components. I've seen code where few Components were referencing to each other. When order of execution wasn't set properly, then... total mess. When you refactor Component (logic) dependencies it's better to do it in ONE place, like System, instead of few places (Components).

The another great disadvantage of model used in Unity3D is a problem to manage objects of same Aspect (set of components). In my opinion it is best to go ECS way if possible or something more closer to it. To take that approach in Unity3D, look at @Byte56 answer.