Appendix E. Contributing to jQuery UI

Believe it or not, the vast majority of work done on jQuery UI (and all other jQuery projects, for that matter) is a volunteer effort. Because of this, and because of the ever-increasing amount of work to do, the jQuery UI project is constantly looking for help from the community.

For whatever reason, when most people decide they want to contribute, they start by heading to the jQuery UI bug tracker and trying to fix bugs. The problem with this is that the vast majority of outstanding bugs aren’t easy to fix. When simple bugs come in, we (the jQuery UI team) fix them immediately. It’s the tricky ones or the ones that have no clear solution that stick around. And as an aspiring contributor, trying to tackle these problems when you’re just getting started is almost always a frustrating experience.

Unless you have a lot of jQuery UI and open source experience, you’re better off contributing in another way in the beginning. But don’t worry; there’s plenty to do! What follows is a list of ways you can help jQuery UI.

Tip

The first place to head when you’re considering contributing to any jQuery project is http://contribute.jquery.org/. The site goes into explicit detail on how to contribute to all aspects of jQuery. The information in this appendix summarizes these guides specifically for the jQuery UI project.

E.1. Help others on the forums, Stack Overflow, and IRC

In my opinion, the best way to start giving back to jQuery UI is by helping others with the library. You can provide support on many venues:

  • jQuery Forum (http://forum.jquery.com/) —jQuery hosts a forum where users can submit questions and provide feedback on all jQuery projects, including jQuery UI. The jQuery UI–specific forum is located at http://forum.jquery.com/using-jquery-ui.
  • Stack Overflow (http://stackoverflow.com/) —Stack Overflow is an extremely popular question-and-answer site that you have likely heard of and used. For questions specifically about jQuery UI, see http://stackoverflow.com/questions/tagged/jquery-ui.
  • #jquery on IRC —jQuery hosts a series of IRC channels on Freenode. The #jquery channel is specifically dedicated for support, aiding people who come to the channel looking for help on using the various jQuery projects. For more information on what IRC and Freenode are, how to join, and how to help, see http://irc.jquery.org/.

These three locations have a lot of people with a lot of questions about jQuery and jQuery UI. The jQuery UI team itself simply can’t deal with this quantity. We need people to step in and help.

Besides the altruistic aspect of helping others, answering questions is a spectacular way to learn and get started contributing to the project. You learn about the problems people are having, and by helping to solve them, you learn a lot about the project.

E.2. Triage bugs

Bug triage refers to the process of reviewing existing and incoming bug tickets and processing them. This means doing a number of things:

  • Making sure the ticket is valid —Lots of people submit jQuery UI bugs, but not all the issues are bugs. Oftentimes people come to the bug tracker when they should be going to support venues such as the forums, Stack Overflow, or #jquery on IRC.
  • Checking for duplicates —When jQuery UI has a bug, it’s not uncommon for multiple people to report it. Detecting duplicate bugs can be a tricky and time-consuming task, but finding duplicates is valuable, as an existing ticket may have a long conversation associated with it, or the project may have already decided not to support a given use case. It’s even possible that the issue has already been fixed, but has yet to make it into a stable release.
  • Creating a reduced test case —People sometimes submit issues with a substantial amount of code, which makes it difficult to track down the underlying problem. Reducing the amount of code needed to reproduce an issue—even by a few lines—can be invaluable for debugging. Oftentimes reducing test cases reveals issues that are unrelated to jQuery UI, such as bugs in the browser or jQuery Core.

As with support, triaging bugs takes time and effort, and is a great way to assist the jQuery UI team. The jQuery UI bug tracker is located at http://bugs.jqueryui.com/. You can create an account and comment on any existing issue. If you find duplicate issues, comment about it. If you can create a better test case, comment with the new test case. If you find an old issue that’s no longer relevant, comment and let us know.

If you create an account on http://bugs.jqueryui.com/, you can also set up email notifications for new tickets and new comments. With the notifications, you can help the project by responding to tickets and questions as they come in—which lessens the load on the core team.

The same as contributing to the jQuery UI support efforts, it can be tremendously valuable to contribute to the jQuery UI triage effort. Triaging is the easiest way to keep track of the day-to-day activities on the project. In the bug tracker you’ll work side by side with the team, because we’re also in there managing tickets. And if you’re looking to eventually contribute code, the bug tracker can teach you how the team’s processes work, and how we address issues as they come in. Over time, you’ll learn how to tackle the issues yourself.

E.3. Write documentation and maintain the websites

Another great way to get involved with jQuery UI is with its documentation. jQuery UI has a lot of code, and it’s important to the project to have comprehensive guides on how to use it. Many people don’t realize that all the jQuery UI documentation is open source and available on GitHub (https://github.com/jquery/api.jqueryui.com). So if you notice a problem with the documentation, you can fix it!

And it’s not just the documentation source code that’s online. All jQuery’s websites are open source and available on GitHub as well. For instance, the code behind http://jqueryui.com is available at https://github.com/jquery/jqueryui.com.

If you’d like to contribute to this process, there’s plenty you can do. To start, you can write new documentation for the API site or fix existing API issues (which you can view at https://github.com/jquery/api.jqueryui.com/issues). If you’re interested in writing, you can author new articles for the jQuery Learning Center (learn.jquery.com). If you’re interested in design, you can help us improve the look of our sites. If you’re interested in UX, we’d love help improving the user experience on http://jqueryui.com and http://api.jqueryui.com. For more details on the specifics, see http://contribute.jquery.org/web-sites/.

E.4. Write code

Last but not least, you can always contribute code to jQuery UI, but I’ll offer one word of warning: if you find an issue with the library, don’t jump directly to submitting a pull request with a fix on GitHub. jQuery UI has a number of processes in place to assure consistency and improve the long-term maintainability of the project. We require the following things:

Don’t let this discourage you. These best practices help maintain the high quality of the jQuery UI codebase, and adhering to them doesn’t require much more effort. Sometimes it’s helpful to look at a list of previous commits to get an idea of how the team does it. You can see the latest commits to jQuery UI at https://github.com/jquery/jquery-ui/commits/master.

If you’re completely unfamiliar with GitHub, http://contribute.jquery.org/commits-and-pull-requests/ is a great place to start as it walks you through all the processes necessary to contribute code to any jQuery project. For more specific information on jQuery UI, such as how to run the unit tests, see its GitHub repository at https://github.com/jquery/jquery-ui.

E.5. Ask for help

If all else fails, feel free to join #jqueryui-dev on IRC and say that you want to help. The jQuery UI team hangs out in that channel, and we can help point you in the right direction. The team also has a weekly meeting in #jquery-meeting if you want to find us all in one place. The meeting is open to anyone, so feel free to lurk in the channel or introduce yourself. For meeting times, as well as meeting notes from previous meetings, see http://meetings.jquery.org.

My own journey with jQuery UI

I started in jQuery UI when a previous employer switched to using jQuery UI from a another UI library (which I won’t name), and I instantly fell in love. The ease of performing complex tasks made the library a joy to work with.

Eventually, I wanted to do more. Learning and playing with jQuery and jQuery UI became my fun side project I worked on at home. I created a Stack Overflow account and started answering jQuery UI questions. (My username is tj-vantoll, if you’re curious.) As I learned more about the library, I decided I wanted to try to contribute code.

I found the bug tracker and tried to fix a few bugs, but I mostly failed. But I did start commenting on the tickets. Even if I couldn’t fix the bug, I’d comment on what I thought the problem was. I’d reduce the test case to show the least amount of code needed to recreate the problem. I did this a lot. And as I gained confidence and experience, I started to do more. Along with some other team members, we methodically went through each ticket open in the bug tracker. We found hundreds of bugs that were either duplicates or no longer relevant.

In the process, I found bugs that I could fix. I had learned the processes and had met a few of the team members. My first code contribution to jQuery UI was a patch to fix resizable dialogs in Opera 11; it was included in version 1.8.18. As I learned more about the code, I could tackle harder problems, such as complex bugs and new features.

My experience with jQuery UI has been invaluable. I’ve met many awesome people and traveled to amazing places. Seeing how the jQuery UI team works, and coding alongside them, made me a far better developer. Doors that were previously closed have opened. I’ve even had the opportunity to write a book!

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.31.67