exclaim/doc/notes.org

3.7 KiB

#+TITLE:XMPP Client Library

Aims

  1. XMPP Advanced Client and AV Calling compliance
  2. Must be possible to use to create clients on all platforms
  3. Do not restrict the kind of UI library users can make
  4. Make it easy to implement a new XML element

Strategies

  1. native Common Lisp library

    • From what I hear, it's a lot of work to write an XMPP client library, even if using TLS, XML, and DNS libraries.
    • EQL5-Android client for Android, iOS, and desktop
    • McCLIM client for desktop, web (Broadway backend; demo), Emacs (CLIME; demo), and TUI (ncurses backend)

      • Most of those backends are WIP, and I'm not aware of McCLIM having Windows or Wayland support…
    • An isomorphic web framework like CLOG may also be an option.
  2. [C] CFFI + libstrophe

    • libstrophe calls itself "minimalist"…might be about as much work as #1 to write the required features
  3. [Python] burgled-batteries/py4cl/cl-python + slixmpp/aioxmpp/nbxmpp

    • Will this work on Android and iOS?

      • cl-python + EQL5-Android might. cl-python runs Python in Lisp. Might not be performant, but it might work.
  4. [C++] Clasp/ECL + Swiften

    • Will this work on Android and iOS?
  5. [Java] ABCL + Smack

    • Will this work on Android and iOS? ABCL does not yet have Dalvik/ART support…
  6. [JavaScript] Parenscript + strophe.js/xmpp.js + ReactNative

    • I haven't heard of anyone using Parenscript + ReactNative to make cross-platform applications…try making a "hello world" cross-platform application?
  7. Make separate desktop-only learning project using #3 or #5. Later, take up #1.

Names

Containing "cl"

  1. canticle - "A chant, hymn or song, especially a nonmetrical one, with words from a biblical text." - ties into "stanzas"
  2. clairvoyance
  3. clamor
  4. claptrap - "Empty verbiage or nonsense." - ties into "Jabber"
  5. conclave - "A private meeting; a close or secret assembly."
  6. declaim - meaning #1 ties into Matrix, #2 and #3 into "Jabber"; also happens to be a Common Lisp identifier

    1. To object to something vociferously; to rail against in speech.
    2. To recite, e.g., poetry, in a theatrical way; to speak for rhetorical display; to speak pompously, noisily, or theatrically; bemouth; to make an empty speech; to rehearse trite arguments in debate; to rant.
    3. To speak rhetorically; to make a formal speech or oration; specifically, to recite a speech, poem, etc., in public as a rhetorical exercise; to practice public speaking.
  7. exclaim - ties into "Jabber"; also starts with "ex" (X), tying into "XMPP"
  8. proclaim
  9. treacle

    1. Cloying sentimental speech.

    […]

    1. (obsolete) An antidote for poison; theriac.
    2. (obsolete, figuratively) Any all-powerful curative; a general remedy, a cure-all.

Others

  1. Neo/[The] One - "[whose] coming would hail the destruction of the Matrix"