From: Gavin_King/Cirrus%<CI...@ci...> - 2002-01-31 02:22:07
|
Okay... Thanks everyone for your offers of help. We should do this by mailing list, I guess, so could everyone join the hibernate-devel mailing list here: https://sourceforge.net/mail/?group_id=40712 and let me know your sourceforge usernames so I can give CVS access. My priorities (which need not be yours, of course) for the next phase of the project are: New Features ============ 1. XML Databinding 2. Extensions to Query Language 3. command line or GUI toolset for (a) generation and execution of table schema (b) automated generation of skeletal XML mappings Refactorings ============ 1. The map package 2. The query package The project has so far been executed very much along XP philosophy of making things work first and then trying to make the code elegant. This has worked quite well but right now the next new functionality will depend upon first refactoring some existing design that has been pushed past its limits. The cirrus.hibernate.map package is a mess that is doing far more than it was originally intended for and the schema generation tools and XML databinding will depend upon it. I am in the process of refactoring it now but I cant check anything into CVS quite yet. The cirrus.hibernate.query package was written by some idiot (me) who had no idea about parsers + lexers at the time. (On the other hand, it successfully implements a pretty decent OO query language.) Anyways, I know a whole lot more now and want to reimplement the query functionality using an ANTLR grammar. I've got the ANTLR grammar sitting in CVS as Hibernate/hql.g but if you compile that file with ANTLR it essentially implements echo. A very high priority is to make it implement an object-oriented-query-language-to-SQL translator! This should not be as difficult as it sounds because as a first step we can reuse some old code, particularly cirrus.hibernate.query.Query. If anyone wants to take on this job that would be _brilliant_. The query language has the potential to be one of the best features of the project and I can think of a few really great extensions that would not even take that much work. We need to have some discussions about the best approach to the databinding stuff - but lets leave that for later. The existing table-schema-generator is an un-object-oriented, ad hoc tool that I described as "experimental" in the documentation - meaning it sucks. You might have already noticed that for complicated schemas like in the test suite it can't even drop its own tables on some databases! I'm guessing that what users really need is a commandline or GUI tool. When I've finished my refactorings to the map package (which will include a proper OO model of relational database tables), that should be easier to build. I think Daniel has already signed on for that. The other tool I'd love to see is a GUI that lets the user map classes and properties of classes (discovered by relection) to database tables and columns _visually_ and spits out XML mappings. A first step towards this would be a simple commandline tool that generates a skeleton mapping given the name of a class. -------------------------------------------------------------------------- phew. What ideas do _you_ guys have? -------------------------------------------------------------------------- There are two coding standards: 1. Write automated tests. 2. Write user documentation. True, they arent coding standards. Basically, no bugfix should ever be checked into CVS without a corresponding test. No new feature is finished without automated tests and updates to the documentation. Whenever I've strayed from fanatical adherence to these rules I've regretted it. To make writing documentation easy, I've been using AFT. For tests, I'm not using JUnit because I wanted users to be able to run the tests without downloading it. Also I think JUnits a bit bloated. If you guys love JUnit and think I'm trippin, we'll use JUnit. For XML processing, I havn't been using JDOM, for the same "not wanting to force people to download too much extra stuff" reason. But I'm a lot less comfortable with this decision, since JDOM code is _so_ much prettier and more maintainable. What does averyone else think? --------------------------------------------------------------------------- Current target platforms are: Working Now: ============ DB2 MySQL PostgreSQL Oracle Sybase Interbase Just Got Emailed Support For: ============================= McKoi Really Want To Support But Don't Have Installer For: ==================================================== MS SQL Server <-- top priority Ingres Informix Be Nice: ======== HypersonicSQL InstantDB --------------------------------------------------------------------------- That should be more than enough to keep us busy :) Peace Gavin |