#1 2025-12-12 09:08:03

Javierus
Member
Registered: 2019-09-18
Posts: 75

Trying to convert mORMot1 documentation conversion to mORMot2

Hi, I'm taking the old documentation in: https://synopse.info/files/html/Synopse … 01.18.html
and trying to convert it to mORMot2, as-is, just changing the old class/method names from the old to the new convention. I'm also working on adapting all the code examples and code snippets so they at least compile with mORMot2

Chapters with all code validated: 5, 8, 16, 25

The temporal address for it is: http://wp.cyber.es/mORMot2-SAD-Index.html

I'ts split in chapter-sized documents linked from an index and from chapter to chapter

Would be grateful to know if what I'm doing is useful, useless, or whatever in the middle.

If it's useful, once finished I'd pass it to the boss so it does whatever he wants with it.

Offline

#2 2025-12-12 09:25:39

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

It could be better to work at documentation source level, i.e. on the SynProject .pro text file itself.

That is, update
https://github.com/synopse/mORMot2/blob … ormot2.pro
from
https://github.com/synopse/mORMot/blob/ … mework.pro

I guess only some part of the original source could be added, some of the "architecture blabling" could be just ignored.

Offline

#3 2025-12-12 10:33:58

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Hi ab smile

If what I'm doing is worth anything, I can adapt it to the .pro format, but first I'd like to know if what I'm doing is useful or just garbage

Offline

#4 2025-12-12 12:11:18

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

If you start from the existing mormot2.pro file, and append some content from the mORMot 1 .pro file, and make pull requests after proper corrections/renaming, I would add them.
But please only a few core part of the mORMOt 1 .pro file.

Anyway, your existing content is very interresting.
Do you use some AI to help you?

Offline

#5 2025-12-12 14:24:20

Prometeus
Member
From: US
Registered: 2020-11-20
Posts: 61

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Javierus wrote:

Hi ab smile

If what I'm doing is worth anything, I can adapt it to the .pro format, but first I'd like to know if what I'm doing is useful or just garbage

Hey, Javierus


   Your work is pretty impressive! mORMot is a great framework, but the learning curve is steep. The way you organized the topics and the samples shown will definitely help many users, from newbies to those already "initiated" in the mORMot world.

   
    Best regards!

Offline

#6 2025-12-13 00:57:34

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

ab wrote:

Do you use some AI to help you?

After 45 years of daily coding, these days 99% of the code I produce every day is through AI. Had you asked me one year ago if this was possible, I would have thought you were crazy.

The documentation updating from mORMot(1) to mORMot2 is 100% done with AI
The code examples are all compiled to be sure it's syntactically correct; even the snippets are enclosed in a fake project so it can be compiled

I'm using more mORMot2 now than before; yesterday just remade an MCP server I had made with the GDK MCP server, with mORMot2. The very excellent code documentation inlined everywhere in mORMot2 makes the AI understand it perfectly; way better than me.

In my mORMot2 copy, every folder has a CLAUDE.md documenting it, and then a main .md document with a global description and links to all the folder documents

Offline

#7 2025-12-13 09:37:36

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Nice touch.

Perhaps publishing those CLAUDE.md may help others?

Offline

#8 2025-12-13 13:04:10

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

I'll make a pull request for it , just with the MD files
I have a folder with this documentation I'm translating, just as html files for now, and all the code and projects for all the examples. It's not adequate for publishing: it is for Delphi 12.3 and has some search paths for my codebase structure, but if you feel curious, I could make a separate pull request, so you can get it and reject the request

I was also thinking on adapting all the DMVCframework examples but adapted to mORMot2, except the ones that are very specific and can't be adapted. If you believe it could be helpful, tell me and I'll do it

Offline

#9 2025-12-13 14:01:18

zen010101
Member
Registered: 2024-06-15
Posts: 152

Re: Trying to convert mORMot1 documentation conversion to mORMot2

I am trying to migrate the examples of Mormot 1.18 to Mormot 2 using Claude Code. Once all are successful, I will share the mormot2-migration skill, which may be helpful to others who wish to use Claude Code. Here is the progress:

