#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass book \language english \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize letterpaper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Standard EMC2 is modular and flexible. These attributes lead many to see it as a confusing jumble of little things and wonder why it is the way it is. This page attempts to answer that question before you, dear reader get on into the thick of things. \layout Standard EMC started at the National Institute of Standards and Technology in the USA. It grew up using Unix as it's operating system. Unix made it different. Among early Unix developers there grew a set of code writing ideas that some call the Unix way. These early EMC authors followed those ways. \layout Quote Eric S. Raymond, in his book The Art of Unix Programming, summarizes the Unix philosoph y as the widely-used engineering philosophy, "Keep it Simple, Stupid" (KISS Principle). He then describes how he believes this overall philosophy is applied as a cultural Unix norm, although unsurprisingly it is not difficult to find severe violations of most of the following in actual Unix practice: \layout Quote * Rule of Modularity: Write simple parts connected by clean interfaces. \layout Quote * Rule of Clarity: Clarity is better than cleverness. \layout Quote * Rule of Composition: Design programs to be connected to other programs. \layout Quote * Rule of Separation: Separate policy from mechanism; separate interfaces from engines. \begin_inset Foot collapsed true \layout Standard Found at http://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008 \end_inset \layout Standard Mr Raymond offered several more rules but these four describe essential characteristics of the EMC2 motion control system. \layout Standard The \series bold Modularity \series default rule is critical. Throughout these handbooks you will find talk of the interpreter or task planner or motion or HAL. Each of these is a module or collection of modules. It's modularity that allows you to connect together just the parts you need to run your machine. \layout Standard The \series bold Clarity \series default rule is essential. EMC2 is a work in progress -- it is not finished nor will it ever be. It is complete enough to run most of the machines we want it to run. Much of that progress is achieved because many users and code developers are able to look at the work of others and build on what they have done. \layout Standard The \series bold Composition \series default rule allows us to build a predictable control system from the many modules available by making them connectable. We achieve connectability by setting up standard interfaces to sets of modules and following those standards. \layout Standard The \series bold Separation \series default rule requires that we make distinct parts that do little things. By separating functions debugging is much easier and replacement modules can be dropped into the system and comparisons easily made. \layout Standard What does the Unix way mean for you as a user of EMC2. It means that you are able to make choices about how you will use the system. Many of these choices are a part of machine integration, but many also affect the way you will use your machine. As you read you will find many places where you will need to make comparisons. Eventually you will make choices, "I'll use this interface rather than that \begin_inset Quotes erd \end_inset or, \begin_inset Quotes eld \end_inset I'll write part offsets this way rather than that way." Throughout these handbooks we describe the range of abilities currently available. \layout Standard As you begin your journey into using EMC2 we offer two cautionary notes: \begin_inset Foot collapsed false \layout Standard Found at http://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008 \end_inset \layout Itemize "UNIX was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things." Doug Gwyn \layout Itemize "Unix is user-friendly. It just isn't promiscuous about which users it's friendly with." Steven King \the_end