* Remove unnecesary escape character in question to user when creating
[alpine.git] / doc / tech-notes / introduction.html
blobd729384211fdfad23669c1b920cf6bc1f720e61b
1 <HTML><HEAD><TITLE>Alpine Technical Notes: Introduction</TITLE></HEAD><BODY>
2 <H1>Introduction</H1>
4 <H2><A NAME="design">Design Goals</A></H2>
6 Throughout <EM>Alpine</EM> development, we have had to strike a balance
7 between the
8 need to include features which advanced users require and the need to keep
9 things simple for beginning users. To strike this balance, we have tried
10 to adhere to these design principles: <P>
12 <DL COMPACT>
14 <DT>
16 <DD> - The model presented to the user has to be simple and
17 clear. Underlying system operation is hidden as much as possible.
19 <DT>
21 <DD> - It's better to have a few easily understood commands that can be
22 repeated than to have some more sophisticated command that will do the job
23 all at once.
25 <DT>
27 <DD> - Whenever the user has to select a command, file name, address,
28 etc., the user should be given (or can get) a menu from which to make the
29 selection. Menus need to be complete, small, organized and well thought
30 out.
32 <DT>
34 <DD> - <EM>Alpine</EM> must provide immediate feedback for the user with each
35 operation.
37 <DT>
39 <DD> - <EM>Alpine</EM> must be very tolerant of user errors. Any time a user is
40 about to perform an irreversible act (send a message, expunge messages
41 from a folder), <EM>Alpine</EM> should ask for confirmation.
43 <DT>
45 <DD> - Users should be able to learn by exploration without fear of doing
46 anything wrong. This is an important feature so the user can get started
47 quickly without reading any manuals and so fewer manuals are required.
49 <DT>
51 <DD> - The core set of <EM>Alpine</EM> functions should be kept to a
52 minimum so new
53 users don't feel "lost" in seemingly extraneous commands and concepts.
54 <P>
56 </DL> <P>
58 Just as there were goals relating to the look and feel of <EM>Alpine</EM>,
59 there were
60 equally important goals having to do with <EM>Alpine</EM>'s structure-the
61 things that
62 users never see but still rely on every time they use <EM>Alpine</EM>.
63 While <EM>Alpine</EM>
64 can be used as a stand-alone mail user agent, one of its strongest assets
65 is its use of the Internet Message Access Protocol (IMAP) for accessing
66 remote email folders. In addition, <EM>Pine</EM> (the predecessor of <EM>Alpine</EM>) was one of
67 the first programs to
68 support the Multipurpose Internet Mail Extensions (MIME) specification.
69 With MIME, <EM>Alpine</EM> users can reliably send any binary file to any other
70 person on the Internet who uses a MIME compliant email program. <P>
72 The decision to use IMAP and MIME reflects the importance of
73 interoperability, standardization and robustness in <EM>Alpine</EM>. As you work
74 with <EM>Alpine</EM> more, you will see other features which reflect
75 the same values.
76 For example, <EM>Alpine</EM> enforces strict compliance with RFC 2822, implements a
77 strong mail folder locking mechanism and verifies a process before
78 overwriting any files (e.g. addressbook, expunging messages). <P>
80 <H2><A NAME="components">Alpine Components</A></H2>
82 If you have picked up the <EM>Alpine</EM> distribution, then you already know that
83 <EM>Alpine</EM> comes in a few different pieces. They are: <P>
85 <DL COMPACT>
87 <DT> <EM>Alpine</EM>
89 <DD> The main code from which the <EM>Alpine</EM> program is compiled. <P>
91 <DT> <EM>Pico</EM>
93 <DD> <EM>Pico</EM> is the name for the <EM>Alpine</EM> composer.
94 The <EM>Pico</EM> code is used in two
95 ways: (1) it is compiled on its own to be a stand-alone editor and, (2)
96 it is compiled as a library for <EM>Alpine</EM> to support composition
97 of messages within <EM>Alpine</EM>.
98 <EM>Pico</EM> is <EM>Alpine</EM>'s internal editor invoked when users
99 need to fill in header lines or type the text of an email message. <P>
101 <DT> <EM>Imap</EM>
103 <DD> An API for IMAP. Includes the C-Client library, which is compiled
104 into <EM>Alpine</EM>, and the IMAP server <EM>IMAPd</EM>.
105 C-Client implements the IMAP
106 protocol and also negotiates all access between <EM>Alpine</EM> and
107 the mail folders
108 it operates on, even if the folders are local.
109 The C-Client routines are used for email folder parsing
110 and interpreting MIME messages. <EM>IMAPd</EM> is a separate server that handles
111 IMAP connections from any IMAP-compliant email program. When <EM>Alpine</EM>
112 accesses a remote mailbox, the <EM>Alpine</EM> program is the IMAP client and the
113 <EM>IMAPd</EM> program is the IMAP server. Of course, <EM>Alpine</EM> can
114 use any IMAP-compliant IMAP server, not just <EM>IMAPd</EM>. <P>
116 </DL>
118 <!-- pnuts -->
120 </BODY>
121 </HTML>