Archive for the Category 'opensource'

Some thoughts on the Grails and Groovy communities

Sunday, September 20th, 2015

If you’re a Grails user then you’re probably aware of some recent events online (Twitter, the Grails Slack channels, etc.) that are unfortunately still ongoing as I write this, and the whole situation is quite a mess. I’m not going to link to any of it or discuss it directly, but it got me thinking again about the Grails and Groovy communities, and the other “GR8” communities in the Groovy ecosystem (Ratpack, Gradle, Griffon, Geb, GPars, etc.)

When I start working in a new area of tech I usually sign up for a mailing list or forum, or whatever they tend to use for discussions about usage, upcoming releases, future plans, etc. I rarely get involved though. When I’m new at the tech I usually find that questions I would have asked have been asked and answered, and once I get good enough at it I tend to rely less on those resources. So I tend to lurk in general and don’t actively participate.

My tendency toward being a lurker is also affected by not wanting to embarrass myself online. When I was a graduate student I discovered the TeX typesetting software and thought that it would be great to use for papers, so I started collecting software and resources. Windows 95 had recently been released1 and Windows options weren’t great then. Someone asked a question on one of the local Usenet groups and being an expert I replied. Except that I was far from an expert and gave rather bad advice, and a few others who actually knew what they were talking about jumped in and provided useful information. I tend to have to touch the pretty glowing orange thing on the stove to learn that it’s very hot and a painful thing to do, so this was a good experience for me. It continues to be a reminder to try to be humble and to help where possible, but be willing to say “I don’t know” when that’s the case, and stay out of the way if I don’t have anything to contribute.

When I discovered Grails I signed up for the user and dev mailing lists. There was a lot to learn, and many of the emails didn’t make sense but I saved a bunch that seemed like they’d be useful later. I quickly learned a lot thanks to the helpful developers and users on the lists. Eventually I got good enough that there were questions that I could answer, but often others would answer before I did. Occasionally a more obscure question would go unanswered, and those would nag at me from my inbox. Sometimes when I was stuck on something for work I would take a break and look at some of those questions and try to see what’s going on, either because it did or might affect what I was working on, or just because it was interesting. If I didn’t get anywhere, then I would let it go, but if I felt like I figured it out or that I at least could contribute useful insights, I would reply with what I found.

Getting a reply on the list from a frustrated user saying that I’ve helped them get past an annoying issue is a pretty cool thing, and a big motivator to continue. Much like teaching, helping others with tech support issues is usually beneficial for both sides since it forces you to understand what’s going on under the hood much more than when you just use the feature. In retrospect, although I was reluctant to start giving back, it didn’t make sense not to. The lists were active with lots of generally respectful discussions, and although people have come and gone, there remains an overall tone and it’s profoundly positive.

When I started going to Grails conferences, the subject of how helpful the communities are was (and still is) a common topic in hallway and mealtime discussions. This was weird to me because I hadn’t really noticed, mostly since I hadn’t really seen communities that weren’t. Of course I’ve become aware of some of what they were referring to 🙂

So the big question is: why are these communities so helpful and friendly? I can’t know for sure, but it obviously has a lot to do with the project leads and big names in the various techs. From the beginning, their personalities and temperaments set the tone that continues today. Why we were lucky to have these people driving the technologies in the first place is a topic for a future blog post, or at least something to discuss over beers at future conferences and meetups.

I’ve learned so much more than I could have expected by participating in all of this, and I’ve been lucky to meet a large number of smart, funny, inquisitive, amazing people. Thank you all, and keep up the great work. It’s easy to get distracted by the frustrating bits and the negative aspects, but weeks like this one are, if we’re able to see past them, a good reminder of how much we have and tend to take for granted.

As a side note, I cringed a bit when the Greach organizers announced that they had put up a code of conduct for this year’s conference. After some high-profile incidents at Python- and Ruby-related conferences (and elsewhere) many conferences did the same, but it didn’t make sense to me to do this at a Groovy-related conference since it’s not needed. It didn’t take long to realize that this was naive, and while we are a friendly bunch, there have likely been incidents where attendees were harassed or made uncomfortable and I wasn’t aware of them. And even if not, there’s nothing wrong with putting core beliefs and expectations in writing. My version would be a lot shorter though: “Don’t be a jerk”.

I rarely say this but it’s pretty much always the case – these are my thoughts and opinions and I don’t claim to speak for anyone or any company or organization I’ve worked with in the past, present or future.

Also, all comments on this blog are moderated and I will not accept any that aren’t constructive, and I reserve the right to disable comments entirely on this post if necessary.

  1. I pre-ordered my copy and it was delivered by FedEX the day it was released – very exciting![back]

Turds in a Broken Free Toilet

Saturday, July 25th, 2009

An astounding blog post just appeared in my RSS reader (indirectly, I don’t subscribe to the feed). I won’t link to it; perhaps by reading this you’ll know which one I’m talking about. The author discusses his attitude towards supporting his open source software and Grails plugins and clarifies what he’d alluded to a few earlier times that I’d seen online. Those included half-demanding that others fix his bugs for him or pay him to fix bugs in his software. Hmmm. Ok.

I haven’t used this author’s software for various reasons, but now I’m committed to avoid it completely. I see an implicit if weak contract between someone who provides software (whether OSS, commercial, or anything in-between) and someone who uses it. We use or buy it because we don’t want to, don’t have the time to, or can’t implement it ourselves. It’s disingenuous and selfish to claim that since you gave it away for free, you have no further obligations unless that’s made explicit from the beginning.

Grails plugins make up the extent of my open source contributions. I have many reasons for creating and releasing them and these include giving back to a community that’s given me a lot for free, and also the warm fuzzy that comes from having people use something you created (and occasionally thanking you for it). Users do complain about bugs, missing features, missing documentation, etc. Some have provided patches that fixed a bug or implement a feature and I greatly appreciate those. But I find it amazing that someone would demand this.

I’ve talked to other Grails users about writing and supporting Grails plugins and I half-jokingly caution them to not release them. It’s work. It’s a product. People will find issues with it. There’s a high probability that your plugin won’t work with a new Grails release. Supporting various Grails versions can be frustrating – there are people using Grails 1.0, 1.1 and even early builds of 1.2, so it takes time to support all of them. But I’ve gotten a lot out of developing these plugins and the benefits have far outweighed the costs.

Another Grails plugin developer who has been rather prolific (although not so much lately) stated with the release of a couple of his plugins that he wouldn’t be doing any further work on them. I’m fine with that – it’s honest. It’s somewhat annoying – support yer damn product 🙂 – but I know what the risks involved are in using those plugins. If one breaks, well, like the old story, I new it was a snake when I picked it up. But software released by someone who acts like they’ll do the right thing but then doesn’t is a snake you can’t see, a turd in a broken free toilet.

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.