| (The descriptions below are partially copied from the 'design philosophy' wiki page of my GitHub project) `carefree-drawboard` made assumptions that: * It is a painful process to spend time thinking and designing the layout of various UIs. * Most user interactions can be abstracted into "send something to server" & "receive something to server". * A completely decoupled system is what we dreamed of, because it can be easily customized, extended and maintained. * An infinite drawboard is capable of building (almost) all the desired applications. So, we derived the following design principles: * Everything is a plugin on an infinite drawboard. * Plugin Styles should be fully declarative and should contain a smart layout system (which should also be declarative). * Plugin Logics should only have access to the data from: > Itself (e.g., some input fields declared by the Styles). > The selecting Node(s). Under these principles, no matter what programming languages (even JSON, if your plugins contain no logics) you are using, you can easily extend the functionality of `carefree-drawboard` by writing plugins. And since: * We love Python. So (currently) we provide a python binding, the `cfdraw` package, for you to write plugins (both styles and logics) using Python. However, theoretically speaking, any backend programming languages are able to write plugins that work with `carefree-drawboard`. I've already wrote a brief introduction in the wiki page about this topic, if you are really interested, please check it out and send feedbacks to me! |