chiark / gitweb /
JPEG support and other fixes from Nick Clark
[ssr] / StraySrc / Announce
1 The Straylight Source Distribution
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4
5 For a long while now, I've been pontificating in comp.sys.acorn.programmer
6 about how clever I am, and how I know how to do things properly.  Most
7 of the regular readers should now be thinking something along the lines
8 of `This [mdw] chap seems to know what he's doing, although I've never
9 seen any of his work.  He's been going on about these libraries and
10 things but we've never seen them or seen any software which uses them.
11 It all seems a bit fishy.'  Well, now's my time to put my money where my
12 mouth is.  Straylight is releasing all of its source code.  Well, the
13 interesting bits.
14
15 The next question ought to be `why?'  Why am I doing this?  Well, there
16 are two reasons, although they're both associated with Linux.  The first
17 reason is that I've `seen the light' of Free software, and want to do
18 something about my heretical past as a Software Hoarder.  I want to give
19 my small contribution to the world, as Freely as the GNU and Linux teams
20 are doing.  And I want to show off a bit, too.  The second reason is
21 that I'm not doing much Acorn work at all any more.  Akasha (my RiscPC)
22 spends most of her time turned off now, in favour of Excessus (my Linux
23 PC), and I don't have the time or the inclination to maintain this
24 rather large chunk of source code any more, so I'm giving it all to the
25 community which inspired it.  It feels slightly like a sort of a swan
26 song as I leave the Acorn world.
27
28 I'll be releasing the code in dribs and drabs over the coming weeks,
29 hopefully in a sensible order, so that all the software can be built
30 with the parts already available.  Unfortunately, most of it was never
31 designed to be source distributed, so there's no guarantees against
32 mutual dependencies.  We'll work it out as we go along, hopefully.  The
33 main components are:
34
35   * Some simple header files and libraries for assembling the code, and
36     some trivial utilities used in the build processes.
37
38   * BAS -- the Basic Assembler Supplement, which allows Basic programs
39     to generate AOF object code.  This is required for some of the other
40     build tools.
41
42   * SDLS -- the Straylight Dynamic Linking System.  This is already well
43     known, but not well used, I think.  Maybe the sources will be
44     interesting to someone.
45
46   * Dynamite -- our dynamic-area heap manager module.  Again, well known
47     software, so maybe the sources will provide some interest.
48
49   * Sculptrix -- Straylight's 3D border rendering module.  I'm very
50     proud of this code.  Provided also is the source to version 1, which
51     was a horrible hack made worse by poor modifications.  Version 2
52     does more, at the same speed, in less space, and more maintainably.
53
54   * STEEL -- the Straylight Extensive Event-driven Library.  This is a
55     grandiose name for a RISC_OSLib more-or-less rewrite.  There are
56     Issues involved here, which I'll try to resolve -- some of the
57     source files aren't `pure' Straylight code, which could cause
58     problems.  I recommend against anyone using STEEL -- it's just
59     needed by Glass, which is a jolly good piece of software.
60
61   * Glass -- Straylight's template editor.  It's actually the second
62     template editor I've written, although I'm thoroughly ashamed of the
63     first one.  It's been around for ages, quietly circulating around a
64     slowly increasing coterie of friends.  I suspect many readers
65     already have copies of Glass they shouldn't have.  Well, as of this
66     announcement, those copies become legal.  I'd be interested in
67     hearing how far this informal distribution had reached.
68
69   * A pile of silly utilities.  There's a mouse speed changer which
70     tries to read the current speed using underhand methods (i.e.,
71     peeking around OS workspace).  There's a rudimentary debugger Tim
72     wrote which might be the start of something useful.
73
74   * Sprinkle -- a little module exactly 256 bytes long which supports
75     linked lists of sprite areas.
76
77   * Constrain -- constrain the mouse pointer to a circle.  This is used
78     in one of Sapphire's custom controls.
79
80   * Sapphire -- not an acronym, but a weak pun on STEEL.  This is
81     STEEL's successor.  It's a comprehensive (I think) run-time support
82     system and RISC OS library for applications written in assembler.
83
84     There are a number of bits of Sapphire which are incomplete:
85
86       -- There's a scripting language, SAIL, which is based on the work
87          Straylight did on the Termite language.  There may be
88          complications on this code.
89
90       -- There's an interface for C programs, but it's very messy.  Many
91          bits of Sapphire require more expressive syntax for declaring
92          data structures than C provides.
93
94       -- There was going to be a wonderful colour selector, but it never
95          really got finished.  The good bits in the current version are
96          the RGB selector window (which is fully functional -- the
97          RGB colour square custom control is my favourite bit) and the
98          HSV colour circle, with its circular mouse constraint.
99
100       -- The threading code needs to be rewritten, and the rest of the
101          library ought to be properly multithreaded or locked.
102
103     My favourite innovations are:
104
105       -- The way filters work in the event manager.  We never needed to
106          change the way events got dispatched, because we got it right
107          the first time.
108
109       -- Custom controls in the dialogue box system.  This one was my
110          idea.
111
112       -- The menu system.  I like the way the same menu blocks can be
113          used for normal and tearoff menus.  (We designed the system
114          together over a pub lunch, but Tim did all the implementation
115          so lots of kudos for him.)
116
117       -- The viewer code, and the background-redrawing gallery stuff.
118          This was mine, although Tim had already done the listbox code
119          on which it was based.
120
121     There are a lot of good ideas in here (in my expert opinion) and
122     some clever tricks too.  I think that anyone maintaining a RISC OS
123     library should look in here.  It is, I hope, like Glass: an example
124     of the benefits of the Second System Effect.
125
126   * Sapphire example programs.  There's a small number of these, to show
127     how we expected people to write Sapphire programs.  They're all
128     lovingly crafted and perfectly formed.  Oh, yes.
129
130 Documentation for all of these is going to be patchy at best.  The
131 libraries are sort-of documented by their header files, and by the
132 examples provided.
133
134 That's all there'll be.
135
136 On the matter of licensing: I'll apply the GNU Library General Public
137 License to as much as I can, and the full General Public License to
138 everything else.  Software which is already OFFICIALLY available under a
139 different licence may continue to be licenced under those terms;
140 however, the existing licences only cover unmodified binaries, so if you
141 make modifications to the software, you're bound by all the restrictions
142 of the GPL.
143
144 Well, thanks for taking the time to read all of this.  It's been great
145 working with RISC OS, but I think I've been doing it for too long.  I'll
146 still hang around Acorn newsgroups and flame people whom I think are
147 being stupid.  I will keep porting to RISC OS in mind as I continue to
148 write, but as far as developing specifically for Acorn is concerned,
149 that's all you get.
150
151 It's 10:30 at night, I'm cold, and I've been typing this for too long.
152 Goodbye.  It's been great.