Wednesday, March 02, 2005

Abassis Work Desk - Design Decisions Part 1

I'm still configuring my development environment, both for Abassis Work Desk and Abassis Finance Manager, mainly downloading and installing sets of components in Delphi that I will use in the programs.

These components are responsible for most of the things a program is able to do, like show an animated icon on the tray bar, beside the operating system clock, or write data in XML format. Delphi comes with a default set of components, but not enough to cover everything.

I've been putting off start working on Abassis Work Desk, because I have to make some major design decisions before starting, and whatever I decide will define the components that I will need and the features or limitations of the application.

The main decision that I need to make is if so and how much Abassis Work Desk will be integrated to the operating system. I can aim at full integration, half assed integration or no integration. A full or half integration have the benefit of making use of the resources available in the OS, besides allowing some of the information to be shared between applications. A no integration strategy has the advantage of portability and guaranteed integrity of the information.

As an example, Abassis Work Desk will have a little address book, with the name, e-mail and phone numbers of the people related to a given project. Integrating the software with the address book that exists on the operating system has the following advantages:

- the user could use the known interface to add contacts in the new software
- instead of relying on a simpler address book, the software will have a full featured address book available
- the user will be able to use the address book entries with his e-mail program
- the user can manage the address book entries outside of our application

The last advantage is the root of the problems when integrating with public resources, accessible between different applications. You can’t rely on their existence:
- what would the application do if some address book entries just disappear, because the user deleted then using other application
- when restoring an existing project, if the application inputs the entries on the address book, it’s automatically inserting data in a user area, which would bring problems, like what to do if an entry already exists, or if the application is being used on a public/friend’s machine
- if the user logs in the system with another login, he won’t see the complete data of the application, for example he may see data files but not contacts. Should all data be user dependant?

I had some problems of this sort with MSN Messenger. This is a instant message software, and for some reason someone working at Microsoft decided that if would be a great idea to integrate the contact list of MSN Messenger with the address book. If you want to send them messages, why not e-mails also, don’t you think? When I installed this software and added my friends, my manually edited address book suddenly got lots of entries due to MSN Messenger. As people need a dotNet Passport to use it, most of them create Hotmail accounts to just that. Now, I have two entries for each of my friends. One edited by me, with their correct e-mail address, and other created by MSN Messenger, with a token e-mail address used only casually. Had I not taken the care of editing the MSN Messenger entries, when I used features like send e-mail just entering the name of a friend in the To box, I wouldn’t know for sure to which address the e-mail would be sent. This is one of the problems of integrating applications. If I erase an address book entry, does that mean that I don’t want to contact that person anymore in MSN Messenger? I didn’t try to do that, but the answer is pretty ambiguous.

I am normally against mixing up user entered and application data, but I have to agree that there are advantages on this strategy. Which path should I follow? Which path should Abassis Work Desk follow? What worries me is that as the sole developer, I must make a decision that will affect thousands of other people. So I’m giving it a good thought, to not feel sorry later on.

Comments: Post a Comment

This page is powered by Blogger. Isn't yours?