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