| #   | Project Path                                              | Status  |
| --- | --------------------------------------------------------- | ------- |
| 1   | 01 - In Memory ORM/Project01.lpi                          | SUCCESS |
| 2   | 02 - Embedded SQLite3 ORM/Project02.lpi                   | SUCCESS |
| 3   | 03 - NamedPipe Client-Server/Project03Client.lpi          | SUCCESS |
| 4   | 03 - NamedPipe Client-Server/Project03Server.lpi          | SUCCESS |
| 5   | 04 - HTTP Client-Server/Project04Client.lpi               | SUCCESS |
| 6   | 04 - HTTP Client-Server/Project04Server.lpi               | SUCCESS |
| 7   | 06 - Remote JSON REST Service/Project06Client.lpi         | SUCCESS |
| 8   | 06 - Remote JSON REST Service/Project06Server.lpi         | SUCCESS |
| 9   | 09 - HttpApi web server/HttpApiServer.lpi                 | SUCCESS |
| 10  | 10 - Background Http service/httpservice.lpi              | SUCCESS |
| 11  | 10 - Background Http service/httpserviceSetup.lpi         | SUCCESS |
| 12  | 11 - Exception logging/LogView.lpi                        | SUCCESS |
| 13  | 13 - StandAlone JSON SQL server/JSONSQLClient.lpi         | SUCCESS |
| 14  | 13 - StandAlone JSON SQL server/JSONSQLServer.lpi         | SUCCESS |
| 15  | 14 - Interface based services/Project14Client.lpi         | SUCCESS |
| 16  | 14 - Interface based services/Project14ServerHttp.lpi     | SUCCESS |
| 17  | 14 - Interface based services/Project14ServerHttpWeak.lpi | SUCCESS |
| 18  | 14 - Interface based services/Project14ServerInMemory.lpi | SUCCESS |
| 19  | 27 - CrossPlatform Clients/FPC/JSONconsole.lpi            | SUCCESS |
| 20  | 27 - CrossPlatform Clients/FPC/LCLClient.lpi              | SUCCESS |
| 21  | 31 - WebSockets/Project31LongWorkClient.lpi               | SUCCESS |
| 22  | 31 - WebSockets/Project31LongWorkServer.lpi               | SUCCESS |
| 23  | 31 - WebSockets/Project31WinHTTPEchoServer.lpi            | SUCCESS |
| 24  | 33 - ECC/ECC.lpi                                          | SUCCESS |
| 25  | 36 - Simple REST Benchmark/RESTBenchmark.lpi              | SUCCESS |
| 26  | 37 - FishShop Service/FishShopDaemon.lpi                  | SUCCESS |
| 27  | 37 - FishShop Service/TestFishShop.lpi                    | SUCCESS |

Offline

#10 2025-12-13 15:44:49

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

zen010101 wrote:

I will share the mormot2-migration skill, which may be helpful to others who wish to use Claude Code

I'm interested, will wait for it

Offline

#11 2025-12-14 11:52:35

anouri
Member
Registered: 2024-02-11
Posts: 165

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Offline

#12 2025-12-14 15:44:09

zen010101
Member
Registered: 2024-06-15
Posts: 152

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Javierus wrote:
zen010101 wrote:

I will share the mormot2-migration skill, which may be helpful to others who wish to use Claude Code

I'm interested, will wait for it

Here is my skill file: ~/.cluade/skill/mormot2-migration/SKILL.md : https://gist.github.com/zen010101/ace68 … 0e1039e312

Here is the progress using it to migrate all the Samples shipped with mORMot 1.18 :

# mORMot 1 Examples Migration Progress

**Updated**: 2025-12-14 | **Target**: Compile with `{$define PUREMORMOT2}`

## Summary

| Compiler | Total | Pass | Fail |
|----------|-------|------|------|
| FPC      | 35    | 34   | 1    |
| Delphi   | 60    | 50   | 10   |
| **All**  | 95    | 84   | 11   |

**Overall: 84/95 (88%) projects compile successfully**

---

## FPC Compilation Results (.lpi)

