- Support for UML 2.x (with eUML, the eclipse UML2 based model implementation)
- Java module: better Java source code roundtrip
- Java module: reverse engineering of sequence diagrams
Please be nice and don't modify my writings, but you are welcome to add comments. Thank you!
The project and who we are (May 07, 2009)
ArgoUML is an open source project, and we make sure that everybody can easily contribute to it. But then, only a small core team of volunteers work on it while we are hopelessly behind the list of essentially needed and user requested changes. The ArgoUML entry in Wikipedia expresses it this way: "ArgoUML development has suffered from lack of manpower". Personally, I sometimes feel frustration about it. The fact is known for so long, that noone seems to want to talk about it anymore. For me it doesn't mean that I stopped thinking about it, so I blog about it.
Open source projects with lack of progress (and/or activity) are not uncommon, in fact most projects are of that type. Successful open source projects are just the top of the iceberg, but they get the most attention of course. ArgoUML unfortunately is more of the first type (regarding progress only, we're active!), but on the other hand it seems to be well known. Inside the team, there is an agreement that we should be more successful, but I think we miserably fail. Even though the core team members are very faithful and the tool has a very robust saving format with good developer support. But: we don't overcome the lack of manpower and the missing of an actively communicating user base.
Why are some open source projects successful and others not? I don't know. I observe that many successful open source projects started with some software written by some company, and it became (partly) open source only later. And if the software is of common interest and (part of) the developers are paid by companies, then there's a chance for it to be a success. Modeling with UML is of common interest, but there's probably no chance for ArgoUML for benefitting from company resources. For companies buy UML tools, they don't invest in their further development, one can guess why. So, the times when someone can post somewhere a message like "hey, I wrote some useful software, wanna join development?" (I'm refering to the Linux success story) are probably over.
ArgoUML needs to find another way to deal with the lack of manpower and the missing of an actively communicating user base. We tried, e.g. by participating in GSoC 2007 and 2008, also by offering many support channels, but that's not enough. We have practically no contact to our user base, there is no community. I believe that with the current state of ArgoUML, we can't achieve much here. The first step is to bring ArgoUML to a certain point of "readyness" with some efficiency. This means to concentrate on some key topics, in my opinion these are: UML2 and Undo. But then this must be followed by further "evangelism" steps, we need good ideas here. My idea is to offer some practical UML knowlegde resources: UML introduction, tutorials, sample projects. If they become referenced, then we'll get some traffic and attention. Others have the idea to integrate with eclipse to get before the eyes of developers. What are your ideas?
We must become the tool of choice for a reasonable large potential user group. (Do we really know which kind of users we aim at?)
First UML2 steps (April 07, 2009)
I did it! My first code for UML2 support is committed, and I'm crossing fingers that no horde of mad developers run after me. I consider myself a UML2 newbie, though I already had some looks into the UML2 superstructure specification and read Bogdan's eUML reports. But other developers have more or less the same entering difficulties (maybe with the exception of Tom, who was mentoring Bogdan).
What I did? Since my eclipse was set up already for ArgoUML, I only had to launch from the existing launch configuration "ArgoUML UML2-EUML debug", and there was UML2 ArgoUML! Creating a class works, but with creating an attribute for it the first problem was already encountered: the default type was not found. It is normally read from the UML profile for standard elements, but the UML1.4 version didn't work of course.
So here was my first quest: get ArgoUML run with an initial UML2.2 standard elements profile. Luckily, creating datatypes/enumerations and saving worked thanks to Bogdan and Tom, so I successfully got my first XMI 2.1 file. Idea: let the profile subsystem load this new internal profile if the model is an UML2 implementation, else the other internal profiles. Eventually it worked, but I had to implement missing model facade methods, mess around with some new TemplateParameter and UML class object code, and change the Profile subsystem a little bit. In the end I found myself having permanently open the UML spec, the eclipse UML2 Javadoc and both our MDR and eUML model implementation code.
Training mission completed, where's the enemy now, Sergeant?
I think we should continue with this and work on several different levels. /linus
Looking back (April 06, 2009)
I wonder if this wiki could be used as a blog, so I give it a try. Oh, by the way: my english is not the best, so I apologize in advance for all the pain that I will cause to the readers.
On Saturday I had a long phone call with Andreas Rückert, we talked about the early days of ArgoUML. I'm a project member since 2001, but he could tell me what happened the years before, when Jason Robbins and others started everything, and when ArgoUML became open source. I also had a look in our Ohloh project page to study the great commit timelines a little bit. So my first contribution was to change the Java notation in the diagrams into UML notation, because ArgoUML should be a general UML modeling tool, not just for Java programmers. I also remember that later in the same year I changed the class compartements to not only be one text area (!!!) for all attributes (or operations), but one text figure for each of them. After this I found a commit with the comment "starting pluggable diagram support", and I can't even remember, because diagramming is really not my area! Funny...
So these were my beginnings, and since then I (try to) concentrate on reverse engineering and code generation. With long intervals of pausing from ArgoUML, I must admit.
Great that you are back working with ArgoUML. /linus