Skip to content

OSC on Python

s0600204 edited this page Oct 5, 2024 · 7 revisions

OSC on python

What follows is a comparison of different python modules that each implement OSC to some degree.

(The purpose of this is/was to help consider moving away from pyliblo - it has not been updated in a long time and the author hasn't been active for several years - but this may also prove useful to other interested parties.)

Feel free to suggest other modules not mentioned below.

So, in no particular order, the modules at a glance:

Module Licence Latest Release Last Known Activity Transport SLiP Encoding
.   Version Date   UDP TCP  
pyliblo LGPL 2.1 0.10.0 2015-04 2016-06 Yes with PR with PR
pyliblo3 LGPL 2.1 0.16.2 2024-07 2024-07 Yes One-way No
aiolo BSD 3-Clause 4.1.1 2020-07 2020-07 Yes Maybe Single-ENDed
python-osc Unlicenced 1.9.0 2024-08 2024-08 Yes Yes Yes
pyOSC LGPL 2.1 0.3.5b-5294 2008-08 2011-06 Yes Yes No
oscpy MIT 0.6.0 2023-06 2023-12 Yes No No
osc4py3 CeCILL 2.1 1.0.8 2018-08 2021-12 Yes WIP Single/Double

pyliblo

Links:

Good:

  • python binding for the excellent liblo library.

Ugly:

  • No response to issues/PRs from Author in recent years (in fact, Author not active publicly on GitHub in any meaningful fashion since August 2018).

pyliblo3

Links:

Good:

  • python binding for the excellent liblo library, like the project it was forked from.

Ugly:

  • Forked from pyliblo (first commit of repository is version 0.9.1, the next commit jumps to 0.10.0), but the change-history of its origin was not retained, nor does it attribute any of the original author(s) (in the commit metadata or in commit messages).
  • Most releases are not tagged in the source.

aiolo

Links:

Good:

  • python binding for the excellent liblo library.

Worth noting:

  • Makes use of python's asyncio module.

Bad:

  • Documentation non-existent (even code-comments are scarce).

Ugly:

  • Received messages are stripped of context (source address, OSC path): only a message's value(s) are dispatched to listeners. This makes it impossible to tell where a message came from (and thus, where to send a response).

python-osc

Links:

Good:

  • At first glance, this appears to have a fairly clean API.

Fair:

pyOSC

Links:

Bad:

  • Last known commit was 11 years ago.
  • Readme refers to a 0.3.6 release that isn't tagged on GitHub, nor available on PyPI. (The most recent release available is 0.3.5b-5294)

Ugly:

  • Project website is offline (viewable on archive.org).
  • Primary source was on Gitorious, which is now defunct.
  • No response to issues or PRs (on GitHub) from project creators.
  • No fewer than two PRs (on GitHub) claiming to make it compatible with some version of python 3

oscpy

Links:

osc4py3

Links:

Good:

  • Different threading models available.
  • Well documented.

Bad:

  • Mirror is not in sync with source.
  • Activity very low in recent years.

Ugly:

  • Work on TCP support ceased in 2015 (and what is present is unusable).
Clone this wiki locally