Thursday, July 28, 2005

Content Delivery

Every developer has, at one time or another, considered what the next methods for content delivery will be. In the early days, we had BBS's. With the coming of the internet, we had Gopher, then HTML. HTML was great when we needed simple text and static images, but we've moved on from there. We now desire interactive graphics and streaming content. VRML was one early way this was accomplished, but it never took off. I'll cover VRML later, but right now let's focus on HTML and other more common web technologies. These things we desire are where JavaScript, Flash, and a half-dozen other technologies come in. They work to fill the gaps HTML leaves. This isn't to say HTML doesn't serve its purpose, but we're pushing it to do things it's simply not meant to do.

We need a change. We need to stop beating the dead horse that is HTML. The problem is that we keep ending up with proprietary replacements that perform poorly and are designed even more poorly. Flash and XAML are two fantastic examples of this. They both share the same basic concept: applications should be simple to design, run in any setting you want them to, and do what you want them to do. Flash does this fairly well: its design tools are simple to use, it runs on many systems, and most of the time they Just Work (TM). However, its design tools are commercial and few (if any) good replacements exist, it is a primarily proprietary system in that it is not completely open for producing and rendering, and one organization controls (almost) every Flash player implementation. XAML suffers from many of these same issues, though it's unsure whether it's going to be available beyond Windows.

So what can we do? Well, for starters, we need to design a system that provides every bit of functionality current systems provide. This means everything from basic elements of web sites (2d text, forms, etc) to animated graphics and dynamic content. This is a big undertaking, but not impossible by any means. That is the first goal.

The second goal is simple: complete interoperability. HTML was great at this; you could browse an HTML-only website in the most 3d-rich environment or from a simple text-based console. Sure, you could make it easier to use, but HTML could never truly scale. You could never take advantage of the environment HTML was running in because of its simple design, and if you attempted to use Flash and the like, you ran a good chance at blocking out potential users. So what's the solution? Build in layers, separating content from display. You shouldn't have to build your site in 3 or more ways (Flash-only, HTML with frames, HTML with no frames, etc) just to make it usable to everyone, it should be part of the design.

Before I get to the next goal, I'd like to go back to VRML for a moment. VRML stands for Virtual Reality Markup Language, and it was just that. With VRML you could build complex (for the time) 3d worlds, and with extensions from companies like Blaxxun you could have multiple people cooperating in an online world. (Cybertown is a good example of this) The problem was that because of the limitations of systems (both clients and servers) and limitations of bandwidth, no one could truly take advantage of this technology. Later, X3D was designed by the Web3D Consortium to replace VRML, but it only took off in a very limited space. VRML and its kin are essentially dead in the water, despite being fantastic concepts.

The third goal is a bit more complex: unlimited 3d content that scales. If you're on a powerful system, you don't want to look at graphics from 1995, just like when you're on a portable concept you don't want to have such high quality graphics that you can't move. By designing the 3d system to allow for scaling content, and designing tools (and retrofitting existing tools) to do so, it's well within reach.

Now, everything I've said seems fairly straight-forward really. Non-trivial, but straight-forward. There are a few dilemmas I am faced with while thinking this through, the biggest of which is this: How will the actual logic be done? It's very simple to throw content at various devices and have them render it, but it's far more difficult to design the system in a way that you can do actual logic in it. Being a Python fanboy, it is my first choice, but this is really where something like .NET reigns supreme, because you're not tied down to one language. Parrot would be an obvious choice if it were more mature, but as it stands, it's not even an option.

So that said, I'm very interested to hear what everyone thinks, and maybe one day we can move forward with this.

Later.
Cody Brocious

Edit: Alex Goodwin commented about .NET not being a good idea to him, and I agree. I forgot to add that I think .NET is a poor implementation of a great concept, and that I have no intention of using it.

11 comments:

Anonymous said...

Agree on most all the points. Espescially the bit about bringing back scalability to the web you remove the need for crap like flash, and if you can get developers to keep their content mostly seperate from it's appearance, text browsers once again become an option.

I disagree with .NET is an option, and you may not realize it but so do you.

"However, its design tools are commercial and few (if any) good replacements exist, it is a primarily proprietary system in that it is not completely open for producing and rendering, and one organization controls (almost) every Flash player implementation." s/Flash player/\.NET/

