Update: While attending the Boston Web Innovators group, I got some really great feedback. People were excited in what Yajaf could do but most felt that this blog didn’t adequately represent the technology I was describing. Stay tuned for some new material, documentation, and perhaps a live sample application or two.
What is Yajaf?
Yajaf is a library/framework for making rich web applications.
Why the name Yajaf?
Is it a library or a framework?
I tend to use the terms interchangeably although I’d say it’s more like a library than a framework. The amount of “auto-gen” code is low.
Why did you write Yajaf?
I am currently working on a software product that, it is my intention, will eventually use a web interface. I decided to ‘simplify’ my life by creating a library. Heh, simplify.
So does it use prototype (dojo etc…)?
Protowhat? Honestly I didn’t even know about prototype when I started this project. While those guys have done a heck of a job, this is a completely new library rolled from scratch. Some may say I’m swimming against the current, well I’ve never been one to follow convention.
Why didn’t you switch to prototype when you learned about it?
Prototype is very nice, but my library works in a fundamentally different way. I have a system that, IMHO, is more ‘natural’ to work with from my experience with OO programming.
What do you mean ‘natural’?
Imagine programming Java swing, or a C# gui except in a browser application.
It is kind of weird, that’s part of the reason for this library. It hides some of the ‘weirdness’ from you as you use it.
It is my understanding that Microsoft’s “Atlas” project works in a similar manner to my framework at least from a cursory inspection. Even then my library/framework has some nice differences (and all the library code!).
Ok, so what makes Yajaf different?
I think there are several things that make Yajaf different but I would argue the primary difference lies in the programming model. It’s a different animal from prototype style applications. I think this is a relatively big difference in terms of ease of use, but again your mileage may vary.
Yajaf Also contains (not all of this is unique):
- A dynamic library / application loader, start with a 3k “seed” and the library dynamically loads the code you need (and only the code you need)
- Modern browser cross compatibility
- Smart browser caching of library code
- A window toolkit for building WIMP applications
- UI skinning, almost complete control over the look
- Intelligent dynamic sizing of components
- Access to a more natural inheritance mechanism
- Mechanisms to help prevent IE memory leaks
- More sophisticated error handling
- Some support for cross domain content
- Eventually, if there’s interest, a web based IDE
- Web analytics built in
What browsers does it work in?
So far I’ve tested in IE 6, FF 1.0 and 1.5 on Windows, FF 1.0, FF 1.5, Safari 2.0.3, and Opera 8.51 on Mac OSX, and FF 1.0.7 on Linux (ubuntu breezy). Can you tell what machine I do my development on?
Will it work in older / alternate browsers?
Probably not, I haven’t done much testing beyond the above. A *lot* of work went into making it behave across those browsers (gah standards people!) and I can’t imagine it “just working” in others.
Is the library extensible?
Why yes! In fact it’s one of the benefits of the library. Every object in the framework can be extended with custom code.
Is there typecasting of data?
Do applications written in Yajaf have ‘teh snappy’?
Performance differs from browser to browser, but in most cases applications are quite smooth. Windows IE and FF are particularly good. On OSX Safari is the fastest browser I’ve tested. Again most of my test applications run smoothly (if not with the elusive ‘teh snappy’) on a 1.25 GHz Powerbook.
Sorry, a cheeky term used mostly by Macintosh users to describe the responsiveness of a user interface (usually OS X).
Can I make spiffy whizzy DHTML effects?
Yes you can, but that was never the intent of this project. Eye candy, swooping windows, fading, blinking, beeping, swooshing were all kept at a minimum. The intent was to make a solid foundation for making web applications.
Why the blog?
Ahh now we come down to it. I am interested in potentially opening up a web based IDE that would either be subscription based or advertising based to allow development of code using the library. I am using this entry to gauge interest in this kind of an approach. If there’s substantial interest I’ll finish work on the developer tool (docs + IDE).
Why not open source it?
What happens if there’s not enough interest to make a developer tool available?
Well it was never my intent to make this framework a product, and I can just as easily keep it completely internal until my initial product is complete. It just seemed like people might be interested in using this kind of a thing now, and having some income (any income!) would be nice.
Can I see it work?
I have some flash-based movie captures of it in operation as well as some screenshots coming soon. The flash movie captures use vnc2swf and show some “choppiness”, the choppiness is due to the screen capture method and not the application. I’m still looking for a better way to take cross platform movie captures. (any suggestions?).
Why not a live web page so I can play with it?
Nope, maybe after I get some feedback I’ll reconsider it.
If you have a spare second, I’d love to get quick feedback from you. I’m trying to gather how interested the developer community is in this.
None of that applies to me, how can I ask other questions/give other feedback?
Well this is a blog after all, comments.