Observers and signals are used when two components need to be more loosely coupled, such as the extensions, or when the processing of an event that occurred may be delayed, such as when the display needs to be redrawn after a tool altered the document. For example, tools directly manipulate the document. Direct manipulation is used whenever an action requires a direct response or cannot be delayed. The communication between components is handled via direct manipulation (e.g., method invocation), the Observer 9 design pattern, and, at a lower level, signals 10. This allows the different controllers and views to be accessed through the user’s interface of choice. The Command Line Interface (CLI) and Graphical User Interface (GUI) together form a layer on top of this MVC structure and handle the interaction with the user. Here, the document would be the model, the extensions and tools would be the controllers, and the display would be the view. The Inkscape application follows the Model-View-Controller 8 (MVC) design pattern. The components of the application container are shown in the figure below. This enables users to store, continue, and share their work. The file system allows the application to read and write files to persistent storage. The extension gallery will be discussed later. However, it does depend on the extension gallery 7, which is a separately developed application, and the file system, which is provided by the operating system. Inkscape is mostly a monolithic application. The figure below shows the containers and part of the context of Inkscape. The sections thereafter will explain the components of the application in detail and discuss the quality attributes of the architecture. The upcoming section will provide a high-level overview of Inkscape and in particular its core application.
Inkscape extensions are just lines of code software#
We used tools such as Doxygen 5 to analyse the source code and gprof 6 to view the interaction between the software components. 4 The goal of this essay is to provide an architectural overview and insight into the design of Inkscape in its current state. The source code 3 has grown to almost 600,000 lines of C/C++ code spread over more than 2000 files. It has evolved a lot over the years, and its (architectural) documentation 2 has become outdated. Its development started in 2003 as a fork of Sodipodi 1, which it quickly replaced. Inkscape is an application used to design vector graphics.