Description
This blog post will describe my entire summer experience with XWiki and Google Summer of Code. The project I worked on this summer was to develop an Interactive Link Visualizer application which provides an engaging way to explore the relationships between all the pages present in an XWiki instance. More details about the project can be found under the Project Page.
Important links to my work
- Design Page (contains the technical aspects of the project developed)
- Project Page (contains description and idea of the project)
- Application download & documentation (contains the published application information and download)
- Source Code (link to the GitHub repository of the project)
- Project progress report (weekly progress report of the project)
- Video demo (a quick 1-minute video showing the working of the application)
What I did, the current state of the project & what's left to do
I implemented everything I mentioned in the proposal. The project remains completed as of now, there is a project progress report where the weekly progress can be tracked.
There are 2 features which are left as they were introduced under the nice to haves category. One is to integrate Page Preview extension and other is to develop to a macro from which users can generate custom visualizations inside XWiki without the need of knowing how SigmaJS and Graphology works.
What code got merged
Since I have the access to the xwiki-contrib GitHub repository, I didn't open pull requests but rather just did direct commits. I did 170+ commits in total, with about 33,000 ++ and 21,000-- lines of code. The complete commit history can be found here.
I also solved 25+ opened Jira issues which can be found here
A few of the commits can be found below:
- Made a set to store lowercase labels in Search in nodes... feature to improve time complexity from O to O(1) (commit link)
- Optimized the method to generate graph nodes (commit link)
- Node size increases & color changes when hovering over it; for better visuals (INTLV-9 commit)
- Create a mathematical formula to stop the graph layout after some time; that depends on nb (INTLV-10 commit)
- Implement a drag-detection method to avoid accidental clicks on the node (INTLV-3 commit)
- Integrate the Solr Search Facets integration in the application (INTLV-13 commit)
- Add a fullscreen button for the visualisation (INTLV-14 commit)
- Add zoom-in & zoom-out buttons (INTLV-15 commit)
- Fixed Search feature should not work on the panel (INTLV-18 commit)
- Kill and clear the previous graph instance to release memory (INTLV-20 commit)
- Move the application to XWiki space & encapsulate code (commit)
- Fixed: JSX Editor gets console error of document returned as null & object not loading properly (INTLV-21 commit)
- Fixed: Visualisation is initialised twice when there in another DOM updated event (INTLV-22 commit)
- Change the mouse cursor to a hand pointer when hovering over a node to give the indication of a link (INTLV-8 commit)
- Increased arrow head size in the edges by implementing a custom customEdgeArrowHeadProgram class (INTLV-5 commit)
- Fixed: Added support for translations of application pages (INTLV-28 commit)
- etc...
Challenges faced
Non-technical challenges
I used to be quite shy, and that's still true. So, at first, I felt really nervous about having video meetings with my mentors. But over time, I started feeling more at ease during these meetings. In fact, I even began looking forward to them. The video meetings with Michael were great; we worked on fixing issues, talked about enhancing the code, and planned tasks for the upcoming week. Occasionally, we'd also chat about different tech topics unrelated to the GSoC project. I genuinely enjoyed the video meetings with all my mentors – Michael, Manuel and Stephane. Every XWiki committer helped me when I needed it. Working here was very cool.
Technical challenges
I also faced quite a few technical challenges; please refer to the design page for the complete details.
Future plans
I intend to implement the 2 nice to have features whenever I find the time and fix issues raised by the community and the end-users.
And ofcourse also to merge the translations from weblate.
About me
Hi! I am Rajat Khanduri. I am 20-years-old, a 3rd year undergraduate student pursuing my bachelors in mechanical engineering at the Panjab University. This was my first time participating in the Google Summer of Code and I got the opportunity to work at XWiki for developing an interactive link visualizer application (as an installable extension). This has likely been the best experience for me in my professional journey so far!