Sunday, October 16, 2011

Apache Karaf 2.2.4 Released!

The Apache Karaf team is pleased to announce the availability of Apache Karaf 2.2.4.

This release of Apache Karaf is based off of the 2.2.x series branch, representing an update to Apache Karaf 2.2.3. It contains bug fixes identified in the prior release, and introduces improvements including; significant improvements to KAR support, and new MBeans (such as Dev, HTTP, Log, OBR, Bundles, Services and System). Several dependencies were also updated, bringing Apache Felix Gogo to version 0.10.0, and Pax Web to 1.0.7.

To help make the transition from Apache Karaf 2.2.0/2.2.1/2.2.2/2.2.3 to 2.2.4 easier I've put together a table of changed dependencies:

Karaf Version
2.2.0
2.2.1
2.2.2
2.2.3
2.2.4
aopalliance.bundle
1.0_4
1.0_5
1.0_5
1.0_5
1.0_5
asm.bundle
3.3_1
3.3_2
3.3_2
3.3_2
3.3_2
cglib.bundle
2.1_3_6
2.1_3_7
2.1_3_7
2.1_3_7
2.1_3_7
commons-codec.bundle
1.3_3
1.3_4
1.3_4
1.3_4
1.3_4
commons-collections.bundle
3.2.1_1
3.2.1_2
3.2.1_2
3.2.1_2
3.2.1_2
commons-lang.bundle
2.4_4
2.4_5
2.4_5
2.4_5
2.4_5
jasypt.bundle
1.7_1
1.7_3
1.7_3
1.7_3
1.7_3
jetty
7.2.2
.v20101205
7.3.1
.v20110307
7.4.2
.v20110526
7.4.5
.v20110725
7.4.5
.v20110725
junit.bundle
4.7_2
4.7_3
4.7_3
4.7_3
4.7_3
equinox
3.6.0
.v20100517
3.6.0
.v20100517
3.6.0
.v20100517
3.6.2
.R36x_v20110210
3.6.2
.R36x_v20110210
felix.framework
3.0.8
3.0.9
3.0.9
3.0.9
3.0.9
felix.gogo
0.6.1
0.6.1
0.6.1
0.6.1
0.10.0
felix.eventadmin
1.2.8
1.2.10
1.2.12
1.2.12
1.2.12
aries.blueprint
0.3
0.3.1
0.3.1
0.3.1
0.3.1
pax.exam
1.2.3
1.2.4
1.2.4
1.2.4
1.2.4
pax.logging
1.6.0
1.6.2
1.6.3
1.6.3
1.6.3
pax.runner
1.5.0
1.6.1
1.6.1
1.6.2
1.6.2
pax.url
1.2.5
1.2.6
1.2.7
1.2.8
1.2.8
pax.web
1.0.1
1.0.3
1.0.4
1.0.6
1.0.7

For more information please see the release notes.

As discussed in my prior Apache Karaf 2.2.4 preparation post, I enjoyed listening to Hawksley Workman albums throughout the release process and was delighted to try the Quinta São João Batista Syrah Reserva 2007 once the release was complete. Now, sadly, I find my carafe empty... luckily Karaf 3.0.0 is now the focus of the community, with all efforts heading towards its release :)

Wednesday, October 12, 2011

Want to feel like a Rockstar software developer?

Before I dive into how to feel like a Rockstar software developer I think we should ask just what is a software developer Rockstar?

There is no one criteria from which one can describe a Rockstar software developer, a collection of traits however can help encapsulate the concept. On Read Write Web, a "Top Ten Traits of a Rockstar Software Engineer"is discussed in detail - the abbreviated list is shown below:
  1. Loves To Code.
  2. Gets Things Done.
  3. Continuously Refactors Code.
  4. Uses Design Patterns.
  5. Writes Tests.
  6. Leverages Existing Code.
  7. Focuses On Usability.
  8. Writes Maintainable Code.
  9. Can Code In Any Language.
  10. Knows Basic Computer Science.
Reviewing this list I think I can simplify this Rockstar concept into "just be a competent, industrious software developer" (which to a junior developer these are all great traits to pick up). Really all of the above traits I find among most software developers I've encountered over my career - all of them doing these things to greater or lesser degrees, but I don't think practicing all of the above as placing developers head and shoulder above the rest of the pack. There has to be something more to being a Rockstar.

Searching some more I found another post describing the traits of a Rockstar software developer, this time from a blogger whom looks at things from the point of view of a startup looking for programmers. In the article "What makes a 'Rockstar' Developer?" the following traits are discussed:
  1. They don't think of themselves as rock stars.
  2. They have a proven record of multiple shipped products.
  3. They care more about frameworks than plumbing.
  4. They're not willing to work for free.
  5. They believe in development process and best practices to speed up their work.
  6. They have a positive attitude.
  7. They get uncomfortable when you ask about their social life.
  8. You don't want Alphabet/Acronym soup in their technical skills.
  9. They're involved in the community.
  10. You respect them.
I prefer this list to the previous as it hits on a many of the concepts I think make a Rockstar software developer - accomplishments, a great attitude, deep knowledge (know their projects from floor to ceiling), help their community, and garner great respect from their peers. You can tell that you've meet a true software developer Rockstar because they don't try to sell their self to you, their charisma draws you to them to join in the fun their having developing their project(s). Bonus points come when you've worked with the Rockstar for a longer period of time and feel just as excited to do so now as you did when you first started.

So what does this have to do with feeling like a Rockstar software developer?

I believe the essence of being a Rockstar software developer is sharing your passion and deep knowledge for software project(s), and having other developers seek you out for guidance. To this end I think the best way to gain this experience is to join into a mentoring program that matches your development background with other developers looking to learn best practices from you.

In my case I enrolled in the Apache Local Mentors Program - its purpose is to help link up new Apache contributors with existing Apache Committers in their community in order to help the new contributor to integrate further into the Apache community at large. From the point of view of the new contributor whom may have only had interactions with Apache via mailing lists, IRC, source control, and issue trackers meeting an existing Committer helps put a human face on the community. For the Committer they get to share their project with another developer whom is eager to learn.




Karaf/Kalumet Style
Learning
Mentor Protege

















My experience so far has been immensely positive. Having another developer excited to learn about the projects you've worked on for so many years learn the ropes, and begin to contribute is incredibly rewarding. I would highly recommend all Apache Committers join into the program, and help mentor more developers into our community. To me this is what it means to be a Rockstar software developer, drawing in new developers to your project(s) and helping them work toward all of the traits discussed above. Some may say that there is more to being a Rockstar such as fame, fortune, influence, and prestige - to them I say be mindful in taking those aspects of the Rockstar concept too deeply to heart, there are many examples online that tell tales of Rockstars gone wrong. All things in moderation, the concept is good, just make sure you remain a developer other developers want to work with. In the end we're all just trying to spread our enthusiasm, craftsmanship, and joy of programming with others.

Wednesday, October 5, 2011

Growing Apache Communities

Around a year or so ago I posted an article on the Apache Community Development Project, a community effort to help newcomers to the Apache Software Foundation take their first steps on their way to being a part of our community. I think this effort needs to be visited more often by community members, if not to just expand Apache projects' mind share then to connect with the people using and contributing back to the common good. At Apache community is everything, so ensuring it continues to evolve, and grow is something that community members should all be actively engaged in.

So how can we do this? I tend to side with the think global, act local philosophy. So here are my suggestions:

  • Provide Seminars/Guest Lectures to your local college or university Computer Science, Engineering, or Information Technology departments (students make great audiences).
  • Join the Apache Local Mentors Program (who wouldn't like to have a protege?).
  • If available, attend Local User Group meetings where you can meet and assist users with Apache projects your familiar (Java or Linux user groups tend to be a great meeting place).
  • Give talks at local level industry meetings (ex. See Jon Anstey's BSides security talk).
  • Give talks within organizations you work (become your teams' Apache expert or champion).

I've had the opportunity to do most of the above list. Of these I've most enjoyed talking with students at my alma mater, and participating in the Apache mentoring program, assisting new contributors directly into Apache. In both cases it has involved talking about the ASF, meritocracy, contributing, and making the transition to becoming committers.

On October 18th, 2011 I'll be giving my third guest talk to a class of Computer Science students as part of their Software Methodologies course. If you live in or around the St John's area feel free to contact the class' professor to see if their is space available sit in on my talk (there is limited seating, with priority to enrolled students). Another Apache talk with the Computer Science department is also in discussion to occur in the January 2012 timeframe, I'll post details when they're finalized.

If you have suggestions for other ways to help grow Apache communities, or comments in general on Apache community, please feel free to leave it in the comments section below.