| #  | Project                           | Status | Notes                          |
|----|-----------------------------------|--------|--------------------------------|
| 1  | 01/Project01.lpi                  | PASS   |                                |
| 2  | 02/Project02.lpi                  | PASS   |                                |
| 3  | 03/Project03Client.lpi            | PASS   |                                |
| 4  | 03/Project03Server.lpi            | PASS   |                                |
| 5  | 04/Project04Client.lpi            | PASS   |                                |
| 6  | 04/Project04Server.lpi            | PASS   |                                |
| 7  | 06/Project06Client.lpi            | PASS   |                                |
| 8  | 06/Project06Server.lpi            | PASS   |                                |
| 9  | 09/HttpApiServer.lpi              | PASS   |                                |
| 10 | 10/httpservice.lpi                | PASS   |                                |
| 11 | 10/httpserviceSetup.lpi           | PASS   |                                |
| 12 | 11/LogView.lpi                    | FAIL   | mormot.ui.controls (VCL only)  |
| 13 | 13/JSONSQLClient.lpi              | PASS   |                                |
| 14 | 13/JSONSQLServer.lpi              | PASS   |                                |
| 15 | 14/Project14Client.lpi            | PASS   |                                |
| 16 | 14/Project14ServerHttp.lpi        | PASS   |                                |
| 17 | 14/Project14ServerHttpWeak.lpi    | PASS   |                                |
| 18 | 14/Project14ServerInMemory.lpi    | PASS   |                                |
| 19 | 15/PerfTest.lpi                   | PASS   | Fixed TRestBatch pattern       |
| 20 | 15/PerfTestConsole.lpi            | PASS   | Fixed TRestBatch pattern       |
| 21 | 24/MongoDBTests.lpi               | PASS   | Fixed TRestBatch pattern       |
| 22 | 25/JSONPerfTests.lpi              | PASS   | Fixed comment syntax           |
| 23 | 27/FPC/JSONconsole.lpi            | PASS   |                                |
| 24 | 27/FPC/LCLClient.lpi              | PASS   |                                |
| 25 | 30/MVCServer.lpi                  | PASS   | Fixed TOrmTable, TRestBatch    |
| 26 | 30/MVCServerMongoDB.lpi           | PASS   | Fixed PBKDF2_SHA3 import       |
| 27 | 30/MVCServerPostgreSQL.lpi        | PASS   | Fixed TSqlDBConnectionProperties |
| 28 | 31/Project31LongWorkClient.lpi    | PASS   |                                |
| 29 | 31/Project31LongWorkServer.lpi    | PASS   |                                |
| 30 | 31/Project31SimpleEchoServer.lpi  | PASS   | Fixed WebSocket API            |
| 31 | 31/Project31WinHTTPEchoServer.lpi | PASS   |                                |
| 32 | 33/ECC.lpi                        | PASS   |                                |
| 33 | 36/RESTBenchmark.lpi              | PASS   |                                |
| 34 | 37/FishShopDaemon.lpi             | PASS   |                                |
| 35 | 37/TestFishShop.lpi               | PASS   |                                |

**FPC: 34/35 (97%) passed**

---

## Delphi Compilation Results (.dpr/.dproj)

### Passed (50)

| #  | Project                              | Notes                   |
|----|--------------------------------------|-------------------------|
| 1  | 04/Project04ServerStatic.dpr         |                         |
| 2  | 05/SynPdfFormCanvas.dpr              |                         |
| 3  | 05/SynPdfLayers.dpr                  |                         |
| 4  | 05/TestSQLite3Pages.dpr              |                         |
| 5  | 07/SynTest.dpr                       |                         |
| 6  | 11/LibraryTest.dpr                   |                         |
| 7  | 11/LoggingTest.dpr                   |                         |
| 8  | 11/RemoteLoggingTest.dpr             |                         |
| 9  | 11/MyLibrary.dpr                     |                         |
| 10 | 11/UnSynLz.dpr                       |                         |
| 11 | 11/Map2Mab.dpr                       |                         |
| 12 | 11/thread512.dpr                     |                         |
| 13 | 12/DBSynLZ.dpr                       |                         |
| 14 | 14/Project14Server.dpr               |                         |
| 15 | 14/Project14ServerExternal.dpr       |                         |
| 16 | 15/mORMotBatchInsert.dpr             |                         |
| 17 | 15/PerfTest.dpr                      | Fixed TRestBatch pattern |
| 18 | 15/PerfTestConsole.dpr               | Fixed TRestBatch pattern |
| 19 | 16/Project16Client.dpr               |                         |
| 20 | 16/Project16ServerHttp.dpr           |                         |
| 21 | 17/mORMotVCLTest.dpr                 | Full PUREMORMOT2        |
| 22 | 18/Project18Server.dpr               |                         |
| 23 | 19/Project19Server.dpr               |                         |
| 24 | 20/Project20Client.dpr               |                         |
| 25 | 20/Project20ServerInMemory.dpr       |                         |
| 26 | 21/Project21HttpClient.dpr           |                         |
| 27 | 21/Project21HttpServer.dpr           |                         |
| 28 | 24/MongoDBTests.dpr                  | Fixed TRestBatch pattern |
| 29 | 25/JSONPerfTests.dpr                 | Fixed comment syntax    |
| 30 | 26/RESTClient.dpr                    |                         |
| 31 | 26/RESTserver.dpr                    |                         |
| 32 | 27/Project14ServerHttpWrapper.dpr    |                         |
| 33 | 27/RegressionTestsServer.dpr         |                         |
| 34 | 28/RESTserver.dpr                    |                         |
| 35 | 28/RESTclient.dpr                    |                         |
| 36 | 30/MVCServer.dpr                     | Fixed TOrmTable, TRestBatch |
| 37 | 30/MVCServerMongoDB.dpr              | Fixed PBKDF2_SHA3 import |
| 38 | 30/MVCServerPostgreSQL.dpr           | Fixed TSqlDBConnectionProperties |
| 39 | 31/Project31ChatServer.dpr           |                         |
| 40 | 31/Project31ChatClient.dpr           |                         |
| 41 | 31/Project31SimpleEchoServer.dpr     | Fixed WebSocket API     |
| 42 | 34/Project34RTSPproxy.dpr            |                         |
| 43 | 35/01/ServBook.dpr                   |                         |
| 44 | 35/01/TestAll.dpr                    |                         |
| 45 | 35/02/ServBook.dpr                   |                         |
| 46 | 35/02/TestAll.dpr                    |                         |
| 47 | 35/03/ServBook.dpr                   |                         |
| 48 | 35/03/TestAll.dpr                    |                         |
| 49 | 35/04/ServBook.dpr                   |                         |
| 50 | 35/04/TestAll.dpr                    |                         |
| 51 | 35/05/ServBook.dpr                   |                         |
| 52 | 35/05/TestAll.dpr                    |                         |

### Failed (10) - Permanently Blocked

| #  | Project                          | Error                                 | Status                       |
|----|----------------------------------|---------------------------------------|------------------------------|
| 1  | 08/TaskDialogTest.dpr            | mormot.ui.login not found             | Blocked: UI unit missing     |
| 2  | 11/LogView.dpr                   | SynMemoEx not found                   | Blocked: SynMemoEx removed   |
| 3  | 12/SynDBExplorer.dpr             | mormot.ui.orm not found               | Blocked: UI framework        |
| 4  | 22/JSHttpApiServer.dpr           | Executable undeclared (SynSM)         | Blocked: SynSM removed       |
| 5  | 23/TestMustache.dpr              | SynSM not found                       | Blocked: SynSM removed       |
| 6  | 23/TestSynSM.dpr                 | SynSM.inc not found                   | Blocked: SynSM removed       |
| 7  | 27/FMClient.dpr                  | SynCrossPlatformJSON not found        | Blocked: CrossPlatform removed |
| 8  | 27/VCLClient.dpr                 | SynCrossPlatformJSON not found        | Blocked: CrossPlatform removed |
| 9  | 27/RegressionTests.dpr           | SynCrossPlatform.inc not found        | Blocked: CrossPlatform removed |
| 10 | 27/MobileClient.dpr              | SynCrossPlatformJSON not found        | Blocked: CrossPlatform removed |
| 11 | 28/RESTserver_wrappers.dpr       | Delphi-only (ODBC), no .lpi           | Blocked: No FPC project file |
| 12 | 30/MVCServerFirebird.dpr         | TSqlDBZeosConnectionProperties        | Blocked: No Zeos/FireDAC driver |
| 13 | MainDemo/SynFile.dpr             | mORMoti18n not found                  | Blocked: UI framework removed |

**Delphi: 52/65 (80%) passed** (excluding permanently blocked projects)

Those who are interested can continue to improve the SKILL.md file, and then use Claude Code to migrate the remaining Samples files to mORMot 2.

Offline

#13 2025-12-14 15:59:49

zen010101
Member
Registered: 2024-06-15
Posts: 152

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Javierus wrote:

The temporal address for it is: http://wp.cyber.es/mORMot2-SAD-Index.html

I really like this version. Even if it doesn't end up being selected as the official version, please keep it.

Thank you again, Javierus, for presenting us with such concise and impactful mORMot 2 materials. I believe this will help many people. smile

Offline

#14 2025-12-15 18:42:11

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

ab wrote:

It could be better to work at documentation source level, i.e. on the SynProject .pro text file itself.

That is, update  https://github.com/synopse/mORMot2/blob … ormot2.pro

Are you sure on keeping the .pro format? Do you still use it?

if so, how can I install SynProject to be sure the .pro files work? The AI is happy with it and has made an automated tool to update the .pro from the .md, but I'd prefer watching the .pro file result before sending you the pull request

Offline

#15 2025-12-15 20:09:26

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

It needs Delphi 7 to be compiled, sadly.
You can download a SynProject executable from
https://synopse.info/forum/viewtopic.php?id=53

