From magazine topic to project implementation
Relevant service and technical pages for this post
When companies talk about Delphi Multiplattform for Windows, macOS and Linux, it is rarely about „technology for technology’s sake“. Usually there is a tangible situation behind it: a mature business application runs reliably on Windows, but business units request macOS clients, IT teams want to integrate Linux-services into existing server standards, or a modernization is planned without redeveloping the entire feature set.
Delphi can be a pragmatic bridge in this tension — provided multiplatform is understood as an operational and architectural topic. The real costs do not arise in the first build, but in maintenance, the release process, security updates, data access, the driver landscape, packaging and support. This article frames how to realistically plan multiplatform, which technical decisions are felt in operation, and which project pitfalls typically surface late.
Why multiplatform in companies is rarely „just a feature“
In practice, multiplatform requirements arise from three typical drivers:
- Heterogeneous endpoints: Windows is established; macOS is introduced by management, sales, design or executive levels. Linux appears either as a desktop in specialized environments or as a server standard in the datacenter.
- Standardization in operations: Many IT departments want to consolidate services on Linux (monitoring, package management, hardening), even if clients remain Windows.
- Modernization without a Big Bang: Legacy applications are to be migrated step by step into maintainable layers, often in parallel with database and interface projects.
Important is the distinction: multiplatform on the client (desktop app) is a different matter than multiplatform in the backend (services/REST). Especially in the B2B context a hybrid approach is often worthwhile: stable Windows clients, but server-side Linux services and REST APIs for integration, automation and web portals.
Delphi Multiplattform für Windows, macOS und Linux: What this concretely means
Multiplatform in Delphi is not a magic wand, but a toolbox. For IT and operations three layers are decisive:
- UI layer: On Windows many companies have an established VCL world (the classic Windows UI). For true multiplatform clients FireMonkey (FMX) typically comes into play, enabling the same interface across different operating systems — with their respective native peculiarities.
- Business logic: The main leverage is shared, cleanly encapsulated logic. Those who separate business logic and data access from the UI can change platforms without reinventing the product.
- Runtime and deployment: Each platform has different requirements for installation, permissions, signing, updates, paths, certificates and libraries. It is precisely here that it becomes apparent whether multiplatform is „easy“ or „expensive“ in daily operation.
For decision-makers the core question is therefore not „Can Delphi macOS and Linux?“, but: Which parts of our solution truly need to be multiplatform-capable — and how do we ensure operation and maintainability over years?
Architecture: the biggest multiplier for maintenance costs
Multiplatform projects rarely fail because of the compiler, but because of missing decoupling. In legacy applications everything is often mixed together: UI events, database access, domain logic, printing, file system, network calls. That works on „the one Windows-PC“, but becomes a permanent construction site as soon as you expand platforms or outsource services.
Layer model instead of „form as the hub“
A clear layered model (often referred to as layer architecture) is well established:
- Presentation: Desktop UI (VCL or FMX) or web frontends.
- Application and domain logic: rules, workflows, permissions, validations; ideally without direct dependency on the UI or database drivers.
- Integration layer: connections to ERP/DMS/CRM, file interfaces, messaging, REST.
- Data access: consolidated access through clearly defined repository/service boundaries, instead of SQL scattered everywhere.
This separation is not an academic exercise: it reduces platform special cases, simplifies testing, enables server-side components and makes database migrations (e.g. to PostgreSQL) significantly more controllable.
Shared domain logic: multiplatform without duplicate development
If you mean multiplatform seriously, the domain logic should be designed so it can run equally in a desktop app and in a service. This is particularly relevant if you later add a customer portal, an internal web interface or a REST integration. In practice this means: domain decisions belong in services/modules, not in click events of a form.
UI strategy: keep VCL, use FMX selectively, complement with web
Many companies have a strong Windows desktop base. An immediate switch to a new UI technology is often unnecessarily risky. Typical viable strategies are:
Strategy A: Windows client remains VCL, backend becomes platform-neutral
Here the core logic is gradually extracted from the VCL application into libraries and server-side components. Result: the Windows client remains stable while integration, automation and new frontends are implemented via services. Linux then comes into play through server operation (e.g. REST-Server or background services).
Strategy B: multiplatform client with FMX for defined scenarios
FMX makes sense when you truly need the same client on Windows and macOS, for example for field service, mobile workstations or mixed fleets. Important: UI details (fonts, keyboard shortcuts, dialogs, file selection) differ per platform. That must be accounted for in testing and support.
Strategy C: desktop complemented by portal
Many companies address the „macOS issue“ not with a full client, but with a portal for clearly defined processes: inquiries, approvals, order status, documents. That relieves desktop rollouts, reduces installation effort and is often quicker to harden, because the central web layer is easier to control.
Data access and databases: FireDAC as an operational stability factor
In multiplatform architectures, data access is often the area where historical technical debt becomes most expensive. Older Delphi systems in particular depend on the Borland Database Engine (BDE) or on drivers that only work reliably on Windows. For operations this is a risk: driver availability, 32/64-bit issues, Unicode, security patches and monitoring are difficult to manage.
Driver strategy: consistent, documented, testable
BDE-replacement with native binding is a common data access layer in Delphi that addresses different databases uniformly. Operationally it matters less „how elegant“ that looks in code than:
- Which client libraries are required? (e.g. PostgreSQL, MariaDB or Oracle client)
- How are they distributed? Part of the installer, centrally managed, container image
- How are connection parameters managed securely? (secrets, protected configuration, no plaintext passwords in files)
- How stable is the behavior under network disruptions? Retries, timeouts, pooling
Database migrations: Multiplatform as an opportunity for clean boundaries
If platforms are being expanded anyway, this is often the right time to consolidate data access. A migration (for example from old file-format or embedded databases to SQL systems such as PostgreSQL or SQL Server) should be executed as a project with clear phases: data model, migration tools, parallel operation, acceptance, rollback plan. Multiplatform increases the pressure here because „Windows-only“ drivers or file paths on macOS/Linux no longer work.
Services and interfaces: REST as a bridge between platforms
In heterogeneous landscapes an REST approach (REST = HTTP-based interface with clear resources and methods) is often the most pragmatic way to connect platforms. For operations this means: central authentication, standardized protocols, improved observability (logs/metrics) and a clean decoupling between client and database.
Delphi REST-Server vs. direct DB access from the client
Many legacy desktop solutions use direct database access from the client. In pure Windows networks this was common for a long time. With multiplatform environments and modern security it becomes more difficult:
- Network segmentation: Databases are no longer on the same network as clients; firewalls are stricter.
- VPN/Zero Trust: Direct DB connections across changing networks are error-prone.
- Auditing and permissions: Business-level permissions in the application are hard to model cleanly when every client speaks SQL directly.
A REST server (or a service layer) can centralize these concerns: authentication, permissions, logging, rate limiting, versioning. For admins this is often easier to operate than „a hundred clients with database access“.
Authentication and SSO: SAML 2.0, OAuth, tokens
In the B2B environment, Single Sign-on (SSO) is often mandatory. SAML 2.0 (a standard for identity federation between Identity Provider and application) or OAuth/OpenID Connect (token-based methods) are typical components. The decisive factor is not the buzzword but the operational question: where are identities stored, how does provisioning work, how are tokens secured, and how are accesses recorded in an audit-proof manner?
Deployment and Packaging: The underestimated effort
Delphi Multiplatform for Windows, macOS and Linux also means: three worlds in packaging. Many costs only arise after the first go-live, when updates must be rolled out regularly.
Windows: Installer, permissions, services
On Windows MSI/installer processes, Group Policy, UAC (User Account Control) and code signing are common. Once Windows- and Linux-services are involved, additional topics arise: service account, file system and network permissions, startup order, recovery options and log rotation. For maintenance it is important that the service is clearly versioned and can be updated without manual intervention.
macOS: Notarization, signing and Gatekeeper
macOS typically requires signing for distributed applications and, depending on the distribution path, a notarization (review process so that Gatekeeper runs the app). For companies this is less an „Apple topic“ than a process issue: who holds the certificates, how does the build pipeline run, how are releases produced reproducibly? Without this discipline every hotfix becomes a one-off action.
Linux: Packages, dependencies, systemd
On Linux systemd units (definitions of how services start and are monitored), package formats (e.g. DEB/RPM) or container-based deployments are relevant. For admins the important points are: clear configuration, defined paths, meaningful logs (e.g. via journald), health checks and an update path that is compatible with the organisation’s distribution policy.
CI/CD and Release Process: Multiplatform requires reproducible builds
By the time you target three platforms, „build by hand“ becomes a risk. CI/CD (Continuous Integration/Continuous Delivery) here does not necessarily mean „fully automatic to production“, but primarily: reproducible artifacts, traceable versions and a standardized testing and approval process.
In practice you should at minimum define:
- Build matrix: Which platforms, which variants (Debug/Release), which database drivers, which optional modules?
- Versioning: Consistent version numbers across client and server, plus database migration states.
- Signing: Where signing occurs, how keys are protected (e.g. HSMs or secured build agents)?
- Smoke tests: Minimal functional checks per platform that can block any release candidate.
For decision-makers this is a governance issue: without release discipline multiplatform becomes more expensive over the years because fault patterns are harder to reproduce and hotfixes have platform-specific side effects.
Monitoring, logging and fault analysis: what really matters in operation
In everyday operations IT teams need quick answers: „Why did the process hang?“, „Is this a client issue or a backend issue?“, „Since when has this been occurring?“ Multiplatform increases variance, so observability must improve.
Unified log strategy across client and server
A tiered log strategy has proven effective:
- Client logs: local logs with rotation, unique correlation reference (e.g. Request-ID), privacy-compliant.
- Server logs: central storage, structured entries (with precise timestamps, machine-readable), separation of audit and debug logs.
- Metrics: response times, error rates, queue lengths, database pool utilization.
Especially in REST architectures, a Request-ID (a unique identifier per request propagated through all components) is invaluable, because support cases can then be narrowed down in minutes instead of hours.
Crash handling and symbolicated error analysis
On desktop platforms, crash dumps and stack traces must be handled so they are usable by support without leaking sensitive data. That’s an organizational issue: Which data may be transmitted? How is consent obtained? How are debug symbols secured and versions mapped? Without addressing these questions, multiplatform support often remains „groping in the fog“.
Security and compliance: platforms mean different attack surfaces
With Windows, macOS and Linux the risk does not automatically increase, but the attack surface becomes more diverse. Typical points that are often addressed too late in projects:
- Certificate management: TLS certificates for servers, client certificates, expiration dates, automated renewal.
- Secrets: database passwords, API keys, signing keys – not in plaintext configurations or in installation scripts.
- Permission model: least privilege for services, clear separation of admin and user functions.
- Updatability: security fixes must be deployable quickly; that depends directly on the packaging and release process.
Especially in companies with audit requirements, it’s worth defining a short security checklist per platform early and including it in acceptance criteria.
Typical pitfalls from multiplatform projects
Some problems recur — not because teams „work poorly“, but because they were invisible in Windows-only histories:
File system and paths: small detail, major impact
Different path conventions, case sensitivity, user directories and permissions lead to errors in exports, attachments, temporary files or caches. A consistent abstraction concept helps here: central path services, defined app directories, no „hard-coded“ storage locations.
Printing, PDF and office integration
Print and document workflows are often critical in business processes. Windows has established print paths, macOS and Linux behave differently. If PDF generation, signatures or receipt outputs are relevant, these functions should be tested early on all target platforms — not just shortly before rollout.
Unicode and character sets
As soon as platforms, interfaces and databases are mixed, Unicode (a character encoding standard for international characters) becomes mandatory. Legacy data with a ‚ANSI‘ history otherwise produces hard-to-trace errors in search, sorting, CSV exports or interfaces. A Unicode strategy covers UI, database columns, interfaces and test data.
32/64-bit and library dependencies
A classic: a driver or a third-party library is only available for one architecture. For operations this means: a clear dependency list, documented versions, check license and updateability. Multiplatform is only as stable as the weakest dependency.
Decision guide: When is Delphi Multiplatform really worthwhile?
A pragmatic assessment of effort and benefit helps to make discussions more objective. Multiplatform typically pays off when:
- the functional core is stable in the long term and reuse pays off over years,
- there are real organizational reasons for macOS clients (not just ‚would be nice‘),
- Linux is already standard in the backend and services/REST are planned,
- the application must be integrated into an integration network of ERP/DMS/CRM,
- a clean release process can be established (build, signing, tests).
Multiplatform is less sensible when the application heavily relies on Windows-specific components (e.g. deep Office automation, special drivers, COM-based integrations) and these functions are not clearly encapsulable. Then a mixed strategy is often more realistic: Windows client for special cases, portal/REST for platform-neutral processes.
Modernization path: Multiplatform without a full rewrite
For many companies the most important point is: Multiplatform does not have to mean rewriting everything. A robust path often looks like this:
- As-is analysis and define boundaries: Which modules are functionally stable, which are UI- or database-near, where are the biggest risks?
- Consolidate data access: e.g. BDE-replacement, BDE-Ablosung mit nativer Anbindung, consistent connection and transaction strategy.
- Establish service layer: REST API for core processes, gradual replacement of direct DB access.
- Prioritize platforms: Stabilize the backend on Linux first, then macOS client for defined user groups, instead of doing everything at once.
- Professionalize packaging/CI: reproducible builds and updates as an integral part of the project.
This path is particularly suitable for custom enterprise software with long lifecycles, because it protects business logic and reduces technical risks in a controlled manner.
Conclusion: Multiplatform is an operational decision – not just a developer decision
Delphi Multiplatform for Windows, macOS and Linux can be a very pragmatic way for companies to technically evolve established processes without losing the functional core. The crucial point is to plan multiplatform as a complete package: architecture with clear layers, consolidated data access, service-capable interfaces, reproducible builds, clean packaging and a logging/monitoring strategy that resolves support cases quickly.
Once these fundamentals are in place, multiplatform is not a perpetual project, but a controllable extension of your digital enterprise solution – with realistic operating costs and a roadmap that combines migration and further development.
If you want to assess your starting point (existing systems, target platforms, database, interfaces and operating model) in a structured way: Contact us for a technical initial consultation.
In the technical domain, Delphi Modernization also plays an important role when integrations, data flows and ongoing development need to interoperate cleanly.
Discuss a project or modernization initiative with Net-Base.
Next step
When the topic becomes an actual project, architecture, existing systems and operations should be considered together from the outset.
We support not only with individual issues, but also when source snippets, legacy topics, or portal ideas are to be turned into a robust enterprise project.
- Current state, target state and technical risks are assessed jointly.
- REST, data access, portals and rollout are not deferred to a later stage as secondary consequences.
- You can see early on which path is economically and operationally viable.