Merge commit 'origin/master' into HEAD
[urisagit/Stem.git] / FAQ / faq.text
1 S: About M<Stem>
2
3
4 Q: What is M<Stem>?
5
6 A: M<Stem> is a general purpose networking toolkit and a suite of ready
7 to use network applications. Its goal is to transform common network
8 programming to configuration and make uncommon network programming much
9 simpler. Some M<Stem> users will use its suite of applications and
10 modules and just configure them to perform their needed network
11 tasks. Others will create new M<Stem> modules to perform their specific
12 tasks and integrate them with M<Stem>'s standard modules using
13 configurations.  In both cases, M<Stem> will speed up network
14 application development, simplify maintenance, and lower lifetime costs.
15
16
17 Q: Where can I get M<Stem>?
18 A: M<Stem> can now be downloaded by the general public. Go to the 
19 <A HREF="download.html">download</A> page to get the latest version.
20
21
22 Q: What Can I Do With M<Stem>?
23 A: M<Stem> is a general purpose networking toolkit. As such, it can
24 be the backbone or framework of almost any networked (distributed)
25 application you can imagine. M<Stem> is designed with standard modules 
26 that are aimed at specific application niches. Some M<Stem> users
27 want a simple solution to common problems while others need a way to 
28 accelerate network application development. Via this modular design, 
29 M<Stem> can satisfy the differing needs of both groups. 
30
31
32 Q: What Are the Top M<Stem> Applications?
33 A: The most commonly requested applications of 
34 M<Stem> are log management, file distribution, 
35 monitoring and remote command execution. For more on 
36 M<Stem> applications, see the <A href="products.html">niches</A> page.
37
38 QUOTE<
39         Stem Monitoring. \
40         Overloaded Server Appears. \
41         Remediation. \
42         -- U.G. \
43      >
44
45 Q: Why Should I Use M<Stem>?
46 A: You should use M<Stem> if:
47 <UL>
48         <LI><P>You are tired of reinventing the wheel for each
49         network application you build. M<Stem> provides you with all
50         the common services that a network application needs and
51         makes them very simple to use.</P></LI>
52
53         <LI><P>You don't want to be forced to rely on a commercial
54         monolithic network tool that everyone hates to use. M<Stem> is
55         low cost and Open Source. You can easily write new modules
56         to customize M<Stem> to your needs.</P></LI>
57
58         <LI><P>You want to dramatically reduce the development
59         and maintenance costs of developing your new
60         network applications. M<Stem> tranforms common network
61         programming to configuration. Even if you create new M<Stem>
62         modules, it is very simple to connect them together with
63         M<Stem> configurations. This lowers your development time and
64         costs in many ways.</P></LI>
65
66         <LI><P>You just want to use a well-designed network system that
67         will make your profession much more enjoyable. M<Stem> is
68         architected to be easy to use at both the configuration and
69         coding levels. Our goal is for all M<Stem> users to enjoy
70         working with it and reduce the frustrations and stress of
71         network management.</P></LI>
72 </UL>
73
74 <P>These are just a few of the many reasons why 
75 M<Stem> should be in place on your network.  
76 If you have questions on how M<Stem> will benefit 
77 your individual needs, <A HREF="mailto:faq@stemsystems.com">please contact us</A>.
78
79
80 Q: Who Is Using M<Stem>?
81 A: A start up firm hired M<Stem Systems> to implement a specialized
82 web crawler.  M<Stem> will be used as
83 the communications backbone for this multiprocessor system and
84 it will interconnect and manage all of its components. Some of
85 those components include subprocesses doing the page fetches,
86 site objects, html page parsers, custom filters, crawl management
87 and a database.
88
89 QUOTE<
90         Divers search limpid pools. \
91         Precious Perl is summer's find, \
92         But Stem is loved more. \
93         -- D.G. \
94 >
95
96 Q: How can I be notified about M<Stem> updates?
97 A: M<Stem Systems> has a email list dedicated to M<Stem> updates.  To
98 subscribe, send an empty email to: news-subscribe@stemsystems.com.  This
99 is a low volume list used for sending important news regarding M<Stem>
100 (ie - new releases).
101
102 S: M<Stem> Design
103
104 Q: Do I Need To Get Rid Of [Commercial Application] To Use M<Stem>?
105 A: No, M<Stem> can run in parallel with all of 
106 your existing applications. As long as M<Stem> 
107 can have access to its own TCP ports (which can be configured to
108 any available ones), it has no need to conflict with any of your current
109 systems.
110
111 QUOTE<
112         superglue the net \
113         tie the machines together \
114         stem keeps it all sane \
115         -- U.G. \
116 >
117
118
119 Q: What is a M<Stem> Hub?
120 A: A M<Stem> Hub is a single Perl process running 
121 M<Stem>. It can function as a complete standalone 
122 application or be connected to other M<Stem> Hubs in a
123 networked application. M<Stem> Hubs contain the 
124 M<Stem> core system and M<Stem>
125 Cells that have been created by configuration files. 
126
127 <P>For more on this, read the 
128 <A href="technotes/arch_notes.html">architecture notes</A> document or find it 
129 in the Design directory of the tarball.
130
131 Q: What is a M<Stem> Cell?
132 A: A M<Stem> Cell is a Perl object that has 3 major characteristics:
133
134 <OL>
135    <LI><P>First, it is registered as a Cell in this Hub with a cell name and 
136         an optional target name</P></LI>
137    <LI><P>It has a set of methods designated to handle messages directed at 
138         the Cell</P></LI>
139    <LI><P>It sends messages to other cells.</P></LI>
140 </OL>
141
142
143 S: M<Stem> Features
144
145
146 Q: What is a M<Stem> Message?
147 A: M<Stem> Messages carry commands and data between 
148 M<Stem> Cells. They are addressed with a 
149 Hub/Cell/Target triplet. 
150
151 <P>Messages can be any one of a wide range of types including command, 
152 data, log, stderr etc. They can carry any form of data to a maximum 
153 (to be designated later) size. 
154
155 <P>See
156 <A HREF="technotes/message_notes.html">message notes</A> document for more.
157
158 QUOTE<
159         Nets catch more than fish. \
160         Data's trapped beneath the waves. \
161         Stem frees; packets breathe. \
162         -- D.G. \
163 >
164
165
166 Q: How Hard Is M<Stem> To Install/Configure?
167 A: M<Stem> is very easy to install. It only requires 
168 Perl 5.005_03 and one code module Event.pm that you can get from 
169 <A HREF="http://search.cpan.org">CPAN</A>. The rest of
170 M<Stem> is comprised of pure Perl modules.
171
172 <p>M<Stem> has a step by step installation
173 script that guides you through the installation process and any
174 required modules that are necessary for the normal functioning of M<Stem>.
175 It is easy to use and allows you to customize the installation to
176 your liking or take the default install.
177
178 <P>Much more on this can be found in the 
179 <A href="technotes/config_notes.html">config notes</A> 
180 document or in the Design directory of the tarball.
181
182
183 Q: Can M<Stem> Do Guaranteed Messaging?
184 A: M<Stem>'s core design does not directly support 
185 guaranteed message delivery. It was designed this way, as the 
186 technical market that M<Stem> targets
187 doesn't have a strong requirement for this feature as the
188 commercial/e-business markets have. 
189
190 <P>Future releases of M<Stem> will support guaranteed delivery via a 
191 separate module that is now under development.
192
193
194
195 Q: Does M<Stem> Use XML?
196 A: M<Stem>'s messages are designed to not be specific 
197 to any format or encoding. They can carry data structure in any format the 
198 designer wants, including XML.  In fact, the message itself can also be in 
199 any format as long as it is properly identified and a module to decode that 
200 format is installed. 
201
202 <p>M<Stem> is currently in the process of including
203 <a href="http://www.yaml.org" name="YAML">YAML</a> as its primary format for
204 messages, configuration files, and logs, but as demand arises other message formats
205 including XML will be supported.
206
207 <P>One longer-term goal is that message formats from many other
208 systems will be supported by gateways modules, which will translate
209 between M<Stem> and external messages.
210
211 Q: What Kind Of Security Does M<Stem> Use?
212 A: M<Stem> doesn't do direct authentication and secure
213 transmissions. Currently it relies upon industry standard utilities such as ssh and
214 stunnel to provide the secure socket connections between 
215 M<Stem> hubs (processes).  Security is a great concern to
216 everyone and M<Stem> development is looking into the possibilities
217 of supporting various mechanisms and levels of security (i.e. - ssh, ssl, etc)
218 through configurable modules.
219
220 QUOTE<
221         Information rain \
222         Can drown the sleepy server, \
223         But for Stem's shelter. \
224         -- D.G. \
225 >
226
227
228 Q: Can M<Stem> Do Central Configuration Management?
229 A: The log management project under development has this requirement. The
230 lists of log files on each system that need to be monitored are
231 maintained on the central system. Configuration files are autogenerated
232 from those lists and distributed to all the M<Stem> hubs in this network
233 application. The same mechanism can be used to distribute configuration
234 files for other applications and M<Stem> can also notify them to reload the
235 new files.
236
237 Q: Can M<Stem> Handle My Content Distribution?
238 A: Distributing content is similar to distributing configuration files and
239 will use the same mechanisms. What content is distributed to where can
240 all be easily controlled by M<Stem> configurations without any additional
241 programming.
242
243
244 S: Developing with M<Stem>
245
246
247 Q: Can I Extend M<Stem> Myself To Suit Our Needs?
248 A: M<Stem> is designed to be modified and extended very
249 easily. You can copy existing modules or use design ideas from them to
250 created new Cells for your own needs.
251
252 <P>The high level Cell API hides the complexities of
253 network communication and message transfer, leaving you free to focus on
254 the specific design and coding of your custom Cells.
255
256
257 QUOTE<
258         Just one message lost \
259         could stop your business blooming. \
260         Fear not: grasp the stem! \
261         -- D.G. \
262 >
263
264 Q: Is There a M<Stem> Tutorial?
265 A: M<Stem> Development has created a <a href="cookbook.html" name="cookbook">cookbook</a> of examples that demonstrates the
266 design of M<Stem> cells from the simplest form up
267 to various levels of complexity.
268
269
270 Q: Should I Modify M<Stem> On My Own Or Use M<Stem>'s Development Team?
271 A: If your requirements are simple, and you have skilled staff to do the
272 work, there's no reason not to develop and maintain your own M<Stem>-based
273 systems. If your applications are complex applications, your staff new
274 to M<Stem>, or your time-frame short, you will probably find it more
275 cost-effective to let M<Stem Systems>' expert team develop your system for
276 you.
277
278 <P>Otherwise, M<Stem Systems> can assist you in the design, development and
279 configuration of your application. How much assistance can be provided
280 depends on the customer subscription deal and any other contracts. If
281 you do not have a subscription, our support will be limited to bug fixes
282 and email and you will have to maintain your modified code on your own.
283
284 Q: Which Operating Systems Support M<Stem>?
285 A: M<Stem> runs runs without any modification under any Unix flavor (Solaris,
286 Linix, FreeBSD, etc.)  Support for WinX is in the planning stage and is
287 expected to be released in the near future.
288
289 Q: What Is M<Stem>'s License?
290 A: M<Stem> will be released under the <a
291 href="http://www.gnu.org/copyleft/gpl.html" name="GPL">GNU General
292 Public License</a> starting with version 0.06.  Our intent is for
293 M<Stem> to be free for non-commercial use.  Commercial licenses can be
294 purchased through M<Stem Systems>.  Please contact <a
295 href="mailto:info@stemsystems.com">Stem Systems</a> for more
296 information regarding commercial license.
297
298
299 S: M<Stem Systems>
300
301
302 Q: What Is M<Stem Systems>?
303 A: M<Stem Systems> is the company which is developing and maintaining M<Stem>. It
304 owns the copyright to the M<Stem> codebase and is releasing it to its
305 customers and the open source community. M<Stem Systems> also sells support
306 subscriptions to the M<Stem> user community.
307
308 QUOTE<
309         Black chips nurture life. \
310         Data shoots out, seeking Spring. \
311         Stem makes all fertile. \
312         -- D.G. \
313 >
314
315 Q: What Is The Business Model Of M<Stem Systems>?
316 A: M<Stem Systems> has three business models,
317 <ol>
318         <li>Development Projects</li>
319         <li>Support Subscriptions</li>
320         <li>3rd Party products and VAR's</li>
321 </ol>
322
323 Q: How Much Does M<Stem> Cost?
324 A: 0.06 will be under the
325 <a href="http://www.gnu.org/copyleft/gpl.html" name="GPL">GNU General
326 Public License</a>.  M<Stem> can be used freely for non-commercial
327 use.  For commercial and acedemic licenses please contact us at <a
328 href="mailto:sales@stemsystems.com">Stem Systems</a> for more
329 information.
330
331
332 Q: Who Are Your Technical Advisors?
333 A: Our technical advisors are listed <A HREF="company.html">here</A>.
334
335 S: Miscellaneous
336
337
338 Q: How Can I Learn M<Stem>?
339 A: The best way right now is to start with the technical notes and get a
340 basic understanding of M<Stem>, its architecture and
341 its nomenclature. Then run the various demo scripts and read their 
342 configuration files. Developers will go next to the Cell documentation that 
343 describes each Cell's function, their attributes and how to configure it. 
344 Once some insight into each Cell is attained the next step would be to go
345 through M<Stem>'s <a href="cookbook.html" name="cookbook">cookbook</a>
346 of examples put together by the developers of M<Stem>.  This will
347 show you how to extend M<Stem> with your own Cells.
348
349 <P>We are discussing the
350 creation of classes with a training firm when the demand arises.
351
352 Q: What Is The Future Of M<Stem>?
353 A: M<Stem> will constantly be growing its Cell library and adding support for
354 new features. Whenever any repeated networked operations can be
355 identified, M<Stem> will create a M<Stem> Cell to 
356 perform it. Then M<Stem>'s
357 users can easily integrate that new Cell without programming or needing
358 to re-invent that wheel.
359
360 Q: Who Created M<Stem>?
361 A: M<Stem> was created by Uri Guttman, and is the 
362 culmination of his long career in systems architecture and development. He has combined a
363 quarter century of experience designing and implementing event-driven
364 systems with his love of Perl to produce a powerful, yet easy-to-use
365 framework for network applications. 
366
367 <P>For more on M<Stem>'s creator, see the 
368 <A HREF="http://stemsystems.com/company.html">M<Stem> Team biographies</A>.
369
370 Q: How (and why) Was M<Stem> Conceived?
371 A: M<Stem> was created when its designer was contracted 
372 to a network application development group who were constantly 
373 putting out fires and creating a massive ad hoc system. It was clear that they needed a
374 framework to give structure to their network application design. 
375 M<Stem> was the result.
376
377 QUOTE<
378         Coders or firemen? \
379         System in conflagration. \
380         From ashes rose Stem. \
381         -- U.G. \
382 >
383
384
385 Q: What Does M<Stem> Stand For?
386 A: M<Stem> is not an acronym or an abbreviation, rather it is named from the
387 real word 'stem' which has several dictionary meanings that map well to M<Stem>.
388
389 <DL><DT><B>v. tr.</B></DT>
390 <DD><OL><LI>To stop or hold back by or as if by damming; as in "stem the tide"</OL></DD></DL>
391
392 <DL><DT><B>n.</B></DT>
393 <DD><OL><LI>A slender stalk supporting or connecting another plant part, such as a leaf or flower.
394         <LI>A connecting or supporting part.
395 </OL></DD></DL>
396
397 <DL><DT><B>n.</B></DT>
398 <DD><OL><LI>A line of ancestry : STOCK; especially : a fundamental line from
399 which others have arisen. as in "stem cell" in biology.</OL></DD></DL>
400
401
402 QUOTE<
403         To keep your network \
404         flowering when the heat's on, \
405         it needs a strong stem. \
406         -- D.C. \
407 >