Fri 22 Jun 2007
Updated Maven Documentation
Category : Commentary/MavenDocuUpdate.txt
I've begun updating the Maven web page so that, hopefully, it'll be clearer now what this program does.
I'm planning to improve Maven in three possible directions. One is as a data modelling tool, so that a person can use it to create databases quickly and experiment freely with the data structures. What Maven does is to give the user choice in terms of the database system he wants to use because he'll be able to work across any of the three currently-supported systems (MySQL, PostgreSQL and SQLite3) in a very consistent way, and be able to move data easily across them.
Along this axis, as a modelling tool, I've already been able to help the user create databases, tables, fields, indexes (unique, non-unique and primary key), though I've still some way to go, missing the ability to create compound keys, specify default values and other constraints, etc. But I've also already now been able to create data structures that are mapped consistently to Objective-C data types, and that will sort and behave consistently according to their mapped Objective-C data types.
This last bit may appear puzzling but it'll be clearer to a developer when I make available the API's to the data access frameworks that I've been using. For example, when you use CocoaMySQL, the data that is pulled from the database gets converted into text when displayed in the tables. You lose their meaning as dates, NSData objects, number objects, etc. They've all become text and they're sorted like text. What I've tried to do with Maven is that the table columns remain faithful to their Objeective-C types, even after you've edited them. E.g., they come in from the database as dates, they get displayed as dates, when modified they keep their character as dates, and when dragged and dropped, the receiving application can work with them immediately as NSDates, no conversion neded.
I know Apple is offering Core Data but that currently only works with SQLite3 databases, standalone. If you want PostgreSQL or MySQL, and you want distributed multi-user databases, you're out of luck, you have to wait.
Even inside Core Data, it does too much magic, and I really need more control over the data access, computation, save, commit and roll-back mechanisms. And I believe that other developers who do database-intensive work will also think the same way. So there's probably a need for such a framework and for sharing such a framework, so that we can create inter-operable applications. So that's the second axis I can work on with Maven and that is to make the frameworks that I have been using for Maven, and for Luca, available for other people to use.
Finally, Maven currently has a rather simple way of pulling out data from the database. You can drag and drop tables and field names to build a query and to run it and to edit the query to make a custom query. But there's no fancy footwork here, yet, and there's no way to specify filters to refine the search. In the Windows-world they have some tools that do these adequately - MS Query, GQL, Data Prism/Pivot, and whatever their descendants are called today, etc. The Mac needs more of such tools badly. And maybe we can do better, with the kinds of controls that Cocoa affords us. It was the data access frameworks that we used to lack. Now I believe that is solved. So there's no reason we can't make faster progress with the data mining aspects of these tools. So that's the third axis I believe I can work on, to maybe help spur other Mac developers to think about delivering them.
So that's for Maven, for now.
Put your Mac to Work