r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3 Extensions] REBOL 3 Extensions discussions

BrianH
23-Jul-2010
[1319]
This design-with-discussion model we've been doing lately has worked 
pretty well for modules. Perhaps it can work for callbacks and IPC 
as well. All you need is a lead designer (so it isn't design-by-committee) 
and some quality feedback.
Maxim
23-Jul-2010
[1320]
hehe ... I just realized that Carl and I are editing the page simultaneously...
BrianH
23-Jul-2010
[1321]
Better edit different sections.
Maxim
23-Jul-2010
[1322]
I just added quick notes at the end.  Carl is flusing out the callback 
modes...
BrianH
23-Jul-2010
[1323]
Oh, your GC thing should consider concurrency as well. GC won't necessarily 
be the only thing going on.
Pekr
23-Jul-2010
[1324]
isn't Carl an author of AmigaOS, a message passing based OS? Aren't 
IPC techniques well known and defined concepts nowadays? Maybe we 
should not come-up with something completly new, just choose what 
fits our model. E.g. we have got async devices ... what about having 
IPC/messaging device?
BrianH
23-Jul-2010
[1325x2]
Obviously, we would be best served by Carl as the lead designer on 
IPC and callbacks :)
If we do IPC through the port model (likely) then there will be a 
device as part of that.
Pekr
23-Jul-2010
[1327]
cool, design choosen then :-)
Maxim
23-Jul-2010
[1328]
I think it was always intended that way.
Pekr
23-Jul-2010
[1329]
is choosing callback and IPC method close to get tasking implemented 
too? :-) That would be cool - the core would feel complete that way 
finally ... I mean - for beta status ...
Maxim
23-Jul-2010
[1330]
callback not directly, but threading has some design considerations 
wrt callbacks which are probably all bubbling in Carl's mind.

Inter thread and inter application IPC will most likely be built 
using the same design.
Graham
24-Jul-2010
[1331x4]
Maybe, just maybe, it might be worthwhile adopting an IPC model that 
is used by others .. so that other languages can connect to REbol?
See distributed IPC http://www.linuxjournal.com/article/2417
ok, that one uses System V signals and Windows doesn't expose signals 
( i think )
The other ipc.lib I mentioned above runs on multiple platforms
Gregg
25-Jul-2010
[1335x2]
I think interop is important, but I don't know if there's a clear 
cross-platform choice. I looked at http://www.spread.org/some time 
back, but it doesn't support Windows and is probably best accessed 
as an extension. 


I can pull notes together for discussion, but I don't want to spend 
time on it without knowing that it has some chance of it being helpful 
and making a difference.
And the very first IPC mechanism I would focus on would be STDIO.
Robert
26-Jul-2010
[1337]
IMO IPC shouldn't be a default thing as there are zillions of ways 
how to do it.
Gregg
26-Jul-2010
[1338x2]
There are zillions of ways, and having choices is good, but if we 
have a standard it will be much easier to write tools that can coordinate 
with each other. If we have rebrowser (or, even better, a generic 
plug-in based app framwork that rebrowser is built on :-), it may 
be something that gets built anyway.
Out of the zillions of options, and with Carl's background and knowledge, 
what is the best option for REBOL (or maybe the top 3)? If Carl has 
ideas/opinions/designs already, could he write up a paragraph that 
outlines how *he* thinks it should be done?
Robert
26-Jul-2010
[1340]
The thing is, that Rebol needs to connect to the rest of the world. 
Rebol-2-Rebol is nice but IMO not the focus at the moment. RebService 
can be picked up again by the community.
Maxim
26-Jul-2010
[1341]
Each app choses its own IPC when the OS doesn't have one standard. 
 No single IPC method will be usefull.   


for REBOL itself, I do think that we should provide a construct which 
will be similar or exactly the same as what will be build for thread 
messaging.
Gregg
26-Jul-2010
[1342]
Robert, as I said, the first IPC mechanism should be STDIO. :-)
Pavel
29-Jul-2010
[1343]
Gregg windows is supported by Spread by default (more exactly Win32)
Gregg
29-Jul-2010
[1344]
Good to know Pavel. Thanks.
Carl
29-Jul-2010
[1345x2]
Gregg... you're suggesting stdio pipes, right?  I'm not sure of the 
quality of their support over all platforms, but perhaps it's possible. 
 Of course, there are no easy alternatives.  IOS had IPC, and it 
was implemented differently for each OS model.  I was going to reuse 
most of that code for R3.  But, it does use sockets for posix, but 
I think they work well.
BTW, I'm not opposed to using something like Spread... does anyone 
know its general size (e.g. complexity level?)


Also, if we went that direction, wouldn't we also want to look at 
MQ in general?
Pekr
30-Jul-2010
[1347]
I think that we can have those as external alternatives, but I am 
with Max here - we want the REBOL way ...
NickA
30-Jul-2010
[1348]
+ lots of points for having a code base that's already done and tested!
BrianH
30-Jul-2010
[1349]
But is it tested for the same kind of work we are trying to do? No 
points for trying to massage an off-topic codebase into something 
useful.
PeterWood
30-Jul-2010
[1350x4]
What is the REBOL way?
Is something that only provides interoperability between REBOL processes?
There would surely be some advantage in be able to send inter-process 
message to non-REBOL applications?
... and to receive them of course.
Gregg
30-Jul-2010
[1354x4]
Carl, by STDIO, I just mean the basics for writing pipe-and-filter 
apps. e.g. 

  while [data: input] [print data]


I just found http://www.rebol.net/cgi-bin/r3blog.r?view=0282so maybe 
we're close and just need to write up some examples and a doc page 
explaining limitations on different OSs. Gabriele has some things 
in his power-mezz package as well (chain, filter, pipe), which are 
worth keeping in mind. The blurring of lines between in-process and 
inter-process, and piping is where we need design direction from 
above. 


A REBOL way (passing around blocks of dialected data, i.e., messages) 
vital, but we also need gateways to other mechanisms. The REBOL way 
is critical because it reduces or eimilates external dependencies 
and provides a model for gatewys to emulate.
It looks like the Win32 binary is from 2006 and the main daemon is 
~200K.
http://www.spread.org/download.html
License note:


This software is licensed under the Spread Open Source License. This 
license is SIMILAR BUT NOT IDENTICAL to the BSD license. Specifically, 
the license includes the requirement that all advertising materials 
(including web pages) mentioning software that uses Spread display 
a specific acknowledgement.
BrianH
30-Jul-2010
[1358]
So it's like the old BSD with the advertising clause, the one that 
people complained about. Nifty.
Gregg
30-Jul-2010
[1359]
Yeah, but if that's the biggest complaint we have... ;-)
BrianH
30-Jul-2010
[1360]
That's not insignificant, as the advertising clause of the old BSD 
made it legally incompatible with a lot of other licenses. Particularly 
(L)GPL, but we as a community need to be avoiding (L)GPL code anyways 
for a lot of reasons. We'll have to be careful.
Gregg
30-Jul-2010
[1361x2]
If it's done as an extension it shouldn't be an issue for RT, correct?
If it's rolled into a host, then you need to care. Having it built 
in would be very cool so, yeah, you're right that we need to care.
BrianH
30-Jul-2010
[1363x2]
One: yes, it would still be a problem even as an external extension. 
Two: we would have to do it as a host-embedded extension if we want 
to use this for the core intertask messaging solution, and that is 
the same as linking the code in.
Remember that advertising clauses are transitive, so all of our apps 
that we build with R3 would need to advertise Spread too. Even apps 
that we build for third-parties.
Gregg
30-Jul-2010
[1365]
Yes, if it's built in, we're in sync. But if it's an external extension, 
doesn't it become a problem for us as individuals rather than RT?
BrianH
30-Jul-2010
[1366x3]
Nope, because it becomes a problem for any person who uses that extension 
in their product.
It doesn't matter anyways, because we are discussing the standard 
intertask messaging mechanism for R3. That can't be external, it 
would have to run when external extensions are prohibited by security 
restrictions.
This is why BSD got rid of the advertising clause in the first place.