Web pages for the ArgoUML project.

From the ArgoUML wiki at
Wiki: How to contribute

You can help, there are big tasks and small tasks waiting for you.

Here is a suggestion on how you could become part of the ArgoUML Project. This could be perceived as a ladder to climb but remember that if so it is firstly a ladder of levels of commitment and time spent by you. You get no prize for climbing higher, you just get more responsibility in the project.

  1. Use ArgoUML.
  2. Report bugs & suggest enhancements.

  3. There are bugs in ArgoUML. When you use ArgoUML you might encounter them where you least expect it. To help, make sure they are known about i.e. that there exists an issue in Issuezilla describing the problem. You need to be a registered user at Tigris to report bugs but notice that to add further comments to the issue you also need to have gotten a Role in the ArgoUML project. Like all good open-source projects, ArgoUML is evolving to meet the needs of its users. We can only do this if we know what users need, so please file enhancement requests. To help the developers prioritise work on bugs and enhancements, vote for the ones that you really care about. You need to be a registered user at Tigris to report bugs and enhancements (and to vote for them) but notice that to add further comments to the issue you also need to have gotten a Role in the ArgoUML project.
  4. Subscribe to some of the users' mailing lists. Discuss how you use ArgoUML in your project and how you promote ArgoUML in your organization. You can also help other users with their ArgoUML-related problems.

    There is one users' mailing list for each language project (Spanish, Swedish, Chinese, ...) for the users that prefer to discuss ArgoUML using that language. These are not currently (May 2006) very active but the main list, the English-speaking list at, is. In some cases there are also users' mailing lists for the specific subproject, for discussing these specific features or uses of them (cpp, andromda, ...). Prefer those if your discussion is for that area.

  5. Apply for an Observer role. This shows that you are committed to the project and also allows you to comment on issues.
  6. Familiarize yourself with the project and how we work. Suggestion on how to go about this:
    1. Read through most of the User manual and install and run the latest version of ArgoUML.
    2. Subscribe to the issues list. You will get updates on all issues so you can monitor what we are doing in the project. (It could be a lot of mails. If it turns out you don't like watching issues in this way, you unsubscribe!)
    3. Subscribe to the commits mailing list of the project that you are interested in. You will get updates on all changes that are done to code, documentation, and the web site. (It could be a lot of large mails. If it turns out you don't like watching what is going on in the project in this way you unsubscribe.)
    4. Read the Processes for the ArgoUML project. This will give you the idea of how the ArgoUML project attempts to release with good quality and especially how we use Issuezilla.

    5. Get the Observer role granted. You can apply for the Observer role in any or all of the argouml projects if you like. Choose the ones you are interested in. From this point on you can comment on bugs yourself directly in Issuezilla. You can also close or verify issues. This will help you understand the terminology used in the project and also gives you an idea of the current quality of ArgoUML and what needs to be done in the future. This is also a very low-commitment level task that could be completed in a couple of minutes (depending on your choice of issue).
    6. Read the rest of the Developers Wiki (used to be Developers Cookbook). There is a lot of stuff discussed in here that is interesting for your understanding of the project and the code.
    7. Check out the source from subversion and build.
  7. Subscribe to some of the dev mailing lists. There is one dev mailing list for each project with the purpose of discussing the specifics for that project. Subscribe to as many of them as you'd like and take part. The purpose of this is to see what the developers are discussing in the project. Monitor the discussions and as soon as you see something discussed where you have an opinion, jump right in!
  8. Familiarize yourself with the code. For this a good knowledge of Java is more or less a prerequisite. Suggestion on how to go about this:
    1. Take active part in the discussions on the dev-list.
    2. Solve issues registered in Issuezilla or fix other things that you want to pursue.
    3. Convince someone to commit your changes.
    4. Establish a relationship with one developer of the project you want to work with. That developer will check that your code reaches the quality level that we strive for in the project and obeys the design.
    5. Repeat. This can go on until the developer helping you knows that you have good knowledge of the project quality and design and the main problem for you two is that sending, waiting, committing, updating et.c. is extra work.
  9. Apply for a Developer role in the project where you want to contribute. This allows you to do commits on your own and you can now increase the pace in which you are working while also increasing your responsibilities in the project. This role is granted by the Project leader after he is convinced that you have learned enough about the project with regard to:
    • Understanding and accepting the goals.
    • Understanding where we are in the development process.
    • Understanding the terminology used in the project.
    • Understanding how we use subversion in the project.
    • Understanding the set of tools (ant, JUnit) and how to use them.
  10. Focus your work in a specific area. Everybody has different interests and the best contribution is made when someone is allowed to pursue his own interests. Hopefully ArgoUML provides you with interesting challenges to your taste.
  11. Accept responsibility for a specific area.


How to contribute (last edited 2009-03-15 09:01:19 -0700 by linus)