Apache Allura is an open source implementation of a software forge, a site that manages source code repositories, bug reports, discussions, and more for projects. Allura is having a well-featured markdown editor. It offers many features such as artifact short-coding with the help of the markdown extensions. Whereas, there was no mechanism to mention other users in a specific artifact or comment. That feature is offered by many modern-type web applications because it is a very useful feature in group discussions.
I was implementing an user mentioning system for Apache Allura during this year’s Google Summer of Code.
Component #1: Markdown extension for detecting user mentions
Allura converts plain text into markdown format using markdown library. I have added a new extension for the library to detect user mentions (Eg:
Component #2: Autocomplete list for user mentions
When user press
@ sign there will be a user list as suggestions.
Component #3: Info tip for user mentions and user links
An info card will be appeared with mouse hover event on user mentions.
Component #4: A function to send a notification for a given user Id and project
User(s) will be notified via email if their user names were mentioned somewhere. Allura has separate task service for handling long running functions. I have implemented a new task to deliver emails when the artifact identifier and content were passed as the parameters.
Component #5: Notification settings graphical user interface
Users will be able to control user notifications preference of course.
All contributions were not submitted via merge requests and those were merged to master via several branches with
ss/ prefix (Eg:
- https://forge-allura.apache.org/p/allura/wiki/Features/ — Updated
- In-app markdown help was updated
Unit tests were added and can be seen in some commits.
You are very lucky if you were selected to Apache Software Foundation for Gsoc because it gives a chance to play with complex and well designed software code bases. Thus, ASF mentors are perfect!. My Gsoc mentor was Dave Brondsema
Happy coding everyone!