exclaim/doc/notes.org

60 lines
3.7 KiB
Org Mode

#+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.
+ [[https://gitlab.com/eql/EQL5-Android][EQL5-Android]] client for Android, iOS, and desktop + [[https://github.com/McCLIM/McCLIM][McCLIM]] client for desktop, web ([[https://github.com/scymtym/McCLIM/tree/wip-broadway][Broadway backend]]; [[https://old.reddit.com/r/Common_Lisp/comments/dfwbiz/a_prototype_of_mcclim_in_browser_using_the_gtk/][demo]]), Emacs ([[https://gist.github.com/lukego/0b74b94492066ae2b8c2a12b18e845c7][CLIME]]; [[http://twitter.com/lukego/status/1387747747864973312][demo]]), and TUI ([[https://github.com/dkochmanski/charming-clim][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 + [[https://github.com/strophe/libstrophe][libstrophe]] + libstrophe calls itself "minimalist"...might be about as much work as #1 to write the required features
3. [Python] [[https://github.com/pinterface/burgled-batteries][burgled-batteries]]/[[https://github.com/bendudson/py4cl][py4cl]]/[[https://github.com/metawilm/cl-python][cl-python]] + slixmpp/[[https://github.com/horazont/aioxmpp][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++] [[https://github.com/clasp-developers/clasp][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.
* Resources
1. [[https://xmpp.org/rfcs/rfc6120.html][Extensible Messaging and Presence Protocol (XMPP): Core]]
2. https://common-lisp.net/project/cl-plus-ssl/
3. https://github.com/Shinmera/dns-client
4. https://github.com/CodyReichert/awesome-cl#xml
* 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
#+BEGIN_QUOTE
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.
#+END_QUOTE
7. exclaim - ties into "Jabber"; also starts with "ex" (X), tying into "XMPP"
8. proclaim
9. treacle
#+BEGIN_QUOTE
2. Cloying sentimental speech.
[...]
4. (obsolete) An antidote for poison; theriac.
5. (obsolete, figuratively) Any all-powerful curative; a general remedy, a cure-all.
#+END_QUOTE
Others
1. Neo/[The] One - "[whose] coming would hail the destruction of the Matrix"