Skip to content

Developer guide: drop the Freshdesk case study and the Mirah port - #5695

Merged
shai-almog merged 6 commits into
masterfrom
devguide-drop-freshdesk
Sep 4, 2026
Merged

Developer guide: drop the Freshdesk case study and the Mirah port#5695
shai-almog merged 6 commits into
masterfrom
devguide-drop-freshdesk

Conversation

@shai-almog

Copy link
Copy Markdown
Collaborator

Two pieces of the guide that document things which no longer exist.

The Freshdesk/Mobihelp case study (~544 lines, three top-level sections) taught
native interfaces against an SDK discontinued years ago, behind vendor links that no
longer resolve. It was also largely a duplicate: the same chapter already covers
native interfaces, bundling a jar or aar on Android, CocoaPods on iOS, and packaging
the result as a cn1lib — all in current form. What the case study uniquely had was the
vendor.

Going with it: 14 dead links out of the link ratchet, seven demo classes, the Android
vendor stubs, the Objective-C implementation, and five images that existed only to
serve it.

"Port a language to Codename One" is a walkthrough of porting Mirah — last released
about a decade ago — via a NetBeans module and an Ant script, narrated in the third
person about who did the work.

The one thing worth keeping was the picture. The native interfaces section now carries a
vendor-neutral SVG of the round trip, plus a paragraph on the part that actually catches
people out: an asynchronous SDK can't return a value through the interface, so the native
side calls back into a static Java method instead.

Net: 1451 deletions, 60 insertions. Both ratchets shrink and neither gains an entry —
missing-code-blocks 91 → 90, guide-links 35 → 21.

Verified locally: demos compile plus the bytecode compliance check, every guide gate,
the unused-image check, asciidoctor at --failure-level WARN, and Vale plus LanguageTool
on the edited chapter. The three images the guide dropped are still referenced by blog
posts, which keep their own copies under docs/website/static/blog/ — checked before
deleting.

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 4, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-04T10:02:16.105530Z 74637f5 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9695761422

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/developer-guide/Advanced-Topics-Under-The-Hood.asciidoc Outdated
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Developer Guide build artifacts are available for download from this workflow run:

Developer Guide quality checks:

  • AsciiDoc linter: No issues found (report)
  • Vale: No alerts found (report)
  • Paragraph capitalization: No paragraph capitalization issues (report)
  • LanguageTool: No grammar matches (report)
  • Image references: No unused images detected (report)

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Cloudflare Preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3fd6a4f111

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/developer-guide/Advanced-Topics-Under-The-Hood.asciidoc
Comment thread docs/developer-guide/img/native-interface-round-trip.svg Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c86818b38d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/developer-guide/Advanced-Topics-Under-The-Hood.asciidoc Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 439181c2e2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/developer-guide/img/native-interface-round-trip.svg Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d107a494cd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/developer-guide/img/native-interface-round-trip.svg Outdated
shai-almog and others added 6 commits September 4, 2026 12:58
The "Integrating 3rd party native SDKs" walkthrough taught native interfaces
against Freshdesk Mobihelp -- an SDK discontinued years ago, behind vendor links
that no longer resolve. Its 544 lines were also a duplicate: the same chapter
already covers native interfaces, bundling an aar or jar on Android, CocoaPods
on iOS, and packaging the result as a cn1lib, all in current form. What the case
study uniquely had was the vendor.

Deleting it takes 14 dead links out of the link ratchet with it, along with the
seven demo classes, the Android vendor stubs, the Objective-C implementation and
five images that existed only to serve it.

"Port a language to Codename One" goes too. It is a walkthrough of porting
Mirah, a language whose last release was a decade ago, complete with a NetBeans
module and an Ant script, narrated in the third person about who did the work.

The one thing worth keeping was the picture, so the native interfaces section
now has a vendor-neutral diagram of the round trip and a paragraph on the part
that actually catches people out: an asynchronous SDK cannot return through the
interface, so it calls back into a static Java method instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…agram

The new paragraph and the diagram label both said primitives and strings, while
the paragraph directly above them lists single dimension primitive arrays and
PeerComponent values as well. A reader wrapping an API that needs a buffer would
have serialized it for no reason, and one wanting a native widget would have
concluded it cannot cross at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Deleting the case study took the only instructions for integrating an iOS SDK
that is not a pod. CocoaPods cannot install a vendor's static library and
headers, and Working-With-iOS only mentions .h and .a files in passing as the
thing pods save you from -- so an SDK shipped that way lost its documented route
entirely. There is now an iOS counterpart to the Android 3rd party section:
pods first, then where .h, .a and .bundle go, that a .framework has to be zipped
under its own name, and what ios.add_libs is for. No vendor in it.

The diagram also drew one return arrow and labelled it as the static callback,
which is only how an asynchronous SDK answers. A native method returning a
supported type returns it directly. The arrows are now separate -- a solid one
for the marshalled return, a dashed one into the callback -- and the paragraph
beside it says the same.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The new section said to copy vendor binaries into the ios native directory,
which is the Ant layout. Cn1libMojo packages ios/src/main/objectivec and
ios/src/main/resources, so a Maven project that follows the old wording drops
the SDK somewhere the native archive never picks up.

Headers now go with the sources in objectivec, binaries and bundles in
resources, a framework zipped under its own name in resources, and native/ios is
called out as the legacy Ant layout -- which is what Analytics.asciidoc already
says and what this chapter's own native interface table already shows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The call arrow ran from NativeInterface to the Vendor SDK box and left the Impl
class connected to nothing, which is the opposite of what the chapter teaches:
the interface is marshalled into the per-platform implementation, and only that
implementation talks to the SDK.

Redrawn so the Impl sits opposite the interface with the call and return arrows
between them, the SDK sits below the Impl with its own pair, and the dashed
callback path starts where the late answer actually comes from. The paragraph
beside it says nothing calls the vendor's SDK except the implementation class.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Rerouting the synchronous arrows through the implementation left the dashed one
starting inside the Vendor SDK box and crossing straight into Java, which says
the SDK can skip the implementation layer -- the opposite of the sentence under
it. A vendor callback fires into the implementation, and the implementation is
what calls the static Java method.

The dashed path now leaves the impl's left edge, drops clear of the SDK box and
crosses back, and the footer says the implementation is the only thing that
talks to the SDK in either direction.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@shai-almog
shai-almog force-pushed the devguide-drop-freshdesk branch from d107a49 to 74637f5 Compare September 4, 2026 09:58
@shai-almog
shai-almog merged commit ac826b1 into master Sep 4, 2026
14 checks passed
@shai-almog
shai-almog deleted the devguide-drop-freshdesk branch September 4, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant