Domain: zoolib.org
Stories and comments across the archive that link to zoolib.org.
Comments · 8
-
Want Real Cross-Platform? Try ZooLib!While the 68k Classic Mac binding hasn't been maintained for a while, it wouldn't be hard to get it working again. That would enable you to use the same client code all the way from the Mac Classic running System 7 to Mac OS X, Windows 7, Haiku, BeOS, Linux (mostly), BlackBerry and the iPhone.
All with one set of C++ client code, compiled to native executables for each platform.
If you want iPhone support, you'll need the Subversion source base; the code works, but we haven't rolled a release for a while.
Its Open Source under the MIT License, chosen specifically to be compatiable with both GNU GPL and proprietary development.
-
ZooLib
- ZooLib C++ cross-platform application framework
It has two options for the low-level storage, one of which is fault-tolerant.
The database has been proven in real-world use, for example in Knowledge Forum, a multimedia client-server educational database.
It's not SQL - it's a C++ API. So you'll need to write C++ to use it. But it would be easy to write an application that would handle your user interface and that deals with the database internally.
If you use it, you'll want to subscribe to the ZooLib-Dev mailing list. Tell Andy I sent you.
And yes, ZooLib's terrible website is all my fault - I didn't know much about web design when I did it. I've been meaning to redesign for years.
ZooLib has the MIT license.
-
What About Learning in Motion's Knowledge Forum?The Ontario Institute for Studies in Education of the University of Toronto contracted with Learning in Motion to implement the results of some educational theories with an educational client-server database called Knowledge Forum. It was built on top of the ZooLib C++ cross-platform application framework, whose chief developer is my friend Andy Green.
I think I first learned about Knowledge Forum from Andy at a party we attended in 1997, but I think it was already by then a mature product.
(While Knowledge Forum is proprietary, ZooLib is Open Source under the MIT license, and IMHO the best thing since sliced bread.)
Well I guess the patent is already overturned, but I doubt it's the last we'll see of educational software patents, so maybe Knowledge Forum can serve as prior art for future cases.
-
They should use a cross-platform application...... framework. There are a variety available, which share the property that one need only write one set of cross-platform sources, that can be compiled native to any of the supported platforms and linked with the library.
Besides the more well-known wxWidgets and Qt, there is also ZooLib, which is written in C++ and has the MIT license.
I've been a ZooLib developer for seven years, and think it's the best thing since sliced bread. I'm using it to build Ogg Frog, a Free (GPL) audio application. One reason for using ZooLib is that it still supports the Classic Mac OS, even 68k CPUs.
-
ZooLib Cross_Platform Application ToolkitThe ZooLib cross-platform application toolkit has been around for thirteen years, making it even more mature than wxWindows. Yet it is still in active development.
It's just not very well known yet because it's only been in open source since the fall of 2000. Prior to that it was a proprietary API for the use of Andy Green and his clients Learning in Motion, who used it for such products as the client-server educational database Knowledge Forum.
ZooLib is written in C++, and can produce native executables for Linux/X11, Windows, BeOS, and Mac OS (classic and carbon) with very little need for platform-specific client code.
It makes only very basic use of platform-specific code internally, which is kept encapsulated, so it wouldn't be very hard to port it to a completely new platform. Porting to a new Unix platform that uses X11 shouldn't be more than a day's work, for example. Porting to a platform that had a completely alien GUI API would be a few weeks of work for someone familiar with both the platform and ZooLib.
ZooLib's website has a piece I wrote about why cross-platform frameworks are good for developers:
-
ZooLib Cross_Platform Application ToolkitThe ZooLib cross-platform application toolkit has been around for thirteen years, making it even more mature than wxWindows. Yet it is still in active development.
It's just not very well known yet because it's only been in open source since the fall of 2000. Prior to that it was a proprietary API for the use of Andy Green and his clients Learning in Motion, who used it for such products as the client-server educational database Knowledge Forum.
ZooLib is written in C++, and can produce native executables for Linux/X11, Windows, BeOS, and Mac OS (classic and carbon) with very little need for platform-specific client code.
It makes only very basic use of platform-specific code internally, which is kept encapsulated, so it wouldn't be very hard to port it to a completely new platform. Porting to a new Unix platform that uses X11 shouldn't be more than a day's work, for example. Porting to a platform that had a completely alien GUI API would be a few weeks of work for someone familiar with both the platform and ZooLib.
ZooLib's website has a piece I wrote about why cross-platform frameworks are good for developers:
-
Here's my participatory journalismI like to write. It's what I do to relax when I'm not coding. But I take my writing pretty seriously. I write mostly either technical or opinion pieces. Here's links to most of them:
- articles by MichaelCrawford at Kuro5hin
- GoingWare's Bag of Programming Tips (note - they cover a lot more than programming by now)
- Articles at The Linux Quality Database
- Musings on Good C++ Style - published at K5 under my old username
- Links to Tens of Thousands of Legal Music Downloads
- Writing Cross-Platform Software - Getting Started
- Freeing the Developer from OS Vendor Shackles
I write about the importance of speaking your mind, and give some tips on how I am able to write so well on this page.
-
Freeing the Developer from OS Vendor ShacklesOperating systems vendors invest a great deal of energy in getting applications developers to code products to the native API of the OS.
The result is that it is very difficult for the developer to bring the product out on a competing platform, and it discourages users from moving to a different OS when they feel the vendor isn't serving their needs (because they can't get the solutions to their problems).
If the developer doesn't want to deal with the OS vendor anymore, he's really got a problem - either suffer under the vendor's thumb, or make a great deal of personal sacrifice to move to a different operating system.
I was sick of Apple so I wrote I'm worried about my future. That's why I'm a Be developer.
And in fact I shipped (and still do support) on of the first commercial applications for the BeOS, Spellswell from Working Software.
Nothing Be ever did made any sense, and while there are individuals at the company that I regard highly, on the whole I felt the company to be uniquely unresponsive and incompetent.
And just when they were showing some promise of shipping enough BeOS installations that I had some hope of making more than the measly couple hundred bucks I'd earned in royalties in the three years I'd been working on Spellswell, they announced a "change in focus" and said they weren't going to support the desktop anymore, except for the extent necessary to use it as a development platform for their new Strategy Du Jour, Internet Appliances.
After I posted on BeDevTalk that Some of Us Work for a Living, the moderator told me he was fed up with a developer who was trying to discuss business issues of concern to Be's third-party developers on Be's third-party developer mailing list. That was my last message to bedevtalk - he unsubscribed me.
I've been working on a really challenging C++ application for a few months, and after reading C++ Answers with Bjarne Stoustrup I got excited about really digging into the basics of programming - but from the perspective of a developer with 13 years of work experience and a lot of shipping products.
I bought a few books, mostly on C++ and also hit some websites and newsgroups, and I became a much better programmer as a result. And I really felt that I did better to spend my time on core architectural and language issues rather than dealing with OS-specific nits or tool issues. And so I wrote Study Fundamentals, Not APIs, Tools or OSes.
So this brings me back to being used by operating systems vendors to serve their material needs at my expense and the cost of much personal pain. If you become a better programmer by learning the basics better, to can fluidly go from OS to OS without much of a learning curve.
But there's the problem that you have to use some API to code your application to, and while Java claims to be "platform-independent" it is really a proprietary platform in itself - just try making use of platform-specific code in a Java application, yes you can do it with the Java Native Interface but it is difficult and an assault on the Java developer's senses to write a dll in C or C++ to load into the runtime.
So what you really need is a cross-platform application framework that you can write in with a language such as C++, that comes preconfigured with easy-to-use preprocessor symbols so you can drop into OS-specific code at your whim, and will compile from a single sourcebase to native machine code for multiple operating systems.
Funny that, since December '99 I've been writing a multithreaded special-purpose graphics editor that is also an HTTP client with just such a cross-platform application framework. I can develop on Mac or Windows as the need suits me and switch back and forth at a moments notice (especially now that I've got filesharing between my machines). My client only asked for Mac and Windows versions but I could port to BeOS or Linux in a few days. The framework is called ZooLib.
It was written by my friend Andrew Green of The Electric Magic Company, originally to insulate himself from Apple's API nonsense. (Do you remember when all progress on developer tools at Apple and Symantec stopped while they went off into the sunset to develop Bedrock, itself a cross-platform application framework and an immense investment of time and money - and then abandoned it? If it hadn't been for then-tiny Metrowerks Apple would have gone out of business after shipping the first PowerPC Macs, because there would have been no native PPC compilers.)
He felt that if he could code to his own layer and Apple changed their API, he'd just have to reimplement the OS-specific layer and he'd be working again. But then a little more work and he'd be cross-platform...
If you click that link today you'll just get a placeholder page. But just wait a few days...
(For practical reasons the source itself, mailing lists and so on will be provided at http://zoolib.sourceforge.net/ once it's released.)
While ZooLib is to be newly released to the public it is not new code. It has been in use in commercial products for about five years - and in development in my own since last December. Part of why Andy gave me the code and I've been working with it is to give him meaningful architectural feedback and detailed bug reports so he can prepare it for public release.
I've been urging Andy to release the source as-is for a couple of years but his standards are incredibly high for a programmer. Andy's code doesn't just work, it is correct.
Andy spares no effort or time to fix the smallest problems (this is especially important in multithreaded code - think about reference counted smart pointers that are operated on by different threads, as you can do with Zoolib), and part of why he's been delaying the release is to improve the overall architecture.
For more details, including relevant quotes from Judge Thomas Penfield Jackson's Findings of Fact and Final Judgement discussing why Microsoft felt it was more important than anything to suppress cross-platform API's, such as Netscape plug-ins, Java, Intel Native Signal Processing, Lotus Notes, Apple Quicktime (runs on Windows too!) and RealNetworks' multimedia technology, please read my early draft of:
Thank you for your attention.
Regards,