Hacker News new | ask | show | jobs
by carefree0910 1135 days ago
(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!