Just unzip it, and call it with the .pro file as argument.
It should display the .pro file content in its editor.
Then click on the "word" icon, and select "SAD".
Parse all source code + SAD rtf for instance to generate the output in Word.

Of course, you need a Word instance installed.

But a set of .md file may be just fine too.
I guess it is easiest.

Offline

#16 2025-12-16 08:05:18

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

the word options give me Access violation at address 0000000
The website export does not seem to do anything

Offline

#17 2025-12-16 09:10:23

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

I guess the Word version you have is too recent.
We need ActiveX Automation of a local Word instance.

Offline

#18 2025-12-16 15:21:32

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Re-posted latest update to:
https://wp.cyber.es/mORMot2/mORMot2-SAD-Index.html

All the examples and snippets have been compiled.

Offline

#19 2025-12-16 15:24:14

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Offline

#20 2025-12-16 16:13:12

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,345
Website

Re: Trying to convert mORMot1 documentation conversion to mORMot2

OK the .pro files are clearly not fully correct but I did not expect much from the AI since this is in fact a very complex format.

Some hints:
- encoding should be CP 1252 not UTF-8
- lines with {} only should just be avoided.
- sometimes the .pro tables format are fine but sometimes it is not

And of course, the whole format of the .pro itself is not understood, but it is a "complex single file to rule them all" so we can't expect miracles.

I suspect the markdown files are better options, and match what most users expect.
Thanks a lot anyway for all this!

Offline

#21 2025-12-18 22:45:35

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

I can expand the documentation to cover this report, and send it for your consideration, if you wish:

mORMot2 Undocumented Features Report

Generated: 2025-12-18
Scope: Comprehensive analysis of mORMot 2.0-2.3 features
Method: Comparison of SAD documentation vs 129 source units and 14 internal CLAUDE.md files
Total Features Analyzed: 20

Executive Summary

The mORMot2 SAD was adapted from mORMot1 documentation. While existing content is accurate (100% alignment verified), 20 features lack substantive documentation.

Priority Distribution

  • HIGH (4): IDocList, OpenAPI Generator, ACME, LDAP

  • MEDIUM (5): Async HTTP, Relay/Tunnel, RSA, PKCS#11, Windows Security

  • LOW (11): PDF, Reports, Compression, 7-Zip, PE/COFF, etc.

Top 5 Most Important

  1. HIGH - ACME/Let's Encrypt - MENTION_ONLY - Medium effort

  2. HIGH - LDAP Client - MENTION_ONLY - Medium effort

  3. HIGH - OpenAPI Client Generator - MISSING - Medium effort

  4. HIGH - IDocList/IDocDict - MENTION_ONLY - Small effort

  5. MEDIUM - WebSocket Relay/Tunnel - MENTION_ONLY - Medium effort

Feature Analysis

1. ACME/Let's Encrypt Native Support

Status: MENTION_ONLY
Priority: HIGH
Source: src/net/mormot.net.acme.pas
Internal Docs: src/net/CLAUDE.md

