Initial revision
[ssr] / StraySrc / Announce
CommitLineData
2ee739cc 1The Straylight Source Distribution
2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
4
5For a long while now, I've been pontificating in comp.sys.acorn.programmer
6about how clever I am, and how I know how to do things properly. Most
7of the regular readers should now be thinking something along the lines
8of `This [mdw] chap seems to know what he's doing, although I've never
9seen any of his work. He's been going on about these libraries and
10things but we've never seen them or seen any software which uses them.
11It all seems a bit fishy.' Well, now's my time to put my money where my
12mouth is. Straylight is releasing all of its source code. Well, the
13interesting bits.
14
15The next question ought to be `why?' Why am I doing this? Well, there
16are two reasons, although they're both associated with Linux. The first
17reason is that I've `seen the light' of Free software, and want to do
18something about my heretical past as a Software Hoarder. I want to give
19my small contribution to the world, as Freely as the GNU and Linux teams
20are doing. And I want to show off a bit, too. The second reason is
21that I'm not doing much Acorn work at all any more. Akasha (my RiscPC)
22spends most of her time turned off now, in favour of Excessus (my Linux
23PC), and I don't have the time or the inclination to maintain this
24rather large chunk of source code any more, so I'm giving it all to the
25community which inspired it. It feels slightly like a sort of a swan
26song as I leave the Acorn world.
27
28I'll be releasing the code in dribs and drabs over the coming weeks,
29hopefully in a sensible order, so that all the software can be built
30with the parts already available. Unfortunately, most of it was never
31designed to be source distributed, so there's no guarantees against
32mutual dependencies. We'll work it out as we go along, hopefully. The
33main 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
130Documentation for all of these is going to be patchy at best. The
131libraries are sort-of documented by their header files, and by the
132examples provided.
133
134That's all there'll be.
135
136On the matter of licensing: I'll apply the GNU Library General Public
137License to as much as I can, and the full General Public License to
138everything else. Software which is already OFFICIALLY available under a
139different licence may continue to be licenced under those terms;
140however, the existing licences only cover unmodified binaries, so if you
141make modifications to the software, you're bound by all the restrictions
142of the GPL.
143
144Well, thanks for taking the time to read all of this. It's been great
145working with RISC OS, but I think I've been doing it for too long. I'll
146still hang around Acorn newsgroups and flame people whom I think are
147being stupid. I will keep porting to RISC OS in mind as I continue to
148write, but as far as developing specifically for Acorn is concerned,
149that's all you get.
150
151It's 10:30 at night, I'm cold, and I've been typing this for too long.
152Goodbye. It's been great.