Building extensible software is a goal and a often a metric of good software design. It is becoming more and more common for users to also contribute to the development of the software that they use--especially in the domains of computer graphics and gaming. Terms like 'modding' software have been around since at least the early 90s when the popular game Doom allowed for users to create their own content and modify the behavior of the program. Behind these programs there thus must be a mechanism for allowing users to 'hook' into the main program. In this talk, I will be showing several software developer kits including Autodesk Maya 3D (C++), Unity3D (C#), Unreal Engine (C++), and QT Modeler(C), and present a case study of how they are designed. At the end of the design discussion I will present how to get started building your own plugin system, and what considerations must be taken in mind (e.g. does the application or plugin manage resources, what should be exposed in the API, how do you embed a scripting language, and how should you distribute your plugins). Attendees will leave the presentation with practical knowledge on how to build software that can be extended by their user base.
Mike Shah is currently an Associate Teaching Professor at Northeastern University in the Khoury College of Computer Sciences. Mike's primary teaching interests are in computer systems, computer graphics, and software engineering. Mike's research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics.
Along with teaching and research work, Mike juggles occasional consulting work as a 3D Senior Graphics Engineer in C++ and his YouTube channel https://www.youtube.com/@MikeShah