Why I Built DotHRB
My father had an electronics lab, so for as long as I can remember, I spent my early years with a soldering iron, multimeter, and oscilloscope, building custom electronic circuits for CB radio, Hi-Fi audio, and constructing pedals to amplify and distort my electric guitar as much as possible.
But in late 1979 at high school, I put my hands on a Commodore PET 2001. In that exact moment, the trajectory shifted, and I knew I wanted to be a software developer.
Over nearly half a century since then, I have worked across a massive spectrum of languages and architectures—from Basic, COBOL, Pascal, PHP, and Visual Basic to C and C#. I have built systems for the IBM System/36 and AS/400, for classic Unix and modern Linux, for macOS and the PC.
Every platform taught me something, but through all these decades, Harbour has remained my "native language." It is the environment where I feel most at home and where I know exactly how to achieve maximum performance.
Yet, as market requirements shifted, I found myself working extensively with C# and the modern .NET ecosystem, particularly ASP.NET. During this time, I came to appreciate the modern .NET development workflow as an incredibly efficient and elegant environment.
I looked at the productivity of the .NET workflow, looked back at my classic Harbour applications, and realized a bridge needed to be built.
I created DotHRB to bring that exact modern efficiency to the Harbour ecosystem.
The Philosophy: Design by Analogy
The name DotHRB is a deliberate nod to .NET. The architectural similarity between the two is entirely by design, providing a familiar and efficient workspace.
⚠️ Technical Architecture Note: DotHRB is not a .NET wrapper, nor does it require the .NET runtime. It is a 100% native Harbour implementation built from the ground up using only Harbour code and its C API system. It has zero external .NET dependencies.
This framework was built with a clear, dual-purpose philosophy:
- A clean Web Architecture for Harbour: It introduces design patterns and web UI tooling to Harbour, allowing developers to deploy web applications reusing their proven business logic.
- A Two-Way Bridge for Developers: Because the architectural paradigms mirror the .NET ecosystem, the learning curve is flattened in both directions. It allows a Harbour veteran to easily adapt to modern C# team environments, and it allows a modern developer to step into a Harbour-based backend without feeling like they have traveled back in time.
Engineering over Hype
DotHRB is not a corporate project driven by venture capital or market trends. It is an independent passion project born out of a simple engineering challenge: How do we bridge decades of robust data logic with the modern web stack, without compromising performance or privacy?
This tool is for the pragmatists. It is for the developers who know the true value of their domain logic and want to show the industry that classic ecosystems can not only survive the web era, but excel in it.
I don't expect this framework to change the mainstream tech world. But for the developers who still appreciate the elegance of Harbour and want the speed of a modern runtime workflow, DotHRB is an invitation to build what's next.
Let's show them what this language can really do.
Open Source Compliance & Licensing
DotHRB is fully compliant with the open-source licensing model of the Harbour ecosystem.
The framework operates strictly within the Special Exception clause provided by the Harbour Project's GNU General Public License (GPL). DotHRB does not copy, modify, or incorporate internal Harbour GPL source code, nor does it rely on internal compiler execution functions like HB_COMPILE*, which are restricted under the core GPL. Instead, the DotHRB core tools are developed entirely using standard .prg code and the official public C API. When a user builds an application, DotHRB compiles the user's code by invoking the external harbour compiler binary using hb_processRun() call—exactly as if it were being compiled manually by hand. The resulting compiled code is then loaded into the DotHRB runtime environment using the hb_hrbload() call.
Because DotHRB links to standard Harbour libraries as an external layer without modifying or embedding the core compiler internals, the resulting binaries fall cleanly under the special exception: your use of the executable runtime is in no way restricted or forced into a copyleft license on account of using this framework. You retain full proprietary ownership of the business applications you build.
All product names, trademarks, and registered trademarks (such as IBM System/36, AS/400, .NET, or others mentioned herein) are property of their respective owners. Their use here is purely for biographical and descriptive purposes and does not imply endorsement or corporate sponsorship.