The White Paper of RuntimeHub

                     RuntimeHub: Runtime of Any Software

                                                               By Joe on 18/08/2024

What Is RuntimeHub?

As we all know, open-source software is now everywhere, with GitHub hosting code for countless projects. Yet, GitHub largely remains a static code browser, limiting developers to viewing source files without real-time execution insights. RuntimeHub, as its name suggests, aims to address this limitation by offering a dynamic, intuitive, and interactive platform that visualizes the entire runtime execution process of a program. The goal is to provide developers, educators, and learners with a tool to accelerate understanding of software behavior through a dynamic interactive runtime view, thereby saving time spent reading source code and enhancing productivity.

RuntimeHub offers a step-by-step view of a program’s runtime behavior, displaying details like active threads, stack traces, variable states, and output logs. Users can go almost anywhere through the code flow of all related threads with just a few shortcuts. Currently, RuntimeHub.com showcases some useful runtime examples for Java, C++, and Python programs, with additional languages such as C, Rust, Go, and TypeScript expected to be added soon.

Let’s try it out! Such as this Python Demo. When you open it in a web browser (Chromium or Chrome is recommended), you can simply use the right arrow key to step through the entire execution process of the program, from start to finish (for more useful navigation shortcuts, click the question icon in the upper right corner of the page or go to our User Guide). You will be able to see details such as the current source code location being executed, the current runtime’s active threads and its stacks, member variable values of the current method’s class, input parameter values, local variable values, and the contents output to stdout and stderr, as shown in the following screenshot:

Python Demo

And a screenshot of C++ Demo:

C++ Demo

And a screenshot of Java Demo:

Java Demo

What Is the Goal of RuntimeHub?

The goal is to provide developers, educators, and learners with a tool to accelerate understanding of software behavior through a dynamic interactive runtime view, thereby saving time spent reading source code and enhancing productivity.

To achieve this, RuntimeHub will offer a rich library of runtime examples across various open-source projects, including:

  1. Demos, algorithms, and design patterns in various programming languages.
  2. System-level applications and daemons on Android, Ubuntu, and Manjaro.
  3. The top 20 open-source applications on GitHub, such as web browsers (e.g., Chromium), web servers (e.g., Tomcat, Spring Boot, Apache, Nginx), and databases (e.g., SQLite, MySQL, MongoDB).

With this extensive resource on RuntimeHub.com, students and developers can:

  1. Learn syntax, data structures, and algorithms across major programming languages.
  2. Understand complex open-source projects for feature development, debugging, and extending functionality.

Furthermore, students, developers, open-source communities, educational institutions, training centers, instructors, research institutions, and companies can request RuntimeHub to generate runtime examples for specific open-source projects, enabling them to:

  1. Safely showcase program runtime details.
  2. Gain insights into software logic and code flow.
  3. Identify and troubleshoot issues in complex code.
  4. Debug AI-generated or online code samples.

RuntimeHub also plans to release a plugin for VSCode and other popular IDEs, along with an AI-driven chatbot, making it easy for users to check if a runtime example for their code exists on RuntimeHub.com.

Dose RuntimeHub Make Sense?

Yes, RuntimeHub is indeed necessary and extremely helpful to many developers, especially those who are teaching programming and who are new to programming.

Today, most programmers rarely develop new software from scratch. Instead, they often build on top of mature open-source projects to increase development efficiency. However, understanding the source code of existing open-source projects is a prerequisite, which is often time-consuming and inefficient. Programmers typically rely on static methods such as reading source code, documentation, development guides, and commit histories to understand a program. This approach is inefficient because the functionality and principles of software are embodied in its dynamic execution process. While using a debugger to trace the execution process is more intuitive, it also requires a significant time investment: 1. Enabling debug options or relevant configurations at compile time, then compiling the target program for debugging. 2. Configuring the debugger and setting breakpoints, especially when the program involves multiple programming languages, which can be quite complex. 3. Coordinating various threads during execution, which often requires manual interaction; any mistakes or missed opportunities might necessitate starting over. 4. In GUI programs where runtime performance is critical, the pause duration must be carefully managed; missing the right moment might also require starting over. 5. For remote debugging, maintaining a stable connection between the debugger and the target machine is crucial for long-term online debugging; otherwise, an unexpected disconnection might require starting over.

For example, when modifying the HAL or System layers of Android’s C++ code, many engineers prefer to insert debug logs rather than use a debugger, as the former is simpler and effective. Although compilation is time-consuming and the debugging cycle is longer, they prefer this method over the complex setup and operations required by a debugger. Yes, programmers tend to be lazy—well, most of the time, they’re just too lazy.

In summary, understanding open-source software requires more than reading its source code. Static code reading is time-consuming and does not capture the dynamic aspects of software, such as execution flow, multithreading, and variable states; Using a debugger offers a more intuitive solution, but setting it up, especially for large, multi-threaded, or multi-language applications, is complex and time-intensive; And many existing system-level debugging tools focus on system-level calls, which often makes them inadequate for directly reflecting the execution details of application-level programs. However, by providing ready-made runtime examples for various programs, RuntimeHub can save developers a significant amount of time: no need to set up a development environment, compile the program, or configure the debugger, and it also makes it easy to understand the behavior of multithreaded programs or programs where runtime performance is critical. The intuitive interface of RuntimeHub simplifies reading and following code in a debugging view. Users can effortlessly navigate through the entire execution process and explore various details using just a few simple shortcuts. Of course, this assumes that RuntimeHub already has runtime examples of the relevant open-source projects. Although the current examples are limited, I will continue to add more.

Finally, RuntimeHub will be especially valuable for both learners of programming and educators. It can help beginners intuitively understand the behavior and execution process of a program, saving time and improving learning efficiency.

How to Explore Runtime Examples on RuntimeHub?

Please just refer to our User Guide.

Dose RuntimeHub Have A Bright Future?

Yes, RuntimeHub is poised for a bright future. RuntimeHub is an essential tool for the modern software development ecosystem. It addresses key inefficiencies in software learning and comprehension, particularly for open-source projects, by offering a dynamic, interactive runtime view.

As more and more open-source software runtime examples are added, RuntimeHub has the potential to become a large platform comparable in influence to GitHub. I believe that developing RuntimeHub is a task with long-term value, and it is something I both enjoy and excel at. Although this is a task that requires long-term commitment and poses challenges, I believe it is worth dedicating years or even a lifetime to.

Which Programming Languages Will RuntimeHub Support?

Currently, the runtime examples on RuntimeHub are primarily implemented in Java, C++ and Python. However, in theory, RuntimeHub’s underlying debugging system can be extended to support projects in any high-level programming language, including C/C++, Java, Go, Rust, Python, Bash, and more. Starting in August 2024, I plan to add runtime examples for a new programming language each quarter, starting with open-source projects implemented in Java, C/C++, Python, Rust, TypeScript, JavaScript, Go, and Bash, etc.

What Types of Programs Will RuntimeHub Support?

RuntimeHub’s underlying debugging system now supports or can be extended to support nearly all types of programs, including web apps, Windows apps, Android apps, Linux apps, Linux daemon services, Linux runtime libraries, Android frameworks, Android runtime libraries, the Linux kernel, and more.

What Platforms Will RuntimeHub Support?

Currently, RuntimeHub supports most OS platforms based on the Linux kernel, such as Android, Debian, Ubuntu, Arch Linux, Manjaro, Buildroot, Yocto, and others. It also supports Windows and web environments, including both Web2 and Web3 blockchain-based applications.

In the future, RuntimeHub’s underlying debugging system can be extended to support additional platforms, including macOS and other smaller operating systems that are not based on the Linux kernel.

Ultimately, RuntimeHub aims to support nearly all operating system platforms and achieve its goal: Runtime of Any Software.

How to Check If Some Code Has Runtime Examples on RuntimeHub?

I am developing a VSCode plugin that you can install once it is released. After enabling the plugin, it will scan the content of the source code file you open (the plugin will not upload the code, so you don’t have to worry about code leaks), then calculate a hash code for each function or method, and upload only that hash code to the server for comparison with the server’s data. If the hash code exists in our database, it means that there is a corresponding runtime example for that function or method on the RuntimeHub website. The server will then return the corresponding link to the plugin, and the plugin will display a prompt with the link at the beginning of the function or method. You can click this link to view the runtime execution process of that function or method and check the relevant variable values and outputs.

Additionally, I plan to develop an AI chatbot that will be available on RuntimeHub. You can enter the code of a function or method into the chatbot’s input box, and the AI will calculate the corresponding hash code locally and upload it to the RuntimeHub server for comparison with the server’s data. If the hash code exists in our database, it means that there is a corresponding runtime example for that function or method on the RuntimeHub website. If it exists, we will reply with the relevant link, and you can click it to view the runtime execution process of that function or method and check the relevant variable values and outputs.

Please note that these two features are still in development and have not yet been officially launched.

Who is Behind RuntimeHub?

Just myself for now. I’m Joe, an expert developer in Web, Android, and Linux. I began learning programming in 2007 and have since gained 17 years of software development experience, along with over 14 years of working experience in the IT industry based in Shenzhen, China. I am currently in Perth, Australia, focusing on the development of RuntimeHub and advancing my studies in AI.

How Can I Reach You?

You can reach me via email at runtimehub.com@gmail.com. Thank you!