2ee739cc |
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. |