What's in SAD

  • Chapter 01: Listed as feature ("ACME/Let's Encrypt - Automatic TLS certificate management")

  • Chapter 03: Listed in units table (mormot.net.acme | ACME/Let's Encrypt)

  • Chapter 20.6.3: Only documents external certbot, NOT native mORMot support

What's Missing

// Key classes NOT documented:
TAcmeClient          // Main ACME v2 client class
TJwsHttpClient       // JWS HTTP client for ACME protocol
TAcmeChallenge       // HTTP-01 challenge structure
TOnAcmeChallenge     // Callback for challenge handling
THttpFullServer      // HTTP server with built-in ACME support

// Constants:
ACME_LETSENCRYPT_URL       // Production Let's Encrypt
ACME_LETSENCRYPT_DEBUG_URL // Staging/testing
ACME_ZEROSSL_URL           // ZeroSSL alternative

Impact: Developers don't know mORMot can automatically obtain TLS certificates without external tools like certbot.

---

2. LDAP Client

Status: MENTION_ONLY
Priority: HIGH
Source: src/net/mormot.net.ldap.pas
Internal Docs: src/net/CLAUDE.md

What's in SAD

  • Chapter 03: Listed in units table (mormot.net.ldap | LDAP client)

  • Chapter 21: Fictitious references to GetUserIdFromLDAP() (doesn't exist)

What's Missing

// Key classes NOT documented:
TLdapClient           // Main LDAP client class
TLdapCheckMember      // Group membership verification
TCldapDomainInfo      // Domain info via CLDAP

// Key functions:
CldapGetDomainInfo()  // Query domain controller
function LdapAuth()   // HTTP BASIC auth via LDAP

// Constants:
LDAP_PORT = '389'
LDAP_TLS_PORT = '636'

Impact: Developers can't leverage mORMot's native LDAP client for Active Directory integration.

---

3. OpenAPI Client Generator

Status: MISSING (SAD documents export, not import)
Priority: HIGH
Source: src/net/mormot.net.openapi.pas
Blog Post: Swagger/OpenAPI Client Generator

What's in SAD

  • Chapter 17.5: Documents generating OpenAPI spec FROM mORMot services (export)

  • Does NOT document consuming external OpenAPI specs to generate clients (import)

What's Missing

// Key classes NOT documented:
TOpenApiParser        // Parse OpenAPI 3.x / Swagger 2 specs
TOpenApiVersion       // oav2 (Swagger), oav3 (OpenAPI 3.x)
TOpenApiSchema        // Schema definition wrapper

// Usage pattern (NOT documented):
var
  Parser: TOpenApiParser;
begin
  Parser := TOpenApiParser.Create;
  Parser.ParseFile('api-spec.json');
  Parser.GeneratePascalUnit('GeneratedClient.pas');
end;

Impact: This is a major productivity feature added in v2.3 - developers can consume any REST API with generated type-safe clients.

---

4. IDocList / IDocDict Interfaces

Status: MENTION_ONLY
Priority: HIGH
Source: src/core/mormot.core.variants.pas
Blog Post: Easy JSON with Delphi and FPC

What's in SAD

  • Chapter 04.5: Extensive TDocVariant/TDocVariantData documentation

  • Chapter 04 table: Mentions IDocDict, IDocList without explanation

  • NO examples or usage patterns for the interfaces

What's Missing

// Modern interface-based access (NOT documented):
var
  List: IDocList;
  Dict: IDocDict;
begin
  // Automatic memory management via interfaces
  List := DocList('[1, 2, 3, "text"]');
  Dict := DocDict('{"name": "John", "age": 30}');

  // Safe iteration
  for item in List do
    WriteLn(item);

  // Direct access
  WriteLn(Dict['name']);  // 'John'
end;

Impact: Developers use verbose TDocVariantData patterns when cleaner IDocList/IDocDict is available.

---

5. Async HTTP Server (Direct Usage)

Status: PARTIAL
Priority: MEDIUM
Source: src/net/mormot.net.async.pas

What's Documented

  • useHttpAsync mode for TRestHttpServer ✓

  • Server mode comparison table ✓

What's Missing

// Direct HTTP server (NOT via TRestHttpServer):
THttpAsyncServer       // Event-driven HTTP server
TPollAsyncSockets      // Low-level async socket handling
THttpProxyServer       // HTTP proxy with caching

// Architecture details:
// - IOCP on Windows (USE_WINIOCP)
// - epoll on Linux, kqueue on BSD/macOS
// - Thread pool configuration

---

6. WebSocket Relay / Tunnel

Status: MENTION_ONLY
Priority: MEDIUM (high enterprise value!)
Source: src/net/mormot.net.relay.pas, src/net/mormot.net.tunnel.pas

What's in SAD

  • Chapter 03: Listed in table (mormot.net.relay | Firewall traversal)

  • NO documentation of how to use it

What's Missing (SIGNIFICANT FEATURE!)

                    RELAY ARCHITECTURE (from source code)

    +------------+           PUBLIC RELAY           PRIVATE RELAY
    | client 1   |---\    +----------------+    +----------------+
    +------------+    --->| encapsulation  |<-->| decapsulation  |
                          +----------------+    +----------------+
    +------------+    --->|                |    |                |---> ORM/SOA Server
    | client 2   |---/    +----------------+    +----------------+     (behind firewall)
    +------------+
         internet              simple Linux box        corporate LAN

Key classes:

  • TPublicRelay - Public server (internet-facing)

  • TPrivateRelay - Private client (inside firewall)

  • TTunnelLocal - TCP/UDP port forwarding

Benefits:

  • Access servers behind firewalls WITHOUT firewall changes

  • Regular WebSocket connection (works through proxies)

  • Built-in encryption (SynLZ + optional ECDHE)

---

7. Windows Security (SID/DACL/ACE/SDDL)

Status: NO_DOC
Priority: MEDIUM
Source: src/core/mormot.core.os.security.pas

What's Missing

// Cross-platform Windows security model implementation:
RawSid                    // Binary SID storage
TSid                      // SID structure
TSecurityDescriptor       // Full SD wrapper
SDDL parsing/generation   // Security Descriptor Definition Language

// Key features:
// - Parse/generate SIDs (S-1-5-21-...)
// - DACL/SACL manipulation
// - Conditional ACE expressions
// - Active Directory definitions
// - Kerberos KeyTab support

---

8. Native RSA Encryption

Status: MENTION_ONLY
Priority: MEDIUM
Source: src/crypt/mormot.crypt.rsa.pas

What's Missing

// Pure Pascal RSA implementation (no OpenSSL required):
TBigInt              // Big integer arithmetic
TRsaContext          // RSA computation context
TRsaPrivateKey       // Private key handling
TRsaPublicKey        // Public key handling

// Features NOT documented:
// - FIPS-level key generation
// - RSASSA-PKCS1-v1.5 signatures
// - RSASSA-PSS signatures
// - Key pair validation
// - Performance notes (slower than OpenSSL, fastest native Pascal)

---

9. PKCS#11 / HSM Support

Status: NO_DOC (single table mention)
Priority: MEDIUM
Source: src/crypt/mormot.crypt.pkcs11.pas

What's Missing

// Hardware Security Module integration:
ICryptCertPkcs11     // Certificate interface with HSM info
TPkcs11              // PKCS#11 library wrapper
TPkcs11Object        // Token object abstraction

// Key features:
// - Load certificates from HSM
// - Sign/verify using hardware keys
// - PIN management
// - Slot/token discovery
// - Integration with Cert()/Asym() factories

---

10-12. Lower Priority Features

10. DNS Client - mormot.net.dns.pas
Query any DNS record type (A, MX, SRV, TXT, etc.)

11. mget/THttpPeerCache - src/tools/mget/
HTTP downloader with P2P LAN cache, resume, hash verification

12. Command Line Parser - mormot.core.rtti.pas
RTTI-based argument parsing: SetObjectFromExecutableCommandLine()

---

13-20. Phase 2 Features (Low Priority)

13. PDF Generation Engine - mormot.ui.pdf.pas
TPdfDocument, PDF/A compliance, encryption, Uniscribe

14. Report Engine - mormot.ui.report.pas
TGdiPages with preview, print, PDF export

15. Compression (Lizard, Zstd) - mormot.lib.lizard.pas
TAlgoLizard: 1.8 GB/s decompression speed

16. 7-Zip Integration - mormot.lib.win7zip.pas
I7zReader/I7zWriter interfaces

17. PE/COFF Parser - mormot.misc.pecoff.pas
TSynPELoader: Cross-platform Windows executable analysis

18. ORM Grid Integration - mormot.ui.grid.orm.pas
TOrmTableToGrid: Bind ORM results to TDrawGrid

19. Console App Framework - mormot.app.console.pas
ICommandLine/TCommandLine with interactive prompting

20. Database Proxy - mormot.db.proxy.pas
Access databases through HTTP relay

Consolidated Summary - All Features by Priority

HIGH Priority:

  1. IDocList/IDocDict - MENTION_ONLY - Small effort - Expand Ch 04.5

  2. OpenAPI Client Generator - MISSING - Medium effort - New section Ch 17

  3. ACME/Let's Encrypt - MENTION_ONLY - Medium effort - New section Ch 20

  4. LDAP Client - MENTION_ONLY - Medium effort - New section Ch 21

MEDIUM Priority:

  1. Async HTTP (direct) - PARTIAL - Medium effort - Expand Ch 11

  2. WebSocket Relay/Tunnel - MENTION_ONLY - Medium effort - New section Ch 11/20

  3. Native RSA - MENTION_ONLY - Medium effort - Expand Ch 23

  4. PKCS#11/HSM - NO_DOC - Medium effort - New section Ch 23

  5. Windows Security - NO_DOC - Medium effort - New section Ch 21

LOW Priority:

  1. DNS Client - MENTION_ONLY - Small effort - Optional Ch 03

  2. mget/PeerCache - NO_DOC - Small effort - Optional new section

  3. Command Line Parser - NO_DOC - Small effort - Optional Ch 04

  4. PDF Generation - MENTION_ONLY - Medium effort - New chapter/section

  5. Report Engine - NO_DOC - Medium effort - New chapter/section

  6. Compression (Lizard/Zstd) - MENTION_ONLY - Small effort - Expand Ch 03

  7. 7-Zip Integration - MENTION_ONLY - Small effort - Optional

  8. PE/COFF Parser - NO_DOC - Small effort - Optional

  9. ORM Grid Integration - NO_DOC - Small effort - Optional

  10. Console App Framework - NO_DOC - Small effort - Optional

  11. Database Proxy - MENTION_ONLY - Small effort - Optional

Recommendations

Immediate Actions (High Impact, Low Effort)

  • IDocList/IDocDict - Expand Chapter 04.5 (small effort, high value). Source: src/core/CLAUDE.md, blog post available

Short-Term Actions (High Impact)

  • OpenAPI Generator - New section in Chapter 17 (blog post available)

  • ACME/Let's Encrypt - New section in Chapter 20 or 21

  • LDAP Client - New section in Chapter 21

Medium-Term Actions

  • WebSocket Relay/Tunnel - New section (high enterprise value)

  • Native RSA/X.509 - Expand Chapter 23

  • PKCS#11/HSM - New section in Chapter 23

Information Sources

Internal CLAUDE.md - Detailed technical docs - src/*/CLAUDE.md (14 files)
Blog Posts - Feature announcements - blog.synopse.info
Source Comments - API documentation - *.pas files
Test Suite - Usage examples - /mnt/w/mORMot2/test/

Blog Posts to Reference:

---

Report End

Offline

#22 Yesterday 02:59:29

zen010101
Member
Registered: 2024-06-15
Posts: 152

Re: Trying to convert mORMot1 documentation conversion to mORMot2

I would like to add one:

### mormot.app.daemon

Daemon (e.g. Windows Service) Stand-Alone Background Executable Support
- Parent Daemon Settings Class
- Parent Daemon Application Class

### mormot.app.agl

Launch, Watch and Kill Services or Executables from a main Service Instance
- `TSynAngelizeService` Sub-Service Settings and Process
- `TSynAngelize` Main Service Launcher and Watcher

Offline

#23 Yesterday 11:24:45

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

zen010101 wrote:

I would like to add one:

### mormot.app.daemon

Daemon (e.g. Windows Service) Stand-Alone Background Executable Support
- Parent Daemon Settings Class
- Parent Daemon Application Class

### mormot.app.agl

Launch, Watch and Kill Services or Executables from a main Service Instance
- `TSynAngelizeService` Sub-Service Settings and Process
- `TSynAngelize` Main Service Launcher and Watcher

The docs/ folder in the latest mORMot2 commit already include those two units:

● Both units are documented in the mORMot2-SAD documentation. Here's the summary:

  mormot.app.daemon.pas

  Documented in:
  - Chapter 03 (line 366): Listed in the unit table as "Daemon/service support"
  - Chapter 20 (line 198): Used in code examples for daemon creation
  - Chapter 26 (line 150, 548): Mentioned in the architecture overview and deployment section for Windows service deployment

  The documentation covers cross-platform daemon/service functionality - the same code can run as a console application, Windows service, or Linux daemon.

  mormot.app.agl.pas (Angelize)

  Documented in:
  - Chapter 03 (line 367): Listed as "Application Graphics Layer" (note: the alignment report questions this description)
  - Chapter 20 (section 20.5, starting line 356): Comprehensive documentation of TSynAngelize as mORMot's cross-platform process manager

  Chapter 20.5 "Process Manager (Angelize)" provides the most detailed coverage:
  - Describes TSynAngelize as similar to NSSM (Windows) or supervisord (Linux)
  - JSON-configured and integrated with the daemon framework
  - Includes architecture diagrams, code examples, and a feature comparison table with NSSM, supervisord, and systemd

Offline

#24 Yesterday 12:14:18

ttomas
Member
Registered: 2013-03-08
Posts: 147

Re: Trying to convert mORMot1 documentation conversion to mORMot2

THttpAsyncClient doc, ex. Sample of using THttpAsyncClient in THttpAsyncServer service! Non blocking async service call remote service with async client.

Last edited by ttomas (Yesterday 12:16:35)

Offline

#25 Yesterday 14:40:35

Javierus
Member
Registered: 2019-09-18
Posts: 75

Re: Trying to convert mORMot1 documentation conversion to mORMot2

zen010101 wrote:

Those who are interested can continue to improve the SKILL.md file, and then use Claude Code to migrate the remaining Samples files to mORMot 2.

Will you commit the working examples to the official repository?

Offline

#26 Yesterday 18:13:16

zen010101
Member
Registered: 2024-06-15
Posts: 152

Re: Trying to convert mORMot1 documentation conversion to mORMot2

Javierus wrote:

Will you commit the working examples to the official repository?

I'm not sure if everyone needs it. I can put it in my repo for a while first.

Offline

Board footer

Powered by FluxBB