60 lines
3.7 KiB
Org Mode
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"
|