Smartcore Design notes
SmartCore is an opensource platform for Internet Of thing /Smart home integration. It aims to integrate all things, that can be interfaced to, and present a uniform and intuitively easy to use, interface to the user.
Every aspect of the platform is divided into areas of expertise and interest. The aim is not to mix different competences, so that a contributor will not be burdened with tasks that a irrelevant or unreasonable complicated, for the job at hand. the identified areas of expertise and interest are:
- The user. The users interest is smooth, intuitive access, with a minimum of excess information, unless asked for. Everything visible shall have meaning and possibly expand into grater detail or function if operated. There is basically no text, (That the user has not inputted) in the regular user-interface. All i communicated with icons, colors numbers etc. so that children and computer-illiterate can operate the system with little practice, and no language preferences.
- Owner or installer. is akin to a superuser. The main goal is that the owner can install and configure devices and interactions to work in context with the physical layout of the building, and usage. the owner should be able to perform all tasks through the provided visual system pages. The language used (only when if absolutely necessary) is English.
- The tinker is a person that might understand how to connect electronically interfaced components to a computer. The main competence is probably electronics. But a minimum of programming is also required, to define the communication interface with the device. The tinkerer must provide a set of handler functions, for the SmartCore to operate, and translate that to the protocol and physical connection to the device. The supported programming languages is PHP, C/C++ and hopefully python and other languages will follow soon.
the general idea is that if you want to make a cool theme, you don't have to know about programming. If you know how to connect stuff to a computer, you don't have to worry at all, about user-interface. This skill separation is important to maintain, through out the project, in order not to curb the creativity of the people working and improving upon the platform.