File: goals.html

package info (click to toggle)
fox1.6 1.6.57-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 17,592 kB
  • sloc: cpp: 148,083; sh: 4,294; ansic: 2,345; makefile: 1,422; perl: 119
file content (266 lines) | stat: -rw-r--r-- 12,145 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<html>
<head>
<link rel="stylesheet" href="page.css" type="text/css">
<title>Goals and Approach</title>
</head>
<body bgcolor=#ffffff link=#990033 vlink=#990033 alink=#990033 text=#000000>

<!---- TOPIC TITLE WITH LOGO--->
<table border=0 cellpadding= cellspacing=2 width=100% ><tr><td><a href='http://www.fox-toolkit.org' target=_top><img src='art/foxlogo_small.jpg' border=0></a></td><td width=100% valign=bottom id="HEADLINE"><b>
Goals and Approach  <A href='goals.html' target="_top" align=left><font  size=-2>[Remove Frame]</font></a>
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
</p>
<!--- TOPIC TITLE WITH LOGO --->

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
Goals
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
</p>
<!--- TOPIC TITLE -->

<ul>
  Developing a single application for multiple platforms
  is a difficult task.&nbsp; The most significant issue is the need for a
  clean solution for developing Graphical User Interfaces [GUI's].&nbsp;&nbsp;
  FOX aims to address this by providing a single GUI library that can run
  on different computer hardware and operating system environments.&nbsp;
  The benefits to application vendors and developers are clear:
  <BR>&nbsp;
  <OL>
  <LI>
  <B>Development effort to support multiple environments
  is substantially reduced.</B>&nbsp; After development, your FOX based application
  is only a compile away from running on other operating systems.&nbsp; When
  multiple hardware and software combinations are required by customers operating
  in a heterogeneous environment, using a single GUI system such as FOX is
  clearly the most cost-effective method to achieve the goal.</LI>

  <BR>&nbsp;
  <LI>
  <B>Availability of your software on other platforms
  will engender additional revenues.&nbsp;&nbsp;</B> Without the necessity
  of additional development&nbsp; work, the cost of&nbsp; which would have
  to be amortized over the number of sales, additional revenues can be engendered
  by having your software be available on multiple hardware and software
  environments.&nbsp; Software development is a costly undertaking; because
  of this, software vendors typically limit the number of platforms to a
  small subset of the platforms being used by <I>all</I> customers, effectively
  leaving certain customers in the dark.&nbsp; FOX allows applications to
  be developed on one platform, then simply recompile the application on
  a number of other hardware/software systems.&nbsp; Because the cost of
  doing so is negligible, this approach will be able to generate positive
  cashflow even with low sales volumes.</LI>

  <BR>&nbsp;
  <LI>
  <B>Captive audience.</B>&nbsp; If the application
  you're developing is available on all platforms, you may be able to create
  a captive customer base on hardware/software systems where your competitor
  is absent; you may in fact even be able to charge premium prices.&nbsp;
  Using the additional revenues derived from these customers, your product
  will be able to derive a steady addional revenue stream which will allow
  you to compete more aggressively against your single-platform competitor.</LI>

  <BR>&nbsp;
  <LI>
  <B>Higher Quality.</B> For programmers, the benefits
  of multi-platform development v.s. single platform development are the
  additional confidence and code quality that compiling under different environments
  will give.&nbsp; For example, I have compiled FOX on a number of different
  systems, and different compilers will discover different types of code
  bugs.&nbsp; By compiling on all these different systems, FOX has gotten
  quite a bit better in the course of time.<BR>
  <BR></LI>

  <LI>
  <B>Control Your Destiny.</B>&nbsp; Programmers understand
  it as a matter of course that they need to continually work to track the
  changes in a system's API's.&nbsp; But what if the system vendor is also
  your competitor?&nbsp; In such a case, you <B><I><U>will</U></I></B> loose,
  sooner or later.&nbsp; The FOX GUI Library provides a platform-independent
  escape hatch that relies only on core system facilities which can be expected
  to be present on any modern operating system.</LI>
  </OL>

</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
Approach
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
</p>
<!--- TOPIC TITLE -->

<ul>

  FOX attains the goal of platform independence
  by eliminating all&nbsp; system dependencies from its public interfaces.&nbsp;
  In fact, a typical FOX application may not even need to include any system-specific
  header files at all!&nbsp; By not including e.g. X-Windows header files,
  applications can not even accidentally slip up and introduce platform dependencies.
  This strategy is also carried out inside FOX itself.&nbsp; Thus, large
  parts of FOX are in fact defined entirely in FOX itself.&nbsp; The only
  dependencies are concentrated in a few select base classes where this couldn't
  be avoided.
  <P>The following salient points highlight some fundamental
  benefits of FOX <I>vis-a-vis</I> other purported platform independent toolkits:
  <BR>&nbsp;
  <OL>
  <LI>
  <B>Eliminate all platform specific header files</B>.&nbsp;
  Applications should only include header files from FOX, and a few header
  files for such basic system services as opening files etc.</LI>

  <BR>&nbsp;
  <LI>
  <B>Internal Layering. </B>FOX itself relies largely
  on FOX base classes, and therefore a large fraction of FOX itself is platform
  independent as well.</LI>

  <BR>&nbsp;
  <LI>
  <B>Rely only on low-level system facilities.
  </B>FOX
  relies only on core system facilities, and does NOT wrap native GUI libraries
  or toolkits.&nbsp; This has the following benefits:</LI>

  <BR>&nbsp;
  <UL>
  <LI>
  <B>Identical behaviour.</B> The behaviour will be
  close to identical on all systems, as the behaviour is completely controlled
  by the FOX implementation, rather than some underlying library.</LI>

  <BR>&nbsp;
  <LI>
  <B>Identical looks. </B>FOX applications will look
  the same no matter what system you're running it on.</LI>

  <BR>&nbsp;
  <LI>
  <B>Ability to <I>subclass</I>.</B>&nbsp;
  Because FOX is written from the ground up in C++, and is NOT a C++ wrapper
  around some other legacy toolkit or library, FOX Controls may be subclassed
  and extended by application programmers.&nbsp; Moreover, if these additions
  can be done by calling upon FOX built-in facilities, those additions will
  be platform independent also.</LI>

  <BR>&nbsp;
  <LI>
  <B>Higher Quality.</B> It is a given in software development that those
  facilities which are most frequently used are the ones which are most stable.&nbsp;
  Thus, by using core system facilities instead of higher-level transient
  API's, the impact of the underlying system's instability is minimized.&nbsp;
  A chain is as strong as the weakest link, and while I can not control the
  quality of the links, I can minimize the number of them.</LI>

  <BR>&nbsp;
  <LI>
  <B>Higher Speed.</B> Eliminating layers between
  FOX and the underlying system not only increases the application's quality,
  it will also make it faster, and reduce memory overhead.</LI>

  <BR>&nbsp;
  <LI>
  <B>Go to the Bedrock.</B> FOX's core facilities needed
  from the target system are things like mouse/keyboard event handling, and
  basic graphics facilities such as drawing of lines and rectangles [and
  some other system facilities].&nbsp; In most operating systems, these are
  fairly mature API's and not subject to much change.&nbsp; If you want to
  build a big building, you need to go down to the solid bedrock.&nbsp; This
  is what FOX does.</LI>

  <BR>&nbsp;</UL>

  <LI>
  <B>FOX is extensible.</B>&nbsp; The FOX library is designed to be open-ended
  and extensible. What this means is that unlike other libraries which take
  the approach of wrapping legacy GUI toolkits, FOX may be extended with
  <I>Custom
  Controls</I> and Widgets which will set your application apart from the
  others.&nbsp; Building Custom Controls is extremely easy in FOX, as it
  is essentially just a matter of C++ subclassing.</LI>

  <BR>&nbsp;
  <LI>
  <B>FOX is available under Library GNU Public License.
  </B>Since
  FOX is distributed in source form under LGPL, you have the ability to make
  changes or extensions to FOX to suit your needs.&nbsp; Having FOX inspected
  by 1000's of programmers all over the world will iron out any bugs it may
  have very quickly.&nbsp; This process is already under way.</LI>
  </OL><p>
  I care a great deal about software quality; I imagine,
  so do you.&nbsp; In the course of my programming life, I have ran into
  many situations where the bugs I needed to fix were not in my own code,
  but in someone else's, and of course I didn't have the source.&nbsp; Thus,
  the quality of my own software was limited by the quality of someone else's.&nbsp;
  Problem is, the developers of the libraries and software I depend on are
  frequently not motivated to make their software correct.
  <P>This has made me a firm believer in the <I>GPL</I>
  or <I>Open Source</I> model of software development. FOX was started in
  part because I didn't want to explain to our customers that the reason
  X or Y didn't work was because of the broken software or libraries on their
  machine.&nbsp; The only way one can create high-quality applications is
  to bring as much of the underlying system under one's control as possible.&nbsp;
  Hence the <I>Go to the Bedrock </I>philosophy.
  <P>FOX is not perfect.&nbsp; But as the source code
  is available under LGPL,&nbsp; it has the advantage that its imperfections
  can be addressed as soon as they are discovered.
  <BR>


</ul>

<!--- TOPIC TITLE -->
<p>
<table width=100% cellpadding=0 cellspacing=2><tr><td width=100% valign=bottom id=HEADLINE><b>
Why Windows?
<br><img src='art/line.gif' width=100% height=1></b></td></tr></table>
</p>
<!--- TOPIC TITLE -->

<ul>

  Some people may argue that porting FOX to Windows ``helps'' Microsoft.&nbsp;
  It doesn't.&nbsp; Porting FOX to Windows <I>does</I> however help <I>application
  vendors</I>:- instead of subjugating to a proprietary lock-in GUI environment,
  they can now ship their application on a large variety of platforms, like
  LINUX, and this with little or no additional effort, and derive additional
  revenues.
  <P>In addition, being distributed under <a href="http://www.gnu.org">LGPL</a>,
  it lowers costs, and does
  not incur any license fees for distribution.&nbsp;&nbsp; Being distributed
  under LGPL also has the concomittant benefit that a large number of people
  may inspect the source code, and spot its inevitable deficiencies; thus,
  more bugs are found and they are found more quickly.&nbsp; Remember, the
  person which is the most motivated to fix a bug is the one bitten by it;
  under the <a href="http://www.opensource.org">Open Source development model</a>,
  this person can actually localize, and possibly fix the bug himself, and
  <A HREF="mailto:foxgui-users@lists.sourceforge.net">contribute</A> those changes to the library.

  <P>Finally, I believe application developers will find the FOX library
  a more attractive alternative.&nbsp; For a software developer, the FOX
  Library is far more easy to learn, and offers some unique benefits, such
  as tying Widgets [Controls] together with little effort, being able to
  subclass from existing Widgets to make custom ones, and last but not least
  the ability to modify FOX's source code itself if necessary.&nbsp; FOX
  represents what I consider to be the ideal GUI Library; I wrote FOX to
  use it myself!

</ul>


<!--- COPYRIGHT -->
<p>
<table width=100% cellpadding=0 cellspacing=0><tr><td width=100% valign=top id=HEADLINE align=right>
<img src='art/line.gif' width=100% height=1><font size=-1>
Copyright &copy; 1997-2005 Jeroen van der Zijp</font>
</td></tr></table>
</p>
<!--- COPYRIGHT -->
</body>
</html>