[OSC_dev] Application Profiles

Jamie Bullock jamie at postlude.co.uk
Mon Dec 22 01:22:44 PST 2008


On Sun, 2008-12-21 at 20:41 +0100, Gaspard Bucher wrote:
<snip>
> 2. libosc limitations
> 
> We need to conform to OSC spec and make things easy to implement and
> process. This means we need to avoid ambiguities and superfluous
> parsing. We have two choices here.
> 
> a. use a special syntax for "meta" methods (get information, type, etc
> = equivalent of ".h" files in C)
> 
> The existence of this special syntax should not make it too heavy to
> process incoming messages. I propose Gabriel's idea of using
> "/some/url(info)", because the trailing ")" is easy to detect and
> means "hey osc processor, this is a special url". It also conforms to
> OSC spec.
> 
> b. use special method names
> 
> This has the advantage of leaving the osc parser out of the "meta"
> thing altogether, but it means you have to register all the "meta"
> methods: /foo/bar/.info, /foo/bar/.type, etc.

c. use special server methods. I call these 'static' methods, because in
Integra they are the only methods that are not generated dynamically at
runtime.

/info /foo/bar

This has the advantage of being super-easy to parse on the server, and
has the nice effect that you get a top-level 'meta' address space
(/info, /reply_to etc.) before you have added any 'application-specific'
methods. More details in this post:  http://tr.im/2jl4
 

<snip>
> What I would love to have is:
> 
> a. you add some service on the network (a controller full of buttons
> and sliders / a software like VLC / anything)
> b. rubyk sees your new service because of zeroconf automatic service discovery
> c. hey ! this thing conforms to some very minimal things rubyk understands
> ===>
> d. I can present an osc browser of the new service to the rubyk user,
> with help messages and such
> e. the user can put a slider on the rubyk patcher and connect it to
> the element in the browser
> f. moving the slider, changes the value of the remote thing
> g. when something else updates the remote thing, the slider in rubyk
> moves as well

I think these are good goals!

> 5. conclusion
> 
> Everyone is free to ignore this effort and the obvious benefit for the
> end user. But if some of this succeeds, he/she will produce this
> disappointing printer wich just doesn't want to work without the
> burden of installing drivers in a world where all the rest just plays
> together smoothly.
> 
> In order to produce the upper mentioned "browser", we need:
> 
> a. /reply_to
Agree!

> b. /some/url/  ==> trailing "/" = listing
I prefer /namespace /some/url. Reasons: 

1. Meta/static methods live in the server's top-level address space. I
think this makes for a cleaner interface than having them scattered all
over the address space. "/" seems anti-DRY somehow.
2. It's easier to implement
3. It carries more semantic information

However, I think the trailing slash idea is OK, and would happy to add
it to Integra if there's some consensus.

> c. /some/url   ==> get value
Agree!

> d. /some/url 4 ==> set value
Agree!

> e. /some/url/.info ==> human readable message
Again, I prefer

/info /some/url

...reasons same as above (minus 3!)

> f. use zeroconf !
Agree!


> That's not such a deal and I'm ready to provide just the code for this
> (with oscpack and zeroconf) in a simple to use package if there is a
> need.

Great!

Jamie

-- 
www.postlude.co.uk
http://www.linkedin.com/in/jamiebullock




More information about the OSC_dev mailing list