Let's define some terminology used for this project.
-
The technology is the clever abstraction. It is performant, modularized, and flexible. You need a mental model present to work with a technology, but once it's in place you can do a lot.
Unfortunately technology doesn't sell. Technology is necessary, but it is not the end goal.
-
The product is the human face on technology. It is specific, and focused. If often uses only one aspect of a technology, but it solves a real human problem.
Designing a product is harder than designing a technology. Smart people find products hard to design, because products are all about compromise.
Node-os is both a technology and a product, so it's important to understand which part we're talking about at any given time. For example:
- [[asgard]] and [[init]] are a technologies, they are clever abstractions that makes building certain os-related products easier.
- [[npkg]] is a product. It's designed to meet a human need, and not require a lot of foreknowledge to use.
- [[help]] is a product. In many ways
help
should be the ambassador for the system. Help is notman
orinfo
. It is not exhaustive; it is focused. Thehelp
command focuses on guiding people through the system. - A few things like the [[FileSystem]] are hybrids of technology and product. We move things around to technically organize the system, but we don't want the file system to seem foreign to users.
What should a users first experience with node-os be like?
users should want to have the node-os experience everywhere
To that end, we want npkg
to be the gateway to a users first experience.
It should quickly facilitate
- installing packages
- running services
- discovering packages
- giving helpful feedback
Where (4) may be most important. There will not be an engineer standing over the should of most people's first node-os experience. You should be able to use node-os from the command line experience alone.
What do we want the first experience to look like? (let's improve on this)
welcome to node-os
type help to get started
$
Typing help
should display
Try the following
1. help npkg learn about the npkg command
2. help home learn about your home directory
$
Ideas
- make
help
stateful, so it can offer you conextual help
Why are people using node-os, and what problems are they trying to solve? Answering these quesitons are important to creating a product that people will want to use.
- people want to run their node app quickly, without fussing around with init config files
- people want to configure a system consistently without puppet/chef or other config-management tools
- people want to write a distributed file system with leveldb and http
- people want to do tcp/ip parsing in user-space with javascript