Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

First steps

  1. Subscribe to the dev list and say Hi
  2. Get the source code with svn or git
  3. Build the code (maven 2.2.1 or higher recommended)
    • mvn clean install

Play around with the examples under the examples/ directory. Some of the neater ones are (ordered simple to complex):

  • simple-stateless (see video)
  • simple-stateful
  • simple-singleton
  • simple-mdb
  • async-methods
  • schedule-methods
  • injection-of-env-entry
  • injection-of-ejbs
  • injection-of-datasource
  • injection-of-entitymanager
  • testcase-injection
  • testing-transactions
  • transaction-rollback
  • testing-security
  • testing-security-2
  • simple-webservice

What is the process

...

?

Code Block
titleContributor.java
public void contributeToOpenSource() {

    boolean stillInterestedAndHavingFun = true;
    int taskSize = 1; // start small!
    
    contributing:
    while (stillInterestedAndHavingFun) {
    
        Task task = findSomethingInteresting(taskSize++);
    
        if (!task.hasJira()) {
            createJira(task);
        } else {
            requestToBeAssignedToJira(task.jiraId());
        }
    
        while (task.inProgress()) {
    
            chatOnListALittleGetCleverIdeas(task, new Ideas(task));
            hackALittle(task);
    
            if (task.tooHard() || task.notFun()) {
                // no big deal, try again with something else
                taskSize--;
                continue contributing;
            }
        }
    
        File patchFile = createSvnOrGitPatch(task);
        attachToJira(task.jiraId(), patchFile);
        askForReviewOnList(task.jiraId());
    
        while (!committed(patchFile)) {
    
            try {
                pokeAtSometingElse();
                helpOnUserList();
                dayDream();
            } catch (MoreThanAWeekException e) {
                // Assume it fell off the radar -- happens.
                // Evidence we need more committers.
                bumpThreadOnList(task);
            }
        }
    }

}

After a while when people feel comfortable with you as contributor, they vote you in as a committer and ... big surprise ... there's almost no change in the daily routine. You get access to svn and pretty much everything else stays the same. Instead of submitting patches, now you have to help review them and commit them. Instead of learning how to contribute to an open source project, now you have to learn how to help others get involved. And of course it doesn't happen all at once, you never stop learning these things and you never stop wishing you had more time.

No one cares how much code you can write or how fast you can write it. We all just contribute what we can when we can and there are no expectations on how much, how often, or where.

It's very much about the journey and there is no real end as long as you're having fun and learning.

Probably finding something to do when you do have time is the hardest part ... that never changes.

Be Brave

Don't assume everything has already been discussed a million times and you're the only one who doesn't know and so you shouldn't bother anyone and should just figure it out on your own. That thinking is your enemy. Don't do that or you will get nowhere ... very slowly. So slowly that now you feel you really can't ask about it because surely everyone assumes you know it or have done it by now. That thinking is a terrible trap. Ask questions. Post your thoughts.

...