Thursday, May 24, 2007

Covalentia Version 2.3: Powered by Oracle

Covalentia may not be as good as other code generators such as Iron Speed etc to have version compatibility, but at least, it’s FREE of charge (since I’ve consumed a lot of other FREE stuffs from the internet, I’d say it’s time to give back to the community). I realize that this is a big issue - whenever Covalentia gets upgraded, migration from the previous version to the latest one is going to be a pain in the ass. But, worry not – we’ll address this issue later on when we come to that stage ;)

I’ve spent tremendous hours trying to include Oracle Database as one of the databases supported by Covalentia. And it ain’t an easy job. Oracle Database has got some limitations compared to other databases such as Microsoft SQL, MySQL and PostgreSQL. Perhaps, this is the reason why it’s faster? No? I have no experience in using Oracle and so I can’t say much about its real performance compared to others. Now, let’s talk about these limitations, and you’ll soon find out why I had to do the changes that I did in the latest release.
  • Renaming SystemTbl table to ConfigurationTbl
    Oracle doesn’t seem to like that name, anything ‘SYSTEM’ is probably a reserved word. So, we have to rename the table to ConfigurationTbl. And while we’re at it, why not remove and add the following items:
    • Remove SystemPath column – put this variable in the web.config file instead and rename it to ApplicationPath.
    • Add a new column – ErrorLogEmail to store the Error Log E-mail address.

  • Renaming of the following tables (and their corresponding primary keys) and stored procedures because Oracle limits the length of identifiers (table name, column name etc) to only 30 characters.
    • UserGroupSubModuleFunctionTypeTbl table to UserGroupSmftTbl
    • UserSubModuleFunctionTypeTbl table to UserSmftTbl
    • DeleteUserGroupSubModuleFunctionTypesByUserGroup stored procedure to DeleteUgsmftByUg
    • DeleteUserSubModuleFunctionTypesByUser stored procedure to DeleteUsmftByU
    • DeleteUserSubModuleFunctionTypesByUserGroup stored procedure to DeleteUsmftByUg

  • Naming convention
    Covalentia uses the following naming convention for tables and columns respectively: TableName and ColumnName
    Oracle (and PostgreSQL), however, doesn’t allow this. Well, not really, you could preserve the case but this will cause some major problems when coding Covalentia as I have to add “TableName”.“ColumnName” here and there (with “) in the SQL queries. So, we have to stick with TABLENAME and COLUMNNAME (all capital case) for Oracle and tablename and columnname (all lower case) for PostgreSQL. As you may already realize that this may cause problems when generating Business Objects, Component and Control classes and User Controls (classes names, variables names and web controls IDs etc).

    MySQL, on the other hand, strictly sets the table names to be lower cases. This, however, doesn’t hurt much as we can manually change them before we generate the Business Objects. The rest, ie. the column names, are fine and work like a charm. If you’re deploying your database server on a Linux machine, don’t forget to set the lower_case_table_names=1 in the my.cnf file under the [mysqld] section.

    We’re going to come up with a solution to this problem in the next release (Covalentia Version 2.3 Reloaded).

So, stay tuned ;)

Friday, May 11, 2007

Moving Forward

Covalent Technology has just secured a grant (fund) under the Enterprise Innovation Fund Scheme from the Government of Malaysia (Ministry of Science & Technology). We've returned the draft agreement and signed the acceptance letter on May 03, 2007. Now, we're waiting for the official agreement to be released and signed by both parties (that'll take some time or a lot I suppose). The fund which amounts to RM 177,020 (~USD 50k) will help to sustain FREE Covalentia for another year. We've outlined a few things that we want to do:

Objectives
  • To further develop Covalentia to become an open source cross-platform Rapid Application Development Tool for .NET that supports not only web-based application development, but also windows and console applications, and windows and web services
  • To help beginners or junior programmers of local companies and government agencies to quickly produce .NET applications faster and more efficiently to lower development costs and risks
  • To develop Covalentia E-Learning & Certification Program and online interactive support to help ICT students and unemployed graduates to learn and use Covalentia, polish their skills in .NET programming and be market-ready – to produce more highly skilled human capital
Milestones
  • Multi-database Version
    • To redevelop and test Data Access Layer and Object Relational Mapping component to support other major database servers such as PostgreSQL and Oracle servers
    • Target Completion Date: 01 June 2007
  • Cross-platform Version
    • To tweak, compile and run Covalentia on Linux operating system using Mono and Grasshopper Frameworks
    • Target Completion Date: 01 September 2007
  • Multi-project-type Version
    • To develop and test multi-project-type components to support:
      • Web Application (Done)
      • Console Application Template (Done)
      • Windows Service Template (Done)
      • Web Service Template (Done)
      • Windows Application
    • Target Completion Date: 01 December 2007
  • Covalentia E-Learning & Certification Program
    • To finalize contents, release and market Covalentia E-Learning & Certification Program and online interactive support/help
    • Target Completion Date: 01 March 2008
  • Product Documentation, Testing and Benchmarking
    • To finalize product documentation and tutorials, and to run final test and benchmarking on Covalentia
    • Target Completion Date: 01 April 2008

When there's money, there'll be a lot of possibilites. A lot of things could happen. We might end up buying a beamer instead. Just kiddin' :) But, definitely, we're going to require more resources to reach these objectives and milestones. So, if you're interested to join us, do contact us, and we'll see what we can do together ;)


Oh, and preferrably women and married :)