Re: [Fresco-devel] cache graphics
Ben Bucksch <[email protected]> Mon, 05 Jan 2004 02:20:59 +0100
| Newsgroups | gmane.comp.video.fresco.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all :-)
Nick Lewycky wrote:
> your CacheGraphic::traverse() ... claiming that it will never block.
> It then procedes to call into the Graphic--a method which may never
> return.
Why can't it open a new thread and make the call in that thread?
Stefan's reply was too concise for me.
> * Fresco must be entirely ignorant of the underlying pixel grid yet
> render perfectly on a given display.
Was that a requirement or a server-internal design choice? For the APIs
towards the app, it's irrelevant, if the Graphic, drawing traversal or
Drawing Kit knows about pixels, assuming that the app doesn't implement
|Graphic|s.
> There are a few options. For example, Java is a technology that allows
> someone to run untrusted code. (Bad because we want to be language
> agnostic.)
And bad, because it didn't work. It was a nice idea, but I haven't seen
a "sandbox" which reliably kept in the evil boys in. Running untrusted
code is a bad idea(TM).
And even if you just expose APIs: the more ways you give the evil guys
to play with you, the more chances they have to find a hole. Compare
webserver-CGIs, network servers and desktops opening network sockets.
> What is Fresco supposed to achieve? What do we require from it?
Hard to answer so generally. Everything that *can* be achieved and makes
sense. ;-)
> the whole "fresco separates device from look rather that separating
> presentation from content" problem still rings in my ears.
Did I miss something here? (IRC discussion?) I considered the separation
of the application from the concrete presentation one of the main
strengths of Fresco and I very much like(d?) that. I want the app to
specify that "there are 2 panels, 50/50, and the right panel has 3 radio
buttons, aligned vertically", and all the rest is up to Fresco's kits.
(In fact, I want the app to not even specify such layout, but that's
another layer offtopic for now.)
To answer your question from my perspective:
I can only tell what *I* liked about Fresco's goals, from what I understood:
* Clean and simple API, which is long-term stable and easily
adaptable to new requirements, even unforseen ones. Also very
comfortable / efficient for the programmer.
* Separation of apps from concrete look and behaviour, and by
extension from concrete devices used.
o Frees the programmer from making pixel adjustments
o Allows the app to run well with other languages and devices
o Allows the user to customize the look and feel of all apps
at once
* Fulfilled by CORBA:
o Language agnosticism in app API
o Remote apps
o Potential to use a large number of existing solutions, like
for resource discovery.
o Assuming the programmer knows CORBA, also frees him from
learning yet another component technology and API.
* Speed, even over the network
Almost all the direct and time-critical user interaction happens
in the server process. This is the best solution to remote
applications that I've seen so far, better than e.g. intranet
applications. Potential to work even across the ocian.
What I liked about the project's methodology:
* Doing things right rather than quick and dirty
* Learning from bright minds and research and applying that instead
of following the rest of the industry
* Modularity: Reusing the best existing solutions to well-understood
problems instead of writing custom solutions and growing them
organically over time up to the existing solutions, wasting a lot
of time on offtopic tasks. See CORBA above.
The problems that I see are:
* Applications have to be trusted atm. It's unclear, if the server
*can* be hardened enough to allow untrusted applications to run
securely - maybe that's not feasible.
That an application can *accidently* freeze the server is somewhat
a subset of that and should generally not be possible, even if we
decide applications to be trusted.
The difference between claiming to protect from *bugs* in the apps
and to protect from *evil* app writers is that a hole in the
protection is absolutely fatal in the latter case, while it's just
a server bug in the former case.
* Unclear how applications are supposed to extend the server
functionality, if it can't be achieved by composing server-side
Graphics. Unclear, if all applications eventually can be
implemented using server-side Graphics only. For example
o Some apps will need to react to certain key presses, but
there currently isn't a way for that.
o A video player will want to control the pixels, for
preciseness. The renderer probably has to run on the server
anyways, for speed. Do you want to run mplayer in the
server? Compare
<http://wiki.fresco.org/ArchitectureQuestions>, question
1.11, end of 4. paragraph.
o Games. I need the option to run [3D] games in a window, not
full screen.
* Manpower/Time. Bright minds in the project, but most of them don't
have much time. Unfortunately, I can't help out myself either in
the short-term future.
Respectfully,
Ben