Audacity, exploded

Paul Licameli <[email protected]>
Newsgroups gmane.comp.audio.audacity.devel
Message-ID <CAKUg33r9oNYWxbQDe5AoKt-DvLzLtYT7Bs2s2j_-qg-8Qx8iBA@mail.gmail.com>
Attached is the dependency graph showing my latest progress in my
experimental branch, decomposing Audacity into libraries and modules.

"Modules" are features of Audacity separated into optional drop-ins.  Any
one can be selectively disabled (and all other modules dependent on it must
be disabled too), and a version of Audacity with reduced capabilities can
still run.

"Libraries" represented by octagons are pieces of code that Audacity still
needs so it can run, but they can be built independently of the main
program and perhaps reused in another program that implements an
alternative user interface.

The size of the executable in the release build on macOS is only 3.1 MB,
compared with 27.7 for version 3.0.0.  The size of the application package
gets larger, perhaps mostly because of the symbol tables.  The space
economy isn't important, rather the proportion of the whole that has been
moved out is important, now almost 88%.

wxBase represents a restricted subset of wxWidgets that excludes all
graphical interface and use of the wxApp object.  Gray boxes and octagons
depend on it but not on full wxWidgets.  The parts not dependent on wxBase
now include AudioIO and all four subclasses of Track (which are not the
same as the views of tracks).

I would like to increase the number of gray nodes in the graph.  In
particular I would like to have CommandManager independent of full
wxWidgets, using our own custom abstraction of menus, for which the main
program injects the wxWidgets based implementation at startup.  And in fact
I have written that facade, but it's in another long branch that I have not
merged with this branch.

I would also like to increase the number of modules that have no direct or
indirect dependency on Audacity -- though there are still paths from them
to the libraries.  As more things move out of Audacity into libraries, more
such opportunities open.  It is already so for note track, label track,
time track, tags, and tags ui (the editing dialog for tags).

PRL

_______________________________________________
audacity-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-devel
modules.dot.svg (image/svg+xml, 211.3 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.