Much of what you suggest is alot of the reason for the development behind CSS, but it doesnt solve all those problems, and its hard to get everyone to use it correctly for the benefits of CSS to reach their full potential.

Cody Brocious said...

Arg... I didn't mean to make it seem like .NET is an option. I looked at it for a moment (just to not seem biased) and immediatly discarded it. It's simply not fit.

Anonymous said...

Java has come close to this, if you ask me. Java applets (although embedded in webpages much like Flash) can deliver content of the various kinds you describe. And as Java runs on top of a virtual machine, it is much like .NET or Parrot. With Java Beans you also have a nice component model, which is another boon.

With Jython, you have Python with the JVM as the target, and there are other examples.

Now, Java does have similar problems as the .NET platform, namely one big player that controls most of the action - Sun. They have opened it up significantly in the last years (JCP and such) but it's still quite strictly controlled by them.

The matter of content filtering and shaping to the target platform is something that must come sooner or later. As you wrote, having to construct different versions of the same content is a poor service model.
The key here must be to parameterize the capabilities of target platforms, and then flag the produced content's building blocks based on what level of complexity they are. CSS has something like this, but very coarse grained and not very useful, in the media type parameter. And then we're still back with HTML and simple markup.

Cody Brocious said...

Thank you for your comment.

The problem with embedded java applets is you're still working in existing browsers, which is foolish in my opinion. I think that to pull this off you'd need to write complete viewers from scratch and roll everything out at once. You'd also need to have compatibility with existing sites, and do things faster.

I doubt any of this will ever happen, but it's fun to think about ;)

Anonymous said...

Yeah, Java isn't a viable solution to the overall problem, but it still comes pretty close.

I guess the Mozilla foundation has a goal that is similar to all this. As far as I have understood their overall direction, XUL should be used to create rich web applications in the future. Multiple language support doesn't seem to clash with this. (XAML seems to be a whole lot like XUL, even though Avalon has more support for things like 3D.)

As another example, ActiveState did start with PyXPCOM (for Komodo I believe) which allows Python to interface with XPCOM objects. Now, I don't think that it's feasible today to integrate a Python interpreter in e.g. Firefox, but from what I just read the support should be there in 1.9. If Mozilla went ahead and built a truly pluggable language support into the platform, embedding other languages should be possible.

Anyway, the major pain in the keister is still overall adoption. Any new system would have to be standardized, and that would mean at least a couple of years of bickering and finally a standard that looks little or nothing like the original one proposed. And we can bet that Microsoft's implementation won't agree with the standard either.

Nice blog, by the way. Found it when I was Googling around for PyMusique, which you helped create (I had this idea of creating a Java MIDP version based on the work you and JLJ and others did).
And when I saw this particular blog post, I couldn't help but comment, as I've thought about this stuff myself on several occasions. At least the parameterization and filtering of capabilities. There ought to be a nice Master's thesis in that (which makes me regret I already finished mine ;).

Anonymous said...

Howdy Cody Brocious !
Just was cruising around looking for master resell rights and came across your Content Delivery. You ever do anything with your master resell rights if you have any?

I've heard of tons of guy's selling a bunch online.
I've been trying too at: http://www.TonOFeBooks.com . Learning tons!

Cutting this post short - my fingers have been going to fast lately!
Have a super duper day!
Chad.

Anonymous said...

Some of the original VRML folks are still at it, with goals along the lines you mention - check out:
http://emma3d.org

;;peter

Anonymous said...

Hi Cody Brocious, There are not too many good Info Products related sites that aren't full of junk posts, search engine scraping and except for keyword stuffing, nothing useful related to Info Products. It was nice to find an exception today when I happened upon your site. Keep it going.

Anonymous said...

Hi Cody Brocious, As you are probably aware, there are so many junk filled blogs. As I was searching for Software related information today, it was a nice break from the 'usual' to come across your blog. I am happy I searched for ##LINK"" related ideas today. Thanks.

Anonymous said...

I enjoyed reading your blog. In fact, I've bookmarked yours!
Visit my ebook master resell right site.

Anonymous said...

I was out searching for make money on the web and somehow landed on your page. Cody Brocious I'm glad I found you... GREAT page! Would you mind if I link your page to http://itsallhereforyou.com/free Go Here