# Open-source software {{app.title}} is free, open-source software. ## License Copyright © 2025 White Magic Software, Ltd. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. The full text of the GPLv2 license can be found at: [https://www.gnu.org/licenses/old-licenses/gpl-2.0.html](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) ## Software architecture [@fig:architecture] illustrates the software's high-level application architecture. The processing pipeline transforms textual content through multiple stages to produce the final document. Each processor in the chain receives a document from its predecessor. This allows each processor to handle a single responsibility, such as curling quotation marks, replacing variable names, or inserting a caret position.  :: Software architecture {#fig:architecture} * The **"Today"** section shows a single flow where a user writes in Markdown, which is then processed and converted into a final HTML output. This is typical of most conversion programs written today: they can only handle a single type of input and a single type of output. * The **"Proposed"** section shows that the architecture can be updated to handle a wider range of input formats, all feeding into a more flexible *Processor Chain*. The two-way arrow indicates that the output from one processing pass can be be fed back into the next process. * The **"Example Processing Combination"** section provides a detailed look at how the system could handle multiple, complex inputs and outputs simultaneously. It shows how different data formats (XML, YAML, JSON, etc.) are processed through dedicated processors (XSLT Processor, R Processor, etc.) to produce a variety of outputs (R Markdown, Markdown, HTML5), demonstrating a more robust and interconnected system.