Delft Students on Software Architecture
A blog on the architecture of open source software systems written by students from Delft University of Technology
Jitsi Meet: Architecture Design
In this section a global overview of the Jitsi infrastructure is provided. If you just started contributing to the project, we highly recommend reading this section thoroughly.
Components Jitsi comprises a collection of projects:
Jitsi Meet - WebRTC compatible JavaScript application that uses Jitsi Videobridge to provide high quality, scalable video conferences. Build upon React and React Native Jitsi Videobridge (JVB) - WebRTC compatible server designed to route video streams amongst participants in a conference Jitsi Conference Focus (jicofo) - server-side focus component used in Jitsi Meet conferences that manages media sessions and acts as load balancer between each of the participants and the videobridge.
Jitsi Meet
March 29, 2021
KiCad - A Technical and Sociological comparison
Welcome back to yet another blogpost that’s all about the KiCad EDA. Unfortunately this will be the last blog from this series and if you have not yet read our previous blogs, you should! In this week’s blog we are going to take a look at Conway’s law and socio-technical congruence. The KiCad program gives you the opportunity to design schematics and printed circuit boards and generate the files to have them fabricated.
KiCad
March 29, 2021
libGDX - Variability
Usage and deployment variability is one of the main causes of software complexity and is an intensively researched topic1. libGDX is no exception – programs built upon this framework are often deployed on many different kinds of systems, while these programs each use the framework in their own way. That is the strength of libGDX, but this strength also incurs costs. We look into the main causes of variability and how they interact.
libGDX
March 29, 2021
Stellar - Distribution Analysis
Figure: Stellar Logo Stellar’s vision is to integrate blockchain technology with the current financial system. The primary differentiation between the two is the fact that blockchain is decentralised. It is a form of a distributed system. Thus, it is worth analysing how the distributed system works, what information it exchanges between its components, whether there is any redundant information in case of a failure, how reliable this distributed system is, and what trade-offs are made within the system.
Stellar
March 29, 2021
openHAB - openHAB's implementation of OSGi
openHAB: openHAB’s implementation of OSGi In our second essay, ‘From Vision to Architecture’, we briefly introduced openHAB’s architecture. As part of that, we introduced the standard on which openHAB is developed, namely OSGi (Open Services Gateway initiative). We learned about OSGi containers, services, and bundles, which was necessary to describe the architecture. In this essay, we want to dig a little deeper and get our hands dirty on finding out how openHAB has implemented this OSGi framework.
openHAB
March 29, 2021
RustPython - Quality & Evolution
Hello again and welcome to our third blog on RustPython! Today we’ll be discussing the quality of the RustPython system, and how to protect it as the code evolves. For RustPython this is especially important as it is still in an early stage of its development, making clarity and technical debt hard to ignore. We’ll start by considering what the essential software quality processes are for RustPython, describe how it ensures these (hint: Continuous Integration is involved), and then look at the current quality of the code and the culture behind it.
RustPython
March 21, 2021
fastai - Quality and Evolution
Fastai is a Deep learning library with Jupyter notebooks to allow for expository programming1. The documentation and the Python source code of the library are automatically generated from these notebooks. The combination of these characteristics makes this library unique with regards to what it offers, but also how it (might not) safeguard(s) the quality and architectural integrity of the library.
This post evaluates the quality and evolution of fastai, with special attention to the rate of change.
Fastai
March 17, 2021
ThingsBoard - Architecture
From Vision to Architecture Previously, we introduced ThingsBoard1, an open source IoT platform on which you can read out and interact with all your IoT devices. We did this by describing its goals and the context in which it operates2. In this post, we will talk more about ThingsBoard’s underlying system architecture.
The ThingsBoard application is built following a layered, service-oriented architecture, according to the standards for Java EE applications3
Thingsboard
March 15, 2021
Odoo - Modified web architecture of the HR toolkit
In the previous essay, we talked about the product vision of Odoo. In this essay, we will elaborate on the architecture of the project and specifically the HR module.
Odoo consists of a three-tier architecture1. This architecture divides the application into the following tiers (see figure below):
The presentation tier, consisting of a user interface (UI) on the web The application tier, where logic of the application resides The data tier, where data is stored and managed.
Odoo
March 15, 2021
ThingsBoard - Distribution Analysis
ThingsBoard - Distribution Analysis After providing and gaining much deeper insight into ThingsBoard’s IoT platform and architecture1, we now present a deeper analysis of ThingsBoard’s most exciting aspect: the distribution architecture.
Distributed Components To recap, ThingsBoard consists of six main distributed components which are, (IoT) devices, ThingsBoard Transport microservices, Thingsboard Core microservices, ThingsBoard Rule Engine microservices, ThingsBoard Web UI and Third-Party systems.
Figure: ThingsBoard Architecture Devices represent the range of various types of IoT devices which can be connected to ThingsBoard such as, thermostats, sensors, gps trackers, etc.
Thingsboard
March 29, 2021
VSCode - Software variability
Software is often not just one thing, once it becomes big enough many different use cases show up. Different groups of people would like to use the software in a variety of ways. From small things such as a visual change to bigger differences such as the compatibility with certain operating systems. In this essay, we will discuss the variability present within Visual Studio Code. We will first take a look at the overall variability of the system, followed by a discussion on the way in which this variability is managed, concluding with a section describing how Visual Studio Code implements its variability systems.
Visual Studio Code
March 29, 2021
XWiki - Variability Analysis
Variability is an important aspect of the architectural design of XWiki1. It is highly configurable, supports a lot of different database systems and servlet containers, and can be extended with more than 600 extensions that add features to the application. We will first discuss the variability of XWiki at installation and of the run-time functionality. We will continue talking about the ways variability can be managed from a stakeholders perspective and finally dive a bit deeper into one technical detail of XWiki to discuss the way variability is implemented in XWiki, concluding with some design choices.
XWiki
March 29, 2021
Variability in Inkscape
Inkscape is an application that is used to design vector images. There exist a lot of different users of vector images; from a web-designer in need of simple icons, to a CNC cutting hobbyist, to a professional graphics designer. All these stakeholders have diverse needs and priorities in what they require from Inkscape. Therefore, Inkscape greatly benefits from a high level of variability. The ability to install Inkscape on the three main Operating Systems, Inkscape’s extensibility, and the configurability of the user interface are all aspects that define Inkscape and are useful to its stakeholders.
Inkscape
March 29, 2021
NetworkX - Community
NetworkX, a Python package, allows users to perform a variety of network analysis tasks.
The open-source package attracts a large and varied community. In our final blog-post of this series, we will analyse NetworkX’s community and highlight its relationship to its architecture.
One can draw a bidirectional relationship between NetworkX and its community. NetworkX and its maintainers foster an environment for the community to thrive, and the community influences the architecture of the project to facilitate its feature-rich and simple interface.
Networkx
March 29, 2021
The Highly Configurable Platform of Odoo
Enterprise resource planners (ERP’s) are known for their complexity and flexibility to fit the needs of possibly any company. Odoo does not deviate from this as they allow their users to fully configure what apps are ready to use. As this subject is very important for Odoo, we decided to discuss variability in detail. More specifically, we will investigate what configurability means for the platform and how it’s achieved. As with previous blog posts, we will be focusing on the core of Odoo and the HR toolkit where needed.
Odoo
March 29, 2021
Bitwarden - Architecting software for security
Introduction Bitwarden strives to build a safe and secure password manager that everyone can use1. In our previous posts, we have discussed this vision, how it translates to software design decisions and to the code base of the project. This week we want to lay the focus on the security of the Bitwarden project. As a password manager security is a key component of the Bitwarden product.
Users trust the encryption utilized by Bitwarden as well as the company with all of their logins or files.
Bitwarden
March 29, 2021
IntelliJ - Variability management
This is the final blog posts in a series where we analyzed different aspects of IntelliJ IDEA. If you find yourself lost when reading this essay, please check our previous posts1,2,3 for more context.
Overview In this post we’ll discuss various aspects of variability management around the IntelliJ IDEA. We’ll start with a model of the variability, then we’ll discuss the variability management. Finally, we’ll touch upon how this variability management is implemented in code.
IntelliJ IDEA
March 29, 2021
Kubernetes and Sustainability
In our previous blog post, we went in-depth on the topic of quality and evolution. Today, we are going to discuss the sustainability aspect of Kubernetes. We try to answer questions such as: How green are Kubernetes and the cloud? How can you use Kubernetes sustainably? Is the work environment safe, respectful, and encouraging development? Which aspects of the project organisation could be further improved to integrate sustainability? Read along to find out!
Kubernetes
March 29, 2021
Matplotlib - From 0.63.0 to 3.4.0
In earlier essays, we have discussed matplotlib’s product vision, architecture, and quality and evolution 1 2 3. In this essay, we will focus on the variability features of matplotlib. Matplotlib is an open-source graphics package for python so all features are essentially available for every user without a need to select them from a distributor or something. It is however up to the user to customize the software to their demands.
Matplotlib
March 29, 2021
NVDA, Variability for Usability
In the previous three articles, we presented various insightful analyses of NVDA by exploring the codebase. In the last article of this series, we will focus on the variability of the great screenreader software NVDA, which aims to make the computer freely accessible for blind and visually impaired individuals.
In the software architecture lecture, the variability is explained as the following1:
the ability of a software system to be efficiently extended, changed, customized or configured for use in a particular context.
NVDA
March 29, 2021
ElectricityMap - Variability Analysis
This is the last part of our series about the open-source project ElectricityMap. Previously we have talked about the product vision, the architecture, and the quality assurance of ElectricityMap. In our last essay, we will be talking about variabilities within ElectricityMap. We will cover the various features/variabilities present in the system, how variabilities are managed and how they are implemented.
Variability modeling Modern interactive software almost always entails the ability for certain levels of configurability, where the software’s performance changes based on user demands or actions.
Electricitymap
March 29, 2021
OBS - Variability Analysis
Galster first introduced “software variability” in 2015 1 Later on, Meinicke et al. divided it into two types, functional and non-functional variations2. Functional variations can be shown as functional enhancements which are good for users, while non-functional variations are the same set of functions realized on different hardware platforms. So we will discuss the variability of OBS Studio from the above two forms.
Non-functional variations Different platforms As a software, the variability in platforms of OBS reflects on offering software based on different operating systems.
OBS Studio
March 28, 2021
Apache Kafka - Distribution Analysis
Apache Kafka is a event streaming service that works as a distributed log. Before diving into how Kafka is distributed, we will look at a high level overview of Kafka’s workflow and its architecture.
Distributed Components of Kafka Kafka offers a way for systems to read and write data in real-time. It has a few important components you should be aware of. To transfer events as information, in real-time and without forcing a consumer to read all data, topics are used.
Kafka
March 28, 2021
RustPython - Architecture.MD
Brief introduction For our last essay, we decided to create an architecture.md file for the RustPython repository. Since the current documentation coverage of the RustPython project is less than 10%, we feel creating an architecture.md will provide the most benefit. It will serve as a good way to help new contributors understand the code architecture of RustPython. In addition to this, it also closes the gap between occasional and core contributors.
RustPython
March 28, 2021
PaddleOCR - Variability Makes It Splendid
This is the fourth article of the series relevant to PaddleCOR. This essay will mainly analyze the variability of PaddleOCR. If you are interested in this content, you can also visit our former ones.
Variability Modeling Variability Management Variability Implementation Mechanism Reference Variability Modeling In this section, we will identify the variabilities/functionalities offered by PaddleOCR and introduce the benefits for stakeholders as well as the incompatibilities between these variabilities.
Paddleocr
March 28, 2021
pip - Variability analysis
The previous three essays described the product vision, architecture and quality assessment of pip. This essay will discuss the variability features of pip. pip allows a lot of configuration, while it still allows users to run pip on all operating systems with all versions of Python 3. Therefore, it would be interesting to take a deeper look into the variability features of pip and how they handle it. This essay will discuss how pip handles different hardware, operating systems, and how users can configure different commands suiting their personal needs.
Pip
March 26, 2021
Theia and Variability
In previous posts, we focused on Theia’s product vision, architecture, and quality and evolution123. In this post, we would like to introduce another essential aspect of Theia: variability. Since Theia is designed to support users in creating customized IDEs and using them on various platforms, it follows that Theia is strongly variable in nature. In the following essay, we will first identify Theia’s variable features and their incompatibilities, and then build feature models.
Theia
March 24, 2021
fastai - Education
Fast.ai offers in-depth applied deep learning courses, ranging from utilizing vision models to recommender systems and NLP to simple regression problems. After analyzing the fastai repository, we will now look into the core mission of fast.ai, learning. The central question we want to answer in this essay is: What is new in the digital learning experience of fast.ai?
To answer this question, we will first give an introduction to the different learning resources of fastai.
Fastai
March 24, 2021
Inkscape - Quality and Evolution
Being a large open-source project, Inkscape relies on contributions from a wide collaborative community to develop its vector graphics application. As such, it is challenging to ensure that the desired quality attributes like functionality and correctness are sufficiently met.1 Inkscape does employ processes to ensure quality, like the use of test suites, adherence to coding standards, and continuous integration pipelines. Nonetheless, Inkscape leverages its large active user community to find and report bugs which are then tackled by developers.
Inkscape
March 22, 2021
VSCode - Quality and Evolution
The software quality of a codebase is very important for the longevity of a software system. The quality of the code, the testing process and the amount of technical debt all factor into the ease in which a system can evolve and be maintained. In this essay we will discuss the ways in which the team working on Visual Studio Code have handled the challenges of maintaining such a large codebase.
Visual Studio Code
March 22, 2021
ThingsBoard - Quality
Quality and Evolution After an elaborate evaluation of ThingsBoard’s vision and the application’s architecture, we hereby present a review of different quality and maintainability aspects of the ThingsBoard open source system.
Software Quality Processes Thingsboard’s code base contains some tests for the backend code, but does not contain any useful end-to-end tests. In total, the last succeeding CI build on the master branch contains 603 tests, covering 75% of the classes, 44.
Thingsboard
March 22, 2021
Jitsi Meet: Quality and Evolution
Jitsi is a fast growing software package, which requires a flexible development culture. Especially during the Covid-19 pandemic the demand for Jitsi Meet and similar web conferencing software has exploded. This forced rapid innovation and focus on scalability from the core team. Besides these recent developments, the Jitsi community has an established work flow. The core team decides the direction of the project and takes lead in implementing core features, and the community addresses and implements features that are less crucial.
Jitsi Meet
March 22, 2021
KiCad - The quality beneath KiCad’s surface
Hi all, once again we are back to deliver you a blog post of our favorite electronic design automation (EDA) program, KiCad! In an EDA program, it is possible to design schematics and printed circuit boards and export files to have them fabricated. This is already the third blog post of the series. Previous blog posts gave a high-level description of KiCad high-level description of KiCad, blog post 1, and analyzed its architecture, blog post 2.
KiCad
March 22, 2021
libGDX - Quality and Evolution
The quality behind software systems is an interesting topic to study, as it is a very broad concept. One important factor is, for example, the quality of documentation, which plays an important role in understanding the system. Also, the quality of software itself should be assured, which is done, for example, by writing test suites or by making use of continuous integration. In this post, we discuss the libGDX project in terms of quality and evolution.
libGDX
March 22, 2021
Odoo’s Take on Keeping a Massive Project Clean
The codebase of the Odoo platform is incredibly massive, sizing up to 1.3 million lines of code (calculated with cloc1, excluding POT files which are mostly translations), aggregated since 2005. Keeping this code clean is a difficult task, especially since it’s written mainly in Python and Javascript—languages that do not offer so much compile-time checking as C# or Java for example. In this article, we investigate how Odoo controls the project to keep its quality high.
Odoo
March 22, 2021
XWiki - Quality and Evolution
The first ever release of XWiki was in 2003 1, making this the year that XWiki turns 18. In the time that XWiki has existed, technology has changed enormously and for any software to keep up with these changes, a lot of active development must be done. In order for an application to be functioning despite these changes, keeping its code quality of a high standard is critical. In this blog post we will talk about different software quality processes, continuous integration, test processes, general code quality of hotspots, the quality culture of XWiki and the technical dept gathered.
XWiki
March 22, 2021
Bitwarden - Quality and Evolution
Bitwarden strives to build a safe and secure password manager that everyone can use1. In our previous posts we discussed this vision and how such a vision translates itself to a software architecture. This week we will discuss the quality and evolution the Bitwarden software has been through. As a password manager security is a key component of the Bitwarden product. For such a product clean code is not only a system to keep the project maintainable and readable for developers.
Bitwarden
March 22, 2021
Matplotlib - Quality and Evolution
The overall software quality of matplotlib Having a general software quality process means that all contributing parties understand the requirements and the project’s contribution guidelines. Matplotlib ensures this by providing an elaborat developer’s guide, even detailing to people who have never used it how to use git, which potentially helps non-tech-savy maths people who are interested in contributing. These guidelines ensure that contributions are consistent.
First and foremost, the guide explains what kind of contributions can be made and what the coding guidelines are.
Matplotlib
March 22, 2021
NVDA, Promise of Quality
As mentioned in our previous articles, NVDA screen reader is an open source project with the primary goal of making computers accessible for blind and visually impaired people. In this article, we will look at the steps that the NVDA community takes to ensure the system quality, so that NVDA can achieve its primary goal and be stable and reliable for users.
Overview of System Quality Processes In this section, we give an overview of how NVDA maintains the system quality throughout the development processes.
NVDA
March 22, 2021
Kubernetes - Quality and Evolution
In the previous blog post, we discussed the architecture of Kubernetes and the different views on it. This blogpost will focus on the quality and the (recent) evolution of Kubernetes. We will try to answer the questions including, but not limited to, What are some of the conventions used?; What is the role of test coverage?; Which components are the hotspots right now? How is the quality culture in general?; Does Kubernetes have technical debt?
Kubernetes
March 22, 2021
ElectricityMap - Quality and Evolution
ElectricityMap In our previous blogpost, we have explained some design principles and architectural views of ElectricityMap. In this essay we will cover the quality and evolution of ElectricityMap.
Software Quality A large part of software quality stems from the quality of the code itself. Projects that lend themselves to large amounts of spaghetti code1 suffer from shoddy programming practices, difficulties in maintaining source code, and are simply not fun to work on.
Electricitymap
March 22, 2021
openHAB - Quality and Evolution
openHAB: Quality and Evolution Table of Contents Software Quality Processes Continuous Integration Processes Test Processes Hotspot Components Quality Culture Technical Debt Software Quality Processes The health care system is full of fixed processes that are in place to ensure patient safety. A patient is tested for a penicillin allergy before taking the antibiotic. A pre-anaesthesia checkup is in place also to test the sedation before an operation. Similarly, systems have software quality (assurance) processes to ensure that the system meets specific quality objectives before releasing the code into the world.
openHAB
March 22, 2021
NetworkX - Quality and Evolution
In the third essay of this series, we will describe the Software Quality Assurance (SQA) processes applied by the project and analyse the source-code for quality. These processes ensure that any version of the package (including development versions) function as expected.
To recap, NetworkX is a python library for complex-network analysis, which has varied use-cases and stakeholders.
Overall Software Quality Processes NetworkX makes the entire SQA process robust, using the following
Networkx
March 21, 2021
InteliJ - Quality and Evolution
IntelliJ IDEA is an open source IDE developed by JetBrains, it strives to be the best Java IDE.
Overview In this blog we will discuss the various aspect of the quality and evolution of IntelliJ IDEA. First, we will describe the overall software quality process, then the CI/CD and tests. After that, we will discuss the code hotspots and their code quality, the culture surrounding code quality and finally, we will discuss the technical debt of the project.
IntelliJ IDEA
March 21, 2021
OBS - Quality and Evaluation
OBS Studio was started in 2013 by Hugh “Jim” Bailey and quickly grew with the help of many online collaborators working to improve the software. In the present day, the software is community-driven with over 400 contributors. Because there is no real company, the autonomy must be very solid for the software development to run well
Software quality process A method to ensure the development of OBS Studio is the use of software quality processes and how they are applied.
OBS Studio
March 21, 2021
Apache Kafka - Quality and evolution
Kafka is a big open source application which is trusted by 80% of all Fortune 100 companies1. The software quality processes of Kafka play a large role in generating this trust.
Distributed Systems Test Testing a distributed data system with only unit tests and integration tests is hard. The issues that plague the application in production cannot be simulated well on this level of testing. This is why the Kafka community created a tool called ducktape2.
Kafka
March 21, 2021
Stellar - Quality and Evolution
Figure: Stellar Logo Software quality is an essential factor in the success of a software project. It impacts the system’s reliability and, therefore, the user’s trust, which is especially important for virtual currency holding systems such as Stellar. In this essay, we will look at the processes that Stellar has to ensure a high standard of software quality. We will go into the technical details with their CI setup and testing system and highlight the most often-changed and impactful components.
Stellar
March 21, 2021
Spark - Distribution Analysis
Spark - Distribution Analysis Introduction of distributed components of Spark This essay mainly talks about the distribution components of Spark. Unlike traditional distribution Internet service, distributed computing has a quite different architecture.
Spark is well known for its powerful distributed calculation ability. The three main components that are critical to the distributed calculation of Spark are Spark cluster manager, Resilient Distributed Dataset(RDD) and Directed Acyclic Graph(DAG).
Cluster manager The cluster manager is another important part of the distributed calculation of Spark.
Spark
March 20, 2021
Spark - Quality and Evolution
Spark - Quality and Evolution Spark quality control As the base stone of the supercomputing area, Spark uses many methods to ensure code quality.
Unit test: The Scala API and Python API are the most popular Spark interfaces, so most tests are based on these two APIs. For Scala, Spark uses Scala built-in unit tests. For Python, Spark has its unit test library. Style checker: Style checkers are essential for code readability and maintenance.
Spark
March 20, 2021
Quality Process - To PaddleOCR and Beyond!
PaddleOCR is an ultra-lightweight OCR tool for extracting texts from pictures, which can be further integrated with other software systems or embedded devices. This week’s blog will explore the software quality and integration process of this effective OCR tool mainly based on its Github and the paper1 published by PaddleOCR developer team.
Overall Software Testing Processes Key Elements in Continuous Integration Hotspot!Which Part is Mostly Updated? Pull Request Analysis Technical Debt: Code Shows the Fact Reference Overall Software Testing Processes Software testing has a prescribed order in which things should be done to guarantee the user experience of software, serving as the ‘guardian’ of software quality.
Paddleocr
March 20, 2021
Theia: Quality and Evolution
Overview Previously, we looked at Theia’s vision and architecture1 2. In this post, we will focus on the software quality and evolution of the system.
The open-source nature of Theia enhances the quality of the software in multiple ways. More than 200 developers from all over the world and bring different talents and experiences to the project3 4. Contributing is done in many ways, from reporting bugs and asking questions, to reporting feature requests and creating pull requests.
Theia
March 17, 2021
pip - Quality and Technical Debt
The previous two essays described the product vision and architecture of pip. This essay will discuss the code base and software quality processes of pip. pip utilises continuous integration, tests and thorough code review to keep the code quality up to standards. Continuous integration runs several checks to ensure that all tests pass and all code adheres to pip’s code style. Thorough code review pushes maintainers and contributors to write efficient solutions.
Pip
March 17, 2021
Bitwarden - From Vision to Architecture
Main architectural style Bitwarden’s main vision translated into a architectural relevant sentence is as follows: Build a safe and secure password manager that everyone can use 1. In the same slide and presentation, the Bitwarden company states that this lead to four early architectural decisions:
Cloud native Scalable Flexible Enterprise friendly These architectural decisions go hand in hand. Making a the system scalable requires making it native to the cloud.
Bitwarden
March 15, 2021
VSCode - From Vision to Architecture
Main Architectural Style Let’s start by taking a look at the project as a whole. As stated in the Source Code Organization document1, the project takes both a layered as well as a modular approach to software architecture for the core package. This core package is built to be extended using the Extension API to provide nearly all features that exist in VSCode. The layer model of the core starts with a base package which provides “general utilities and user interface building blocks.
Visual Studio Code
March 15, 2021
KiCad - The glue that makes KiCad stick
Long ago in the primeval times sea animals made the transfer from water to land. Ever since these needed legs to stand on and so does KiCad1. The legs of KiCad consist of three applications, which together make KiCad, KiCad (project manager), Eeschema (schematic editor) and Pcbnew (PCB designer). These applications are standalone, the sole dependency between them is communication.
Let’s explore some of the main advantages of this approach. To commence each of the applications can be easily maintained, updated and deployed.
KiCad
March 15, 2021
Kubernetes - From Vision to Architecture
In the previous blog post, we discussed Kubernetes' key attributes and where Kubernetes could head in the future. In this blog post, we go from Kubernetes' vision to its architecture. To find out how its properties are realised, we aim to answer questions such as: which architectural style is applied? What do the container, component, connector, and development views look like? Why has Kubernetes designed its architecture in such a way?
Kubernetes
March 15, 2021
libGDX - Architecture
Architecture plays a key role in software systems around the world, it defines the way a system is structured. The architecture of libGDX is an interesting topic to study. In order to get to know more about the system behind this framework we discuss the important architectural aspects of the libGDX framework in this blog post.
First of all, we discuss the general architectural style. Next, is a description of the different architectural views.
libGDX
March 15, 2021
Inkscape - From Vision to Architecture
Inkscape is an application used to design vector graphics. Its development started in 2003 as a fork of Sodipodi1, which it quickly replaced. It has evolved a lot over the years, and its (architectural) documentation2 has become outdated. The source code3 has grown to almost 600,000 lines of C/C++ code spread over more than 2000 files.4 The goal of this essay is to provide an architectural overview and insight into the design of Inkscape in its current state.
Inkscape
March 15, 2021
Apache Kafka - From Vision to Architecture
In this essay we explore Kafka’s architectural elements and relationships, and the principles of its design and evolution.
Streaming as an Architecture Before we talk about Kafka’s architecture, we would first like to define streaming systems. Streaming systems are processing engines that are designed to process data, that is generated continuously by one or more data sources.
These generated data records could be a variety of things, changes in the stock market, geo-location of a user, sensor outputs, user activity on a website and so on.
Kafka
March 15, 2021
Jitsi Meet: The Architectural Decisions
In this essay, we explore how the fundamental concepts and properties of Jitsi Meet are realized through the system’s architectural elements and relationships, as well as the principles of design and evolution. We look at the different components that Jitsi Meet consists of and how these interact with each other, at runtime and in architecture. Finally we also look at the two APIs that are included in the product.
Main architectural style Jitsi Meet consists of several main applications, like the web application and the applications for Android and iOS.
Jitsi Meet
March 15, 2021
matplotlib - From Vision to Architecture
From one liner figures to full customizabilty Matplotlib is a standalone visualization component, used by users in different contexts, for different use-cases, within the Python environment. It offers multiple levels of abstraction and customization, having a layered architecture, with 3 main building blocks: scripting, artist, and backend. 1
Figure: Matplotlib’s layered architecture Now, let’s zoom in each one.
Scripting - mimics MATLAB’s interface In our first essay we emphasized that the “why” behind matplotlib was to replicate the ease of use of MATLAB.
Matplotlib
March 15, 2021
XWiki - From Vision to Architecture
This week’s blogpost will be about the architecture design of XWiki. XWiki is a generic web development platform that is used for creating a diverse range of collaborative applications1. To get a good grasp of how the application is designed, different views of the platform will be discussed. We will start with its main architectural style, followed with a container view of the application. We will continue discussing its components and the connections between them.
XWiki
March 15, 2021
NetworkX - Architectural Style
In the second blog of this series, we explore the architectural elements and relationships apparent within NetworkX, peering through the lens of various different architectural views orginiated from the C4 model1.
To recap, NetworkX is a python library for complex-network analysis, which has varied use-cases and stakeholders.
1. Main Architectural Style NetworkX primarily utilises the Model View Controller (MVC) pattern. The MVC pattern is a commonly used design pattern in software architecture.
Networkx
March 15, 2021
pip - The architecture
In our last blogpost, we described the product vision of pip. In this blogpost, we will dive deeper into the architecture of pip. We will discuss a few different architectural views of pip and also discuss some made design choices.
Main architectural style pip uses a component-based architectural style for their project. A component-based architectural style focuses on the decomposition of the design into individual functional or logical components. These components represent well-defined communication interfaces containing methods, events, and properties.
Pip
March 15, 2021
The Building Blocks of NVDA
In our previous blog NVDA’s vision, we gave an overview of the screen reading application NVDA, which aims to help visually impaired people access their computer. In this blog, we dive into the source code of NVDA and analyze the project from a developer’s point of view.
Architectural View In Cesare Pautasso’s book Software Architecture: Visual Lecture Notes1, he gives two viewpoints of analyzing software architecture, the descriptive architectural view and the prescriptive architectural view.
NVDA
March 15, 2021
IntelliJ - From Vision to Architecture
Overview In this post we dive deeper into the the architectual overview of the code base. We will start with the architectural style and patterns used in the IntelliJ IDEA code base. Next we will dive deeper into the containers, components, connectors, development and run time view to get a better understanding of the code base. Afterwards, we will dive deeper into the SDK IntelliJ provides in order to allow developers to further extend the functionality.
IntelliJ IDEA
March 15, 2021
ElectricityMap - From Vision to Architecture
ElectricityMap We have explained the product vision in our previous blogpost. In this essay we will cover the software architecture of ElectricityMap, its' architectural views and design principles.
Architectural Style It was quite a task trying to identify the underlying architecture of electricitymap. Neither the documentation on the GitHub page nor the website really state an explicit architecture on which electricitymap was built. After some time we reached out to the developers on the Slack channel and they confirmed that our conclusion was correct.
Electricitymap
March 15, 2021
PaddleOCR - An Elegant And Modular Architecture
This essay is going to research PaddleOCR from the perspective of its architecture. We first derive its architecture style - pipe-and-filter and blackboard patterns from its working mechanism. Then we illustrate the containers and components to describe their structure. Furthermore, we analyze PaddleOCR from development and run-time views. At last, we simply show some API design principles that PaddleOCR applies.
PaddleOCR’s Architectural Style Trade-off! The Tricky Architecture Architecture Structure Design Development View Runtime.
Paddleocr
March 15, 2021
openHAB - From Vision to Architecture
openHAB - From Vision to Architecture In our previous post, an introduction was given on how openHAB operates and came to be. In this post, we will dive more into the openHABs distribution. At the end of this post, you should have a good understanding of the system and its architectural elements and relationships.
Table of Contents Main Architectural Style Containers View Components View Connectors View Development View Run-time View Realizing Key Qualities API Design Principles Main Architectural Style OSGi The standard on which openHAB is being developed is called OSGi.
openHAB
March 15, 2021
OBS - Architectural Decisions
In our last essay, we talked about the product vision of OBS Studio, which is a software for live streaming and recording, and this essay focuses more on the underlying architecture of OBS. The OBS community carried out a code refactoring in 2016, in order to adapt to the use of multiple platforms. After the refactoring, the code can now be viewed on OBS Studio Github. The objectives of the new architecture are: make it multi-platform, separate the application from the core, and easier to extend and simplify complex systems1.
OBS Studio
March 14, 2021
Spark - From Vision to Architecture
Spark - From Vision to Architecture Spark’s general introduction can be found in Essay1. We start for architectural analysis by a general introduction of the vision underlying Spark and its next step. In this essay, we would like to introduce a more detailed architecture of Spark.
Spark architecture As discussed in our first essay, a summary for Spark application architecture can be illustrated by the following graph.
Figure: The Spark architecture From the aspect of applications, the most obvious architecture is model-view architecture.
Spark
March 14, 2021
RustPython - From Vision To Architecture
From Vision To Architecture In the previous blog, we gave you a first impression of what RustPython looks like and what it aims to achieve. This time, we’ll be taking a look under the hood to find out what the main architecture of the interpreter looks like and how the individual components interact with each other. 🧐
Main architecture Choosing the main architectural styles or patterns used in an application is an important decision.
RustPython
March 14, 2021
Stellar - From Vision to Architecture
Figure: Stellar Logo Last week we examined Stellar and its vision on banking. The underlying architecture used to design the Stellar platform supports this vision. This post will look into this architecture and how it relates to Stellar’s product vision. More specifically, we will discuss the individual components and their relations and how design decisions impact operations.
Architectural Style Above all, Stellar is a decentralised and distributed architecture.
Stellar
March 14, 2021
Theia: From Vision to Architecture
Eclipse Theia is an extensible framework for developing fully-fledged multi-language Cloud & Desktop IDE-like products. In a previous post we discussed Theia’s vision1 and in this post we delve deeper into the architectural patterns that inform the design of Theia at every level of the system.
As mentioned, Theia is built to enable the development of personalised multi-language, multi-platform IDEs. To that end, at its core, Theia uses a component-based architecture that prioritises flexibility and extensibility.
Theia
March 11, 2021
fastai - Architecture
Deep Learning libraries like PyTorch, Keras, and Tensorflow help us in creating Deep Learning solutions. However, none of them cater to its users as fastai. fastai is made with ease of use in mind. This is achieved by incorporating parts of other libraries and then adding (abstraction) layers on top of that, such that the user can start quickly, without having to write elaborate code and familiarize itself with too many deep learning details.
Fastai
March 10, 2021
Kubernetes - Product Vision and Problem Analysis
What is Kubernetes all about? Why do a lot of companies use it? In this blog, we talk about Kubernetes' system key capabilities and properties. Then, we go over some use cases and discuss a stakeholder analysis, followed by Kubernetes' key quality attributes. Next, we describe Kubernetes' roadmap and finally, we mention some ethical considerations.
Figure: Kubernetes Logo. Kubernetes (K8s) is an open-source platform, which is lightweight and scalable.
Kubernetes
March 8, 2021
KiCad - Product Vision
KiCad is an amazing suite of multiple software components which allow users to draw electrical schematics and design corresponding printed circuit boards (PCBs) that can be manufactured and used. KiCad has a library of components that are modeled after real-world components which allow users to easily add those parts to their design. Kicad has support for electronic simulations, 3D views, scripting and many more functionalities, while keeping all of the software open-source!
KiCad
March 8, 2021
VSCode - Product Vision
“Now keep in mind, this codebase was already five years old and if we wanted to come to this open source market we had to cleanse our code so that we could share it with the public without being embarrassed.” This is a slightly altered quote by Erich Gamma1, one of the founders of Visual Studio Code. In six months time, he and his team went through the numerous lines of code to make them presentable to the general public.
Visual Studio Code
March 8, 2021
XWiki - The Product Vision
The term wiki is often related to the website Wikipedia, which acts as a common knowledge base for virtually every topic. However, in reality, Wiki’s can be used for far more than only this. XWiki offers a generic platform for developing projects and collaborative applications using the wiki paradigm. The XWiki platform is open source and is supported by both the company of XWiki SAS and the open source community. XWiki can be used to create a content management system for all kinds of knowledge bases and goes far beyond helping to set up a classic wiki.
XWiki
March 8, 2021
pip - The Product Vision
What is pip? pip is the package manager for Python. A package manager is a tool that allows you to install and manage additional libraries and dependencies that are not distributed as part of the standard library. It can be used to install packages from the Python Package Index and other indexes. These indexes are online repositories that host these libraries and dependencies.
pip has been included with the Python installer since versions 3.
Pip
March 8, 2021
The Product Vision and Problem Analysis
IntelliJ IDEA is a Java IDE designed to maximize developer productivity. It achieves this by offering intelligent features that enhance the productivity of the developer. In this series of blog posts, we will discuss various aspects of the IntelliJ platform.
Overview In this blog we will first discuss the goal of IntelliJ, then we will briefly go over its domain model, use cases and context. After that, we will discuss the stakeholders, key quality attributes, product roadmap and ethical considerations.
IntelliJ IDEA
March 8, 2021
ElectricityMap - The Product Vision
ElectricityMap According to the US National Oceanic and Atmospheric Administration, 2020 was Earth’s 2nd hottest year ever recorded, just behind 2016. It was also Earth’s 44th year with global land and ocean temperatures, at least nominally, above 20th century average1. A major cause of global warming is the greenhouse effect, where human activities (particularly burning fossil fuels to generate energy) are increasing the concentrations of greenhouse gases in the atmosphere2. Since the Paris Agreement was signed in 2015, many countries have planned clean energy initiatives in the near future345.
Electricitymap
March 8, 2021
Odoo - Product Vision
Odoo is a web-based software platform that provides a large set of different applications for business management. For example, Odoo can be used for website building, warehouse management, project management, and much more. The platform is developed by both a company by the same name and an active community. While the software suite can be used for free, the company also provides enterprise versions of their software with additional proprietary features.
Odoo
March 7, 2021
Spark - Product Vision and Problem Analysis
Spark - Product Vision and Problem Analysis Introduction to Spark Spark is an open-source general-purpose computing engine for processing large-scale distributed data. It was initially developed at the University of California, Berkeley’s AMP lab in 2012 by Matei Zaharia and then donated to Apache Software Foundation, which has maintained it till now.
Since the widespread use of the Internet, the data collected by service providers become incredibly large. Google, as the search engine market leader and biggest cloud system provider, processes over 20 petabytes of data per day 1.
Spark
March 7, 2021
Bitwarden - Product Vision and Problem Analysis
During the last year in the midst of a global pandemic, many companies were forced to bring their businesses online. Meetings, documents and whiteboards were all kept online so each employee could access these from their desk at home. Many of the applications that enable online collaboration require the employees to create an account. The application uses this as authorization to view the company’s confidential content. The application itself might have sophisticated security measures against cyber breaches, protecting the companies confidential information.
Bitwarden
March 7, 2021
OBS - Product Vision
Open Broadcasting Software (OBS)1 Studio is an open-source cross-platform streaming and recording program. Instead of being a high-priced subscription program or a free program that is toned down in its capabilities unless you pay some fee, OBS Studio is free to use, with no strings attached. The mission of the developers is to become the leading software for live streaming and video recording. The team actively listens to its users and tries to tailor a product that fits everyone’s needs.
OBS Studio
March 7, 2021
PaddleOCR - An Ultra Lightweight OCR System
This article has been divided into 8 sections, where we, four Embedded System master students from Delft University of Technology, will analyze this open-source project named PaddleOCR developed by Baidu Company. The first two sections will give a general view of it. Following that, it will analyze the main capabilities and usage of the product. Then, the stakeholders and the key attributes will be presented. Besides, it will explore the roadmap of this application.
Paddleocr
March 6, 2021
ThingsBoard - Product Vision
Introduction After a long day of work, you’re getting back home. As soon as you step outside, you shiver from the cold. Luckily, you have an internet-connected thermostat, which you can turn on before you arrive, making your house nice and warm.
A few weeks later you are on holiday. After you have finally found your seat on the plane, you start to get a little anxious. Did you turn the lighting off back home?
Thingsboard
March 5, 2021
Draw Freely
It all started back in the 1970s when an engineer from Kodak took leftover and used parts from a factory to make the first ever digital camera. Art, from that time since, was not limited to just physical manipulation of colors on a piece of handcrafted paper anymore. In today’s era of high computational prowess, artists can take the help of efficient and intuitive software to express their creativity rather than the ingenuity of the brush or the material of their canvas.
Inkscape
March 5, 2021
Theia: Product Vision
Launched in March 2017 and named as an Eclipse foundation project in May 2018, Eclipse Theia is an extendable framework for developing multi-language Cloud & Desktop Integrated Development Environment (IDE)-like products with state-of-the-art web technologies1. Its main aim is to support building browser-based and desktop IDEs. Instead of directly providing an IDE product, Theia delivers a framework to build personalized IDEs. It provides a highly flexible architecture for adopters, supports VS Code extension protocol2, and is developed under vendor-neutral open-source governance1.
Theia
March 5, 2021
Matplotlib - Product Vision & Problem Analysis
As data scientists, we handle large amounts of data, intending to present it, analyze hypotheses, or exploring unknown information. Since data visualization is just a stepping stone for deeper analysis, we need tools that offer this layer in a flexible and easy to use manner.
Matplotlib aims to enable users to create customizable visualizations through various components or third-party tools, at high resolution, with publication quality, all in a few lines of Python code.
Matplotlib
March 5, 2021
RustPython - Product Vision
Many programming enthusiasts are enthused by the fresh new movement of ‘Rust’, the most loved programming language for the past five years, and Python, the most popular language for the past couple of years. Both languages are suitable for quick scripting and larger projects. What happens when you combine both?
RustPython 😉
The arrival of RustPython brings yet another competitor to the various Python interpreters that are already out there. With the potential to become the default Python interpreter, it is interesting to further explore this Rust implementation of Python.
RustPython
March 5, 2021
NVDA's Vision
NVDA (Non-visual Desktop Access) is a free and open source Screen Reader for the Microsoft Windows operating system and many other windows-based third-party applications. It provides synthetic speech and Braille feedback of the computer screen, providing a way for blind and visually impaired individuals to freely and easily access their computers. The most exciting aspect of NVDA for the users is that it is completely free, with the founders strongly believing that:
NVDA
March 4, 2021
Stellar - Product Vision
Figure: Stellar Logo In a world that is more connected than ever, making payments across borders still has its limitations: one often has to work with multiple banks and intermediaries to transfer money internationally. This is where Stellar steps in. Through Stellar, the Stellar Development Foundation (SDF) aims to connect the different financial systems worldwide. Stellar is an open-source and decentralised platform where people can store and transfer money using any currency they like.
Stellar
March 4, 2021
fastai - Product Vision
We present the vision and architectural analysis of the second version of the fastai library1. They make extensive use of Jupyter notebooks, which in their case are a combination of Markdown documentation files, the programming language Python, and command-line operations. It is being developed by a non-profit research group called fast.ai2. Throughout this post, we will refer to the research group as fast.ai and the library as fastai.
Fastai
March 3, 2021
libGDX - Product Vision
libGDX is a free, open source cross-platform Java game development framework based on OpenGL. As a main principle this framework provides developers the opportunity for fast prototyping and iterations when working on a video game given its cross-platform nature. libGDX realizes these benefits for the developer by offering a single API, which targets many different platforms1. This single API that is provided to the developer, makes it much easier to maintain an application.
libGDX
March 3, 2021
Apache Kafka - Product Vision and Problem Analysis
The arrival of social media platforms, video streaming, and large-scale system monitoring services introduced new requirements for data processing, pushing the boundaries of available software at the time. Large amounts of data were continuously uploaded to and requested from servers1. Everyone rushed towards possible solutions: GraphQL, Caching, Localized servers and more were all brought to the table. The search for optimization had started. LinkedIn is one of these platforms that faced the problem.
Kafka
March 1, 2021
Jitsi-Meet: The What and Why
Jitsi-Meet is a video conferencing solution. The project aims to provide a totally free video conferencing platform that is open source and community-based.1 The use cases range from quick chats between friends to embedded video calls in large applications.
Where is it used Generally, every user of Jitsi-Meet will use it for an online video meeting, ranging in scale from a small group meeting to a conference with hundreds of people.
Jitsi Meet
March 1, 2021
NetworkX - Product vision
Figure: NetworkX Logo In this series of 4 blogs, we will attempt to analyse and enhance our understanding of the software architecture behind the NetworkX package. In this blog, the first of the series, we will provide a description of the vision behind the NetworkX project and give insight on the projects future aspirations.
First, we will characterize the problems that NetworkX strives to solve in the domain of network analysis, and give a timeline and context of the projects' inception.
Networkx
March 1, 2021
openHAB - The Product Vision
openHAB - The Product Vision In this series of blog posts we introduce you to the openHAB project. This first blog is about openHAB from a product perspective. We will for instance discuss the goal for which openHAB was created and in what context it operates. In the second post we dive into openHAB’s architecture. We discuss the software quality and evolution of code in the third blog, before we end the series with our final and fourth post where we learn more about the OSGi framework and how openHAB makes use of it.
openHAB
March 1, 2021