Things I've Done For AROS
- Worked on Zune:
- Implemented support for easy creating of external MCC classes (for Zune).
This involved extending the 'genmodule' tool to scan the source files for
methods and generating code for the dispatcher and library intialization,
and adding support in the build system. This makes it very easy to create
- Made it possible to compile many core classes as external .mui files,
which makes it possible to avoid including non-critical ones if space
is tight (like on the demo floppy). This also saves some memory, since
classes won't be loaded into memory unless they are actually used.
Implementing this required adapting the the Zune sources and makefiles,
and also tweaking the MCC/MUI support in the genmodule tool which wasn't
- Implemented alphablended ghosting of disabled buttons, which looks much
better than the old grid pattern. The latter is still used if the
screenmode isn't hi-/true-color or memory is tight.
- Implemented "outline" style for frame titles.
- Various minor cleanups and bugfixes.
- Implemented PrefsWindow, SystemPrefsWindow and PrefsEditor external Zune
classes which implements the appearance and operations common to all
- Rewrote Font Prefs to use Zune and the PrefsWindow and related classes for
consistent look and code reuse.
- Implementing the AboutWindow external Zune class which implements a common
nice-looking "about dialog" usable by all AROS programs.
- Extracted the Clock and Calendar classes from Time Prefs and made them
public external MCC's, to allow for more code reuse.
- Rewrote Utilities/Clock to use Zune and Clock.mcc. It's now basically just
a thin wrapper around Clock.mcc, instead of doing all the drawing on it's
- Implemented a new About dialog for AROS which uses the the new logotype and
shows more information, like authors and sponsors.
- Various cleanups to the build system:
- Simplified the way language catalogs are built by implementing a
%build_catalogs macro in the build system.
- Removed the usage of so called "source archives" in the tree. Several
libraries were using this feature, which is no longer considered very
useful and complicated the build system for no good reason.
- Fixed the configure script to complain about missing tools that are
required instead of having the build break in subtle ways a lot later.
- Implemented a system/policy for allocating method and attribute identifiers
in Zune (they have to be unique). Up until now the selection of identifiers
has been basically random.
- Implemented a simple HD installation program for AROS/i386-pc, which included
implementing the "Partition" and "Format" commands, and updating/fixing
the bootloader installation/setup program "install-i386-pc".
- Implemented benchmarks of various things (BOOPSI method call and object
creation overhead, exec.library memory allocation routines), which led to
some investigation in possible optimizations.
- Implemented several BOOPSI functions as macros to increase performance and
make them usable from ROMmable libraries. This increased the performance
method invocation by about 21% (benchmarked) and probably similar
increases in the other cases (not benchmarked yet).
- Worked on backporting/merging the MorphOS intuition.library sources back
into AROS (the MorphOS Team grabbed our intuition.library sources for
MorphOS and have done many improvements since then).
- Worked on documentation:
- Implemented the new documentation system and website, which included
rewriting, restructuring, updating and reviewing a large amount of
- Updated the guide on how to compile AROS so it actually contains correct
instructions, compared to earlier.
- Worked on the roadmap/requirements for AROS 1.0.
- Worked on Wanderer (file manager, workbench.library and icon.library):
- Implemented support for starting programs "the workbench way", and
finished up OpenWorkbenchObjectA(). Also added support for opening
directories with it.
- Implemented a small Open CLI utility, which you can use to open objects
just like they would have been doubleclicked on in Wanderer. For example,
running "Open S:" will open the S directory in a new Wanderer window.
Running "Open S:Startup-Sequence" will most likely load Startup-Sequence
into MultiView (depends on what default tool the icon has).
- Reworked the functions which handle loading of icons in icon.library, so
that they are more compatible with the AmigaOS 3.5 API. They should
implement most of the semantics correctly now. Also implemented a file
identification function, which is used for finding the apropriate def_#?
icon for files without any icon. It uses datatypes.library, and is very
flexible. Basically, we have the equivalent of "DefIcons" functionality
in AROS now, but nicely integrated into the OS.
- Reimplemented the execute command dialog as an external program and
improved it a bit. It now looks better, is properly localized and
remembers the last command executed. This also required some fixes in
workbench.library (for getting the default search path), which in turn
required some fixes in dos.library.
- Added simple support for deleting files. Since all tools are implemented
as external programs, I had to add an API to workbench.library for
notifying the file manager when directories/files have changed (temporary
until we have proper notification support in dos.library).
- Implemented drawing of icon labels using outline mode, to make them better
visible also on dark backgrounds. Changed the default font to be bold,
since it looks better. Also implemented drawing selected icons with a
"brightening" effect, so that you can actually see what icons you have
- Many various changes/fixed/implementations in workbench.library and
icon.library that I don't recall in detail now. :-) Most of the work I
have done on Wanderer has been "under the hood", and not visible to users.
- Imported the high quality truetype Bitstream Vera font family and setup the
build to include them by default.
- Hacked a bit on the TCC (Tiny C Compiler) port, so that it can produce
AROS executables itself. I've successfully used it to compile a small
program (which opens a window) under AROS with it!
- Worked a bit on the clib, adding some stub functions, and did quick ports of
many GNU tools: diffutils, patch, grep, m4. Also ported GNU make, based on
the old non-ixemul AmigaOS port (which needed updating a lot), although I
haven't actually finished yet (it crashes badly).
- Various build fixes and source cleanups all over the tree. Also, fixed a LOT
of compiler warnings. There were so many of them during a normal build of
AROS that you tend to ignore them, which is bad since they might actually
help you discover bugs. It's much better now, although there is still some
work to be done in this area.
- Implemented a custom package format that uses bzip2 compression to squeeze
as much as possible onto the AROS/i386-pc boot/demo floppy.
- Made AROS/i386-pc bootable from CDROM (basically made the CDROM filesystem
handler ROMable and fixed the DOS booting procedure).
- Organized the last couple of stable snapshots of AROS, as well as setting
up the new nightly builds (writing build scripts, setting up mirroring
- Spearheaded a copyright and licensing overview (together with a written
licensing policy) to clean up the repository.
- Ported some programming languages and miscellaneous programs to AROS:
- Helped with improving the BGUI port.
- Implemented C:Join.
- Administration of the logotype contest: creating the gallery/voting page,
writing the news items, processing the contributions and similar.
- Miscellanous bug fixes, updates and changes all over the system and other
things I don't remember anymore...