The Benefits of Getting Involved in Open Source
Some years ago – Lotusphere 2011 – a meme adorned t-shirts “</bitching><doing>“. That meme comes to mind particularly at this time. The rebuke was valid and, I think, heeded. Certainly for myself, 2011 was the start of my journey into open source, a journey that benefitted me personally and Intec in general – and hopefully has benefitted others in the community too.
Within weeks of Lotusphere 2011 I was becoming part of the team that wrote XPages Extension Library book. At the time, the only resources were the demo database and the source code. So it forced me to not only download the source code, but set up a development environment using it. Looking at the source code increased my exposure to Java. And it’s worth remembering that at that time there was little use of Java in XPages, no Java or JAR design elements, and indeed some bugs with Java code getting removed from the build path. But that exposure increased my confidence, benefitted our customers by allowing me to create custom packages of Extension Library to address edge cases, which were subsequently incorporated into the core when pull requests were accepted for Extension Library.
Within months I had suffered diagnosing and fixing bugs with SSJS in my first significant XPages application. That convinced me to make the leap to Java. I took two weeks off work intending to XPage a relatively basic help application. Because Matt White’s Open Log SSJS script library was not Apache-licensed, I took the step to convert the Java Script Library from the core Open Log project for XPages use. Nathan T Freeman took a second pass at my code and cleaned it up. He also helped me identify the cause of some issues with quirks of recycling. I don’t think it’s wrong to say I wouldn’t have received this support if the project had not been open source. The project also got used in XPages Extension Library book for one of the Dojo controls. Open sourcing on OpenNTF was so easy that I wrote a blog post about it, long before I got involved as a board member. That’s now being backed up with a video and blog post on OpenNTF.
A couple of years later, I extracted the Open Log code into a separate project, XPages OpenLog Logger. This project has been a significant milestone for me and Intec. It’s been used in every application since and has sped up development thanks to catching uncaught exceptions. It’s also given critical experience of plugin development, which has resulted in sessions at conferences and projects for customers. It taught me about use of xsp.properties to add, basically, initialisation parameters. Through feature requests, it’s taught me about Domino functionality I wasn’t aware of. It’s also paved the way for documentation on OpenNTF’s wiki, by taking the release notes and other documentation and moving it to the web.
Most importantly, it gave me something to add to OpenNTF Domino API. That’s a project which I think most effectively backs up that meme of “stop bitching, start doing”. We had a number of people across the community helping out with elements. Even though Rene Winkelmeyer was involved in just one commit, it was the critical one which gave us wrapper classes for all core Domino Java API classes. It’s taught me a massive amount, brought Intec revenue and been a core part of almost every application I’ve built since. But in the early days I was far from certain about what I could bring to the project. I was pushed to do more than just the OpenLog logging, but to also develop standard Java logging. Cross-referencing with XPages Toolbox to work out why the logging levels couldn’t be changed dynamically taught me a great deal about Java in XPages and security restrictions of the Java policy. It’s allowed me to provide powerful live reporting that would otherwise not have been possible. It’s taught me about things like enums, iterators, Domino threads, callbacks, Maven, automated testing, graph databases, adding implicit variables, intelligent conversion of Java classes and methods to SSJS (my understanding is the core IBM code takes a more manual approach), servlets, Websphere Liberty Profile (thanks Daniele Vistalli), Vaadin, the low-level Domino event publisher, DXL-handling, developing XPages components and doubtless much more.
And non-Domino projects like Watson Work Services Java SDK has taught me lots beyond Domino with more about automated testing, JSON-handling and more. This helps me and Intec move beyond just Domino development.
This all means I’m more able to do, in my day job, things that excite me. My development experience is more enjoyable. I have contacts around the world to draw on for experience and offer insight to. It’s obviously brought in work that would not have come otherwise. It’s provided me countless sessions at user groups and Connect-o-spheres. Which has obviously benefitted both myself and Intec. Yes, a lot has been done in my own time. But there have also been changes to ODA and other projects that have been done in work time, because they’ve been required for projects I’ve been working on at that time.
There are plenty of areas to get involved in: not just development, but testing or documentation. Documentation is a great way to get a deeper understanding or more confidence and, as I found with XPages Help Application, people are more than willing to help explain if you’re benefitting the community. The more people actively involved in a project, the better the chances that it will flourish for longer. OpenNTF Domino API has continued as some of the developers have moved away from the project. And I’ve asked in the past for others to get involved in XPages OpenLog Logger, as I welcome involvement in others. There are only so many hours in the day and one of the reasons I share is so I am able to expand myself. I’ve moved into newer areas like Watson Workspace development, and that can only happen if some time is freed up elsewhere. One of those other areas is OpenNTF itself and, as a board member, I’ve tried to get involved in modernising the project methodologies and ensuring we have a vibrant ecosystem of active projects. That’s going to take a lot of work but will help us ensure more projects are ongoing rather than just those I contribute to. I think that’s critical, particularly at this time.
So I would encourage anyone in the community to take any opportunity they can to get involved in open source. I would encourage managers to realise the benefits of their staff getting involved in open source, both for their own professional development, personal effectiveness and the improvement of their output for the company.