Jonathan Riddell's 31Z7 University Project Diary

Stop the War

I'm doing Umbrello UML Modeller as my final year dissertation (well, project).

See http://uml.sf.net for Umbrello UML Modeller.

Put `Umbrello' into http://bugs.kde.org to find the bugs database

Commits are also sent to the mailing list http://sourceforge.net/mailarchive/forum.php?forum_id=472.

July 2002

Discovered the UML programme last year. Sent in a few patches although I don't think any were accepted because Paul Hensgen (the author and an excellent programmer) doesn't know how to use patch. I made a few bug fix commits to CVS.

Paul Hesgen disappeared earlier in the year but reappeared in May. He did quite a bit of coding and accepting of patches until July 17th when his computer blew up half way through a commit.

I rescued the half committed CVS and start accepting patches from people and myself for bugs in the programme. I have put in a bid with Sourceforge to become project admin. (Paul was going to be leaving the project soon anyway to do a Masters Degree.)

September 2002

Sourceforge never answered my query for admin privileges. Fortunately Paul H did and I'm now admin.

16 September 2002

Tagged whatever was in the CVS archive and released 1.1 beta 1. First release in nearly a year. I also cleaned up the web site and answered the backlog of e-mail on the mailing list and cleaned up the bug tracker. Sourceforge, who didn't give me admin privileges after 4 months, responded to my query about mailman access within an hour. Made a SuSE RPM. Lots of tidying up to do before the big 1.1.

Also put up a questionnaire about the programme name since it doesn't really seem to have one.

I set up CVS to e-mail the mailing list on each commit, this is important to let everyone keep track of changes without examining CVS all the time.

Tidied up the home page.

17 September 2002

Got 85 name suggestions and votes already. It's a surprisingly popular programme.

18 September

Did some tidying up of things like version numbers and RPM spec files. Started fixing bugs as they got reported.

Mistakenly added the .java files to the import dialogue when you can't import .java files. Doh.

20 September

Had a report of it compiling on Solaris 8, but with a few fixes needed (solaris doesn't have setenv() for some reason). KDE already has a fix for the setenv() problem so I changed the configure.in.in file to use that.

22 September

configure.in.in file changes have broken Debian and Red Hat and anyone using an "ancient" version of autoconf. Put setenv() fix in config.bot file which is the old way to do it.

23 September

Ran code through an indent programme. Big patch.

The class import code for C++ seems to come from kdevelop. Should sync with kdevelop or use a library or plug from them.

24 September

One of the previous contributers used the (Microsoft) notation of prefixing all classes with C, CAssociationWidget not AssociationWidget. He then did a half hearted attempt at removing them. I renamed them all and all the references to them, plus moved some of the files that also had a redundant C in them. Big patch.

25 September

Started sketching some class diagrams of the source. This requires browsing through the source so I did more tidying up as I came across messy things: classes who's names begun with My, changing the class Uml from umlnamespace.h into a namespace and removing the multiple inheritance that this otherwise required.

Spent a lot of time sorting a one line method which just returned a QString that made the programme crash. Moving from an inline method to a proper method solved it but I suspect the problem was somewhere in the linker getting out of sync rather than the code. You wouldn't get that sort of thing from Java y'ken.

Get sent a patch which tried to allow importing of the old pre-XMI file type. The code to do this is all there so the patch just chose whether to call the old load method or the XMI one. Unfortunately it didn't work. The serialize() methods have probably changed too much since 1.0.3 and I probably can't be bothered tracking down where the differences are.

30 September

Added patch to make Java output files in the correct Java case and got totally distracted by many small thing, as usual.

There's been some queries about the state of the XMI compatibility. I know it's not perfect (it can't be, XMI doesn't do everything a UML programme needs) but I don't really grok XMI at all so I've no idea what's wrong with it. People keep mentioning MOF as well.

Current state of project, October 2002

The project released version 1.0.3 as a stable and reliable release in September 2001. Since then there have been a fair number of updates including state and activity diagrams, code generation and import and an XMI based file format.

The original author left UML Modeller in July 2002 and gave me admin privileges in September 2002. I released the current code as 1.1 beta-1. Packages for this code have been made for various operating systems and distributions by myself and others.

The aim now is to work for a 1.1 release. It should include no new features over what is currently available. This requires a fair amount of tedious clean up work and fixing of bugs. It also requires a good understand of the code base. I have started creating UML diagrams of the code base to help understand it. (This is surprisingly slow work because as I do this I get distracted by bugs and poor interface design which I feel obliged to investigate.) I also need to learn about XMI to ensure the files are compatible with the rest of the world. Other jobs include updating the help manual and choosing a name (probably the surprisingly popular Umbrello).

A 1.2 release should include new features. It may also be included in KDE (3.2).

There is no time-frame for Umbrello currently, this is an open bazaar developed project and as such will be released when it is ready.

This is a KDE programme. KDE is the leading free desktop environment for GNU/Linux and other Unixes. Currently I am working developing Umbrello on my own personal PC running Mandrake. Hopefully I will soon have access to Sparcs running a usable version of Solaris onto which I can compile (or possibly install the Solaris KDE packages) KDE. Why anyone would use Solaris rather than GNU/Linux is something I haven't yet worked out.

Appendage

The state of Umbrello UML Modeller when I took over:

  • Can do 6 types of diagrams
    • Class diagrams
    • Sequence diagrams
    • Use Case Diagrams
    • Collaboration Diagrams
    • State Diagrams
    • Activity Diagrams
  • Some code generation facilities
  • Some code import facilities
  • An XMI based file format, but not using standard XMI or even XML
  • Crashes frequently
  • User interface is usable but has many bugs/strange features
  • Copy and paste is very broken. Cut is completely broken
  • Could not import files from old versions

Diagrams

Class diagrams can include classes and notes. The associations are composition, implementation, realise, generalisation, aggregation, dependency, association and unidirectional association.

This is a large number of different types of associations and the program may benefit from merging some together with a selectable type as an attribute of the association.

Classes can contain attributes and operation (which contain parameters). The order of that these are displayed is not exactly consistent with the UML specification.

Sequence diagrams allow the usual objects and messages, but there is no vertical "run" boxes to indicate the passage of time.

Collaboration diagrams model the objects and messages.

Use case diagrams allow actors and use cases with generalisation, dependency, association and uni-directional associations. Actors and use cases can all be associated with each other.

State diagrams offer states, initial state, end state and state transition associations.

Activity diagrams have activities, initial activates, end activates, branches, forks and activity transitions.

Model

There is some separation between model and view. Classes and actors and use cases have both model representation and view representation. This allows the same classes to be used in several diagrams (or none at all).

Other elements are not kept in a separate model but are directly associated with a diagram. Associations are one case where this should be changed, this would allow the same association to be viewed in two different diagrams and would allow them to be better represented in generated code.

Class diagrams currently do not handle packages and nor does the internal model. Instead the model can order classes inside "folders" but these have no external representation. Future versions should include packages in the model which could be represented in class diagrams.

It is also possible to have too much separation between model and view. All the widget classes are split into widget and widgetdata classes. This was to prevent widgets having to be loaded with the document (which could take a long time) but currently it does not do this and moving from the memory hungry QWidget to QCanvas has rendered this unnecessary. These classes should be merged.

Code Generation

There is code generation for c++ and java. It does not take into consideration associations and it overwrites any existing code.

Code import

Code import uses old code taken from the KDevelop project. It is buggy and proves difficult to compile on some platforms (such as Mac OS 10). Rather than duplicating code with another project we should instead use their libraries. The APIs required for this will need to be investigated.

File Format

Umbrello now uses an XMI based file format. XMI is a standard for creating object based mark-up languages using XML. We use the UML version of XMI. XMI is currently in a lot of flux and there seems not to be any standard version with most UML programmes adding extensions or not using it at all. Ideally we would follow the XMI standard as much as possible but this is unlikely to be possible.

Older versions used a binary file format, Umbrello can now import this format but not export to it.

User interface

The user interface is clean and conforms well to the KDE guidelines as well as general good WIMP practice. It uses an MDI. The elements of the interface are the diagram, list view (which shows the model objects) and a document panel. The layout is currently done with simple Splitter widgets, this should be moved to internal windows so elements can be detached and moved and more than one document can be displayed at once.

The dialogues can be inconsistent. Text strings can be misleading and buttons the wrong way around etc etc. Fixing this is time consuming but important work (if the user is confused by the programme they won't use it).

Cut, Copy and Paste

The code for this is very buggy and unreliable. It requires serialisation of all the widgets and their attributes, but some attributes have been changed since it was added. There is no cut facility. Paste can sometimes paste the wrong widgets (sequence diagrams get collaboration object widgets for some reason). It need a close look through and fixing. It is the major task required before the next release.

Project Management

The programme has not always been managed effectively. CVS access was given out to some but not all developers and there was no use made of the bug and feature tracking facilities on source forge. Complete overwrites of the CVS repository were made which wiped any history from the files. Patches were often not accepted. I hope to change this record by allowing greater CVS access, consistently using the bug and feature trackers and encouraging discussion on the mailing lists.

This is effectively a move from a Cathedral style closed development to a Bazaar style open development bringing with it the advantages of the methodology as outlined in "The Cathedral and the Bazaar" http://www.catb.org/~esr/writings/cathedral-bazaar/ by Eric Raymond.

I have made UML diagrams of the code which has certainly helped my understanding of how it works. It also allows new-comers to the code to quickly understand where a certain part of the code fits in with the rest. I hope to keep this up to date.

XMI notes

MOF

OMG 4 level metamodel thingy

meta level MOF terms Examples
M3 meta-metamodel MOF Model
M2 meta-metadata, metamodel UML Metamodel
M1 mdeadata, model UML Models
M0 data a java programme

3 October

Created the UML class diagram of the programme. Found a few bugs and interface issues doing so, it's interesting actually using the programme rather than just testing it.

Spent a long time fixing a dialogue which had a cancel button that didn't do a cancel. It was surprisingly difficult to do because there's no standard dialogue with three custom buttons. C++ oddities didn't help either (why can't I use i18n() in certain places, and why wouldn't the dialogue creation code work inside a switch-case statement).

Took a quick keek at the competition. ArgoUML is a java program and seems to be the main free UML programme. It suffers from the usual Java problems (crappy interface, very slow). It's at version 0.10 whatever that means, and lacks some important features. It uses a strange version of XMI which I don't really understand.

Dia is a good general diagramming tool but it isn't ideally suited to UML stuff (no constrains on what can be in a diagram). It saves to it's own Dia XML file and doesn't know about XMI.

Quick UML for Java lacks many features. There's even uml-emacs, which is quite a scary prospect. It might be useful for writing documentation rather than diagrams. There's plenty of other programs registered with sourceforge but with no activity on them. UXF seems to a an XML language someone made up for UML stuff but even it says it's the wee brother to XMI.

6 October

Fixed a bug which meant that dragging a widget to the canvas made it appear at the wrong co-ordinates and another which made it hard to drag a widget to the edge of the canvas. I seem to spend of the time when doing this sort of thing waiting for it to compile. Changing a header file is just plain dangerous.

Got a reply from Edinburgh Uni's resident XMI expert. Apparently there's no easy way to learn XMI apart from her book which isn't published yet. Fooey.

There's been some discussion on the list about people complaining about the XMI files causing crashes. Should look into it.

8 October

Spent the last two nights sorting out an inconsistency in the diagram colours. Took much longer than I'm sure it should have and not really very elegant in the end.

9 October

synced mouseMoveEvent() with umlwidget to allow widgets to be moved to edge of canvas easier. There's a lot of duplicated code here which shouldn't really be.

Mike Quin installed g++ on stunix so I could compile KDE and all the various libraries which it needs. I can now use umbrello from university. Newton (stunix) is a much fast machine than mine and would certainly cut down on those lengthy code-compile-run cycles. It's a shame the CS department can't supply the high quality of facilities that the Information Services people can.

10 October

Fixed some bugs in the sequence diagrams. Messages were associated with the wrong object and the sometimes appeared in the wrong place. The labels wouldn't always appear and could be in the wrong place, but I fixed that.

Sequence object lines can be extended vertically but there is no visual indication that this is possible, which I consider a bug rather than a lack of a feature. Will have to think about how to add some.

12 October

Fixed various issues with collaboration diagrams not updating as they should, and crashing if you changed the font.

13 October

Got a few patches today and fixed some bugs in the patches. A few people have been given CVS access and I'm worried that they'll submit stuff with bugs in it but I guess the same applies to me.

Also tidied up some of the menus which were inconsistent. The right click popup menu code is quite messy, should look at making it more tidy.

14 October

Today we got two essays from people who have been using Umbrello and what features they want. It's nice to hear that people are using this in the real world.

All the bugs and feature requests have been put in the Sourceforge tracker which will hopefully be less messy than my HTML notes.

What I hope to achieve

1.2 should include:

20th October

Fiddled around with some interfaces which required you to right click to do anything.

There's been a couple of features added against my wished since we are meant to be in a feature freeze (with a 1.1 release in the next couple of weeks), which have added a couple of bugs. Need to keep a closer eye on those helpers.

22nd October

More interface changes, this time to the code generation wizard. Interface changes are very time consuming, there's still more work to do on it.

There's a back log of patches and bugs that I need to go through.

29 October (and past week)

Someone committed the PHP code generation code which predictably added some bugs and lacked some important features. Spent some time fixing that out.

Interface improvements, bad strings corrected and buttons the wrong way around swapped.

Fixed issue with removing white space when generating code.

Tidied up by correcting any methods with a capital letter as their first name and moving some inline methods back into the .cpp file where they belong.

Some people have been having difficulty making it compile. I synced the admin/ directory with KDE which fixed some and broke others. The code import flex file is causing various problems especially on Mac OS X.

13 November

Had a busy few weeks with assignments and personal upheaval. Back in the Umbrello mood today with some tidying up of the bugs database and answering e-mails.

15 November

Fixed a whole bunch of bugs. Checking metamodel, the strange case of the implementation association's circle appearing twice, changed "options" to something more meaningful, gave the name text field focus by default in class properties dialogue, diagram menu is activated after a new file now, activities now have borders, and the grid can't be set to a step of 1 (which would be silly really). Bigger fish to kill tomorrow.

There's been a whole lot of ambitious talk about a redesign for 2.0, it's far more than I ever expected so I'm thinking along the lines of a 1.2 or 1.1 branch and a 2.0 branch (where they can do whatever they like). Hopefully the 1.1 branch would go into KDE 3.2, woo hoo.

16 November

Further bug busting:

Sequence diagrams, which crashed all the time, have fixed themselves. It's very annoying when that happens, I've no idea what was going wrong. Probably just a figment of the build processes imagination.

17 November

Fixed all the bugs with the clipboard (well, all the obvious ones anyway) except the sequence diagrams pasting.

Sourceforge is down which is annoying.

18 November

Battled with autoconf to see why 2.50 works and 2.53 or 2.54 doesn't. At least I think those are the versions, autoconf reports different versions with `autoconf --version' and `/home/me/bin/autoconf --version' even though the second one is in my PATH. Gave up in the end.

Got rid of the last big bug, the sequence diagrams paste problem (pasted in the wrong position and without a vertical line). Actually pasting in sequence diagrams is fairly broken (no height now, no method names) but at least this will keep the proletariat happy. We're ready for the release candidate.

26 November

Some statistics:

That's the stats for 23rd October 2002 to 24 November 2002. The peak on 21st November is release candidate 1. 456 downloads in a day it represents. We seem to get about 2000 downloads a month on average. I get enough bug reports and problems to keep me busy but it's not that many compared to the number of users (especially since they'll all be programmers themselves).

Packaged up release candidate 1 last week. Of course more bugs come in, some association rules need changing and it seems my checking for the XMI metamodel doesn't work because we used to use a different one so I'll have to remove that. A nice contributor contributed a re-written user manual for it, spent one long and slow evening fixing the docbook to be perfect XML then perfect docbook. We also got a German translation of the programme and had to spend a while working out which strings need i18n() around them and which don't (XML output doesn't want to be translated for example).

27 November

Spent the day proof-reading the documentation for the new handbook.

28 November

Worked out how to get the tips file to be included in the .po file for translation, it has to be compiled with `preparetips'. Played around with Makefile.am to get it to work.

29 November

Reduced the number of fixable bugs to zero!

Folder names are now saved, some strings which should be translated but weren't now are (Logical View and Use Case View was saved to the file, should have just been run through i18n() inside the app and never exported). Fixed Select All to select all the associations as well as everything else. Added some buttons so the user doesn't have to rely on right-click menus for state properties. Played around with the drawing code for states to prevent lines and text being drawn outside the box when they grew large.

Moved the New Class Wizard to the bottom of the Code menu, it doesn't really belong in any menu but I think that's the best place.

There's been some discussion on whether activity diagrams should allow multiple outgoing associations or whether they should be forced to use branches. I changed the code to allow multiple outgoing associations which is consistent with state diagrams (much the same thing as far as I can see, at least syntacticly) but looking at books it seems this is not the done thing. State diagrams allow them, activity diagrams don't (although this is not the case according to the specification). It makes sense to force some discipline on the user so I put the code back in to disallow them.

10 December

Caught up with various bugs and requests that have been collecting in the last few days. Added some setFocus() to dialogues. Fixed the algorithm for adding data types to attribute and operation dialogues (it used to give some twice). Gave CVS access to a chap who seems keen to help.

21 December

Busy exam period. Various bugs have made themselves apparant so I tidied up the bugs database and fixed one of them (a dialogue with several widgets each with an index number, only the dialogue was used for several different occations and the widgets were different each time so the switch statement was running the wrong code which caused a crash).

17 January

Released 1.1 rc2 with the threat of releasing 1.1 on Monday (20th) if nobody had any reason why not.

Added a Slovak translation which had been sent in.

18 January

Fixed a bug which ment the label on a message was wrong when the programme loaded.

Wrote to kde-core-devel about including it in KDE and got favourable replies.

19 January

Looked into integrating it with kdesdk. Had to munge various things like configure.in.in and change the every annoying import code to work with -DQT_NO_ASCII_CAST

20 January

Released 1.1. Finally. Had a last minute panic when make -f Makefile.cvs decided to fail but it was just something strange with my autocond/automake setup.

21 January

Bug reports for 1.1 have started coming in. Most serious is that it crashes when you try to print. An annoying one because that didn't happen in the beta releases. It got fixed in the end but might have to release a 1.1.1.

On the upside I seem to have mostly done the KDE integration correctly and hope to import it soon.

23 January

Spent the day integrating Umbrello into KDE's CVS. It's now an official KDE programme! I got a category made for us in bugs.kde.org which has me as the admin and I'll move over the bugs soon. KDE developer Dirk M kindly fixed up the Makefile.am files.

Got complaints that Umbrello doesn't follow coding correct user interface practice. Some of the capitalisation is wrong (there's strict rules about this sort of thing, Book Title Capitalisation for some places and Sentence Capitalisation for others). Investigated check style, a widget style which is clever enough to colour code capitals it thinks are wrong. I'll make some changes once the KDE administrata has settled down.

24 January

Released 1.1.1 which contains the printing fix. This will be the last release from sourceforge CVS.

Imported all the bugs and relevent features into bugs.kde.org.

Stopped the daily source tarball and changed webpage to point at KDE's CVS.

The Free Software Foundation wanted to add the project to their directory and sent me a survey. They also complained that I didn't have the full GPL (it missed out the "how to apply this" section) so I fixed that.

27 January

Incorporated a patch which moves the associations from just the diagrams to the internal model. Makes code generation much easier. Still some work to do on tidying up the old assocwidgetdata class to prevent duplication of data.

Dirk Mueller seems to have changed a Makefile.am so it doensn't make the library any more, have queried him about it.

28 January

I played around with a Perl and a Python code generator which had both seem sent in. They had to be updated to the latest code base and have header files added and various things. Neither is complete, they don't properly include associations so some work still to be done there.

The code marked as [Possibly Unsafe] by KDE's CVS mailing script turned out to be nothing more than comments that happened to include the words system or gets, not actual use of those calls.

30 January

Fixed a bug which turned off the grid when you did copy or cut. Printing looks like it has some issues as well, like not printing the last page.

1 February

A zoom and resize patch has been submitted. Spent the day fixing a few bugs with it like it causing right click menus to pop up in the wrong place and making it save to the file the zoom value. Added zoom buttons on the toolbar for extra standards compliance.

A related patch was also committed which allowed for resizing of the canvas and I fixed up a few things such as saving the size to the file and did some refactoring in the drag object code to prevent duplication and stop objects being dragged off the edge.

2 February

Fixed a wee bug I'd put in a day before which broke moving two widgets at once.

Played around with the canvas resizeing stuff. Widgets can now be dragged to the edge and the canvas resizes automaticlly.

Added keyboard accelarators everywhere and fixed capitalisation to make it compliant with style guidelines. The check widget style really is a genius invention, it checks for most of the problems for you and hightlights them.

4 February

Umbrello is not being used by Quanta, the HTML authoring program for KDE. quanti_uml.xmi.

Had some conversations on the XMI mailing list about our file format. They weren't terribly impressed because it doesn't conform to XMI very well. However it's hard to feel the need to since XMI is such a misused and hard to use standard.

Changed the canvas resize to take into account where the scrollpane is viewing. Now works pretty well.

7 February

I've been working on an undo (and redo) function for the last few days and managed to get it working enough to be committed today. It just saves the file each time it's modified to an internal buffer and loads that up when undo is called. There's some flickering of the widgets and setModified() isn't always called at the right times (plus there's the occational crash), but I'm pretty pleased with it.

Also grep last weeks CVS digest for Umbrello.

11 February

Spent the last few days working on replacing the current QSplitter widget arangement with a KDockWidget one. The result looks almost identicle but the widgets can be easily moved around by the user. It lays the foundation for replacing the tree view list which mixes diagrams and model objects with tabs for the diagrams.

12 February

I'd received a patch for the associations to add some features to them, roles at either end of the association and other properites. The code for associations is a mess (used to be just in the diagrams, now also in the internal model so it's split between two places), so this was a fairly complicated patch. Unfortunatly it was against the 1.1.1 version and there's been a good few changes since then (the guy who sent it in seems to be a perfectly competant coder and he works for NASA, hmm). Had to apply most of the 6000 line patch by hand but got it in in the end.

Changed the startup screen to use a QTimer to disappear rather than have to sleep(2) the whole programme. I've looked at the problem before and never managed to work out this obvious solution, here I worked it out without even thinking about it.

14 February

Worked out how the VERSION file gets included in the programme. There's a rule in Makefile.am to echo it into a version.h file which is then #included. All seems a bit elaborate for something so simple but I did it anyway.

18 February

The position of labels on associations wasn't saves so although you could move them about they moved themselves back to their default position when the file was loaded or when any of the attached widgets was moved. Fixed this.

Added redo and undo to the right click menu, it was always there but I'd commented it out because there wasn't an undo or redo function before.

Fixed a bug which had cropped up in Redo which made it crash, by deleteing the contents of the diagram it reset the Redo stack to be empty, oops.

Made the auto-scroll code work only when the mouse button is held down (takes you by surprise otherwise).

And fixed the status bar to show on first load and to show the right message after an undo.

Finally the startup logo caused a crash if you waited for it to close before clicking OK on the welcome dialogue box. Fixed this too, but it still is a memory leak of sorts.

22 February

Fixed a bug which stopped diagrams being shown in the diagram menu (it was searching for a menu called "show" which didn't work too well with i18n). Added a menu to show or hide the document or tree view bits. This was just using the KDE libraries and mostly required removing code than adding any.

23 February

Added Paramaterised Classes, the container classes known as templates in c++ and soon to be generics in Java 1.5. The properties of templates are much the same as attributes. Well that's one more item knocked off the wishlist.

25 February

Added Interfaces. There a bit like classes but not quite. Starting thinking about refactoring UMLObject to try and get rid of a bunch of duplicated code. Currently everything inherits off UMLObject, I'd like a more heirarchical approach. http://www.cs.stir.ac.uk/~jri/umbrello/umbrello-umlobject-design.png

UMLClassifier also matches the UML metamodel more

26 February

Didn't manage to get to do component diagrams which is what I'd wanted to do. But did add a template icon, sort out the associations on packages and interfaces, add interface names to choice of attribute names, fixed a bug with the list view items for attributes and operations on loaded files, added a patch for associations from Brian T, added a bunch of stuff to the bugs database, and possibly signed up someone to do us a code import interface (the same guy as did the new c++ parser for KDevelop 3).

27 February

Added some code generators that had been lying around gathering dust, IDL (CORBA) and SQL(!). Required the usual tidying up and changes to get them up to date. Removed some of the attrocious inline methods from association.h, inlines really are evil.

1 March 2003

2 March

Added component diagrams. No new classes needed for this sort of thing, just adding some values to the Enums and adding that to the logic. Refactored the logic a bit so there's methods like isADiagram() rather than testing each value in the Enum.

Also fixed a bug which caused exported diagrams to have a black border. Was using it to make diagrams of UMLObject and noticed how annoying it was not to resize when dragging a class onto the canvas, so fixed that. It does help to actually use the programme.

3 March

Added components (so component digrams are now working). A lot of copy and paste for this. Shall refactor UMLObject soon. Reports of component diagrams causing a crash.. Red Hat user.. figures. :)

8 March

Spent the last week refactoring UMLObject with only partial success. I managed to add a UMLCanvasWidget which inherited from UMLObject and is inherited by classes and packages and components and all those objects that can be represented on the canvas. This removed a large amount of duplicated code, added the new UMLAssociation functionality to some classes which hadn't been updated (Actor, UseCase) and makes it a fair bit easier to add new widgets.

Tried to make some sort of general template and holding class for attributres and operations which could then be extended to exceptions, responsibilities and other things. Failed in this because of inbuilt heierarchy expected of attributes, plus Luis made quite a few changes which might conflict. A shame.

Added artifacts to Component diagrams. Can be drawn with various different icons.

Decided that single clicking associations for adding a break point is a bad idea (single click selects as association, and it interfears with moving a break point).

Bugs have been re-assigned to uml-devel rather than me. I now have no idea how to close or do other operations on them.

9 March

Added Deployment diagrams. They're a bit like component diagrams but with component as instances. Will probably change the code a bit so it's easier to make widgets as instances.

Made the story of dot.kde.org due to prominant inclusion in KDE CVS digest.

11 March

Added Nodes to deployment diagrams. That's all the diagrams of UML 1.4. From now on anything is just an improvement :)

12 March

Caught up with some patches and other Umbrello e-mails that had been collecting. Added XMLSchema code generator (if they take the trouble to write it, it must be useful). Fixed some problems that had been pointed out with the javascript and actionscript code generators. And added a large patch to change UMLConcept to UMLClass and give UMLClass and UMLInterface a common superclass, UMLConcept. http://www.cs.stir.ac.uk/~jri/umbrello/umbrello-umlobject-new-umlclassifier-design.png, note similarity to http://www.cs.stir.ac.uk/~jri/umbrello/umbrello-umlobject-design.png which I had half done. Great minds et al.

17 March

I've added a few patches and caught up with a few e-mails. Brian Thomas from NASA seems to be getting quite into it, but then he does seem to work on it as part of his job.

Been working for the past few days on converting the clipboard from using the serialise() methods to use the loadFromXMI() and saveToXMI() methods. This is proving quite time consuming, it requires a good understanding of the relationship of all the elements of the program. I suddenly have renewed respect for the person who wrote the cut and paste code origionally. Hopefully if I get time to complete this it'll mean an end to out of date and hard to maintain serialise() methods.

Made top place in this weeks KDE CVS digest again!

18 March

Surprised myself by being able to complete the rewrite of the clipboard to use XMI rather than serialise(). It seems to mimic the old code almost exactly (except that it works with new widgets), including all the minor bugs (associations importantly).

19 March

Woke up to fine a few changes had been made to the code by a KDE developer. Unfortunatly this stopped it compiling with GCC 2.95 and caused a freeze when drawing a diamond headed association, so I had to revert the appropriate file back to it's old version. It is important for a project admin to keep an eye on what other people are doing to it (it's also important for people to keep an eye on me of course).