Abstract. Description



Similar documents
An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0

Art of Code Front-end Web Development Training Program

Adding Panoramas to Google Maps Using Ajax

From Desktop to Browser Platform: Office Application Suite with Ajax

Electronic Ticket and Check-in System for Indico Conferences

Framework as a master tool in modern web development

Software Requirements Specification For Real Estate Web Site

AJAX: Highly Interactive Web Applications. Jason Giglio.

Term Paper. P r o f. D r. E d u a r d H e i n d l. H o c h s c h u l e F u r t w a n g e n U n i v e r s i t y. P r e s e n t e d T o :

Chapter 12: Advanced topic Web 2.0

Web 2.0 Technology Overview. Lecture 8 GSL Peru 2014

PROJECT MANAGEMENT SYSTEM

Lucy Zhang UI Developer Contact:

Title: Front-end Web Design, Back-end Development, & Graphic Design Levi Gable Web Design Seattle WA

Developing Cross-platform Mobile and Web Apps

A Model of the Operation of The Model-View- Controller Pattern in a Rails-Based Web Server

Example. Represent this as XML

Smartphone Application Development using HTML5-based Cross- Platform Framework

XML Processing and Web Services. Chapter 17

Ulyxes automatic deformation monitoring system

HTML5. Turn this page to see Quick Guide of CTTC

University of Phoenix - Prior Learning Assessment - Corporate Articulation BODWELL COLLEGE. Credit Recommendation Guide (CRG)

dustin caruso JavaScript / WordPress / UI developer 1230 Parkside Drive South, Reading, PA, USA dustin@dustincaruso.com

Students who successfully complete the Health Science Informatics major will be able to:

Performance Testing for Ajax Applications

Front-End Performance Testing and Optimization

YouTrack MPS case study

Performance Testing Web 2.0

General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support

Client Side Binding of Dynamic Drop Downs

Web-JISIS Reference Manual

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Copyright 2013 Splunk Inc. Introducing Splunk 6

Power Tools for Pivotal Tracker

Proposal Submission System - A Content Management System Approach for Proposal Submission

CAKEPHP & EXTJS - RESPONSIVE WEB TECHNOLOGIES

Up and Running with LabVIEW Web Services

Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence

Pentesting Web Frameworks (preview of next year's SEC642 update)

Executive Summary. For my VBA project I developed a Product Management Dashboard for a local software as a

Developing Microsoft SharePoint Server 2013 Core Solutions

Learning Web App Development

4PSA DNS Manager Translator's Manual

Credits: Some of the slides are based on material adapted from

Web Development using PHP (WD_PHP) Duration 1.5 months

J j enterpririse. Oracle Application Express 3. Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX

Server-Side Scripting and Web Development. By Susan L. Miertschin

Minnesota Report Card. A Mobile Friendly Platform for Disseminating School Performance Data. Digital Government: Government to Citizen

Drupal Performance Tuning

Pizza SEO: Effective Web. Effective Web Audit. Effective Web Audit. Copyright Pizza SEO Ltd.

COURSE CONTENT FOR WINTER TRAINING ON Web Development using PHP & MySql

Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON

Development and Implementation of Location Based Native Mobile Application

Data Visualization in Ext Js 3.4

International Journal of Engineering Technology, Management and Applied Sciences. November 2014, Volume 2 Issue 6, ISSN

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Progressive Enhancement With GQuery and GWT. Ray Cromwell

Java/J2EE or Web Developer. Formal Education. Technical knowledge. Spoken Languages

Integrating REST with RIA-Bus for Efficient Communication and Modularity in Rich Internet Applications

Maximizer CRM 12 Winter 2012 Feature Guide

Experimenting in the domain of RIA's and Web 2.0

38 Essential Website Redesign Terms You Need to Know

Mobile Web Design with HTML5, CSS3, JavaScript and JQuery Mobile Training BSP-2256 Length: 5 days Price: $ 2,895.00

OPACs' Users' Interface Do They Need Any Improvements? Discussion on Tools, Technology, and Methodology

Web Development News, Tips and Tutorials

FormAPI, AJAX and Node.js

Welcome to Collage (Draft v0.1)

Implementing Mobile Thin client Architecture For Enterprise Application

Rich-Internet Anwendungen auf Basis von ColdFusion und Ajax

Equipment Room Database and Web-Based Inventory Management

Operational Decision Manager Worklight Integration

Ajax: A New Approach to Web Applications

Installing and Sending with DocuSign for NetSuite v2.2

Dr. Z. A. Usmani, Mohsin,Diksha,Husainali,AbdulKadir Page 15

Why AJAX? Keywords - Web applications, Java Script, Web INTRODUCTION. Why Not AJAX? 111 P a g e

Vincent Gabriel. Summary. Experience. Senior Software Developer at Landmark Network

Bazaarvoice SEO implementation guide

Preface. Motivation for this Book

ONLINE SCHEDULING FOR THE PRIVATE CLINIC "OUR DOCTOR" BASED ON WEB 2.0 TECHNOLOGIES

Web Testing. Main Concepts of Web Testing. Software Quality Assurance Telerik Software Academy

design coding monitoring deployment Java Web Framework for the Efficient Development of Enterprise Web Applications

Advantage of Jquery: T his file is downloaded from

RFID Based 3D Indoor Navigation System Integrated with Smart Phones

Topics in Website Testing. [Reading assignment: Chapter 14, pp ]

Programming in HTML5 with JavaScript and CSS3

MBARI Deep Sea Guide: Designing a web interface that represents information about the Monterey Bay deep-sea world.

Modern Web Development From Angle Brackets to Web Sockets

Easy configuration of NETCONF devices

JavaScript and jquery for Data Analysis and Visualization

Google Web Toolkit. Progetto di Applicazioni Software a.a. 2011/12. Massimo Mecella

Course Information Course Number: IWT 1229 Course Name: Web Development and Design Foundation

Transcription:

Project title: Bloodhound: Dynamic client-side autocompletion features for the Apache Bloodhound ticket system Name: Sifa Sensay Student e-mail: sifasensay@gmail.com Student Major: Software Engineering Student Degree: Undergraduate Student Graduation: July 2015 Organization: Apache Software Foundation Abstract Apache Bloodhound is a software development collaboration tool recently released on the market. Bloodhound extends Trac with multiple projects management, powerful search functionality, ease of installation and a userfriendly interface. It reduces the effort of tracking projects by providing a clean interface to connect revision control with wiki content and a bug database. Autocompletion of ticket fields would be a great feature for the Bloodhound, as it saves user s search time, catch a user s mistake and allows repeating a favorite search. Typing the whole search word makes finding information slower and requires more typing and also increases the chance of misspelling that leads to incorrect search results which degrades the interface usability. Description Autocompletion features can be divided into three components for this project; autocompletion of keywords, autocompletion of usernames and search for duplicate tickets. Each of these components has a link to a plugin in track-hacks, called KeywordSuggestPlugin, AutocompleteUsersPlugin and DuplicateTicketSearchPlugin respectively. However, we don't want to clutter the Bloodhound project with another plugin for basic features. Therefore, each of these features can be added to the BloodhoundThemePlugin as an individual component. This will work well since the client-side functionality (i.e. the JavaScript parts) can be added directly in each individual feature and the server-side request handling can also be handled in individual components within the BloodhoundThemePlugin. Moreover, the user will able to enable/disable each feature since they are implemented individually into the BloodhoundThemePlugin. 1

Implementation Details The implementation of the project can be splitted into three distinct parts, the keyword and user suggestion components, and duplicate ticket search component. The keyword suggestion component of the project will suggest entries that are used in existing tickets while user suggestion component will autocomplete the Owner and Cc fields from a list of valid users. Detecting left mouse button press in the search field will be sufficient to display suggested keywords in an alphabetical list that the user can scroll through. Instead of an alphabetical order, popularity of entries (i.e. frequency of keywords) would be used to order the suggested keywords and also matching would not be case sensitive to give more flexibility to the user in typing. This would be implemented simply by converting the user s entry to lowercase letter before looking for suggestions. Detecting left mouse button press would be implemented in JQuery by mousedown() function. For instance, $('#mousedown').mousedown(function(){ //list keywords in an alphabetical order }); would be an example of how the detecting left mouse button press code will look like. Popularity of entries would be implemented by storing the keywords and their frequencies in a table in the database. In more detail, we will create a table in the database with all possible suggestions (and will create another table for all possible usernames), all starts with zero frequency and then when user searches for a keyword/username, we will increase the frequency of that specific word in the database. We will suggest keywords/usernames in an alphabetical order, until we have useful frequency results. The keyword and user suggestion component of the project will be coded using jquery (JavaScript library). Since most of Bloodhound s design is done using the Twitter Bootstrap framework, the autocompletion part of the code can also be designed using Twitter Bootstrap Typeahead plugin. Suggestions can be stored into the source array and can be retrieved on page load. However, this is really inefficient when there are thousands of keywords/usernames since user needs to wait for a long time for the page to 2

be displayed. Alternative solution to this would be storing the suggestions in dynamically retrieved server-side (i.e. database), which will provide faster and more efficient results. More advanced approach would be using the dynamically retrieved server-side with a JSON format (JavaScript Object Notation) for human-readable data interchange between client and server. Using dynamically retrieved server-side for retrieving the suggestions will be faster. However, there will be some latency in retrieving the possible keywords/usernames. In order to overcome the latency, AJAX (Asynchronous JavaScript And XML) would be used to leave client active while the server retrieves the keywords/usernames. The duplicate ticket search component of the project will assist the user to search for the duplicate tickets when entering a new ticket s summary. One of the possible solution would be determining the duplicates by searching the summary of existing tickets whereas searching the ticket description would be better and powerful solution. The duplicate ticket search part of the project will be coded using jquery and AJAX. Since most of Bloodhound s design has been done using the Twitter Bootstrap framework, this part of the code can also be designed using Twitter Bootstrap. First, the duplicate search feature will be implemented to work with the Trac Search API then it will be manipulated to work with the BloodhoundSearchPlugin since it is much more powerful than Trac Search API. However, the ticket Query API would be another solution to implement duplicate search feature rather than interacting with Search components. The ticket Query API has support for searching ticket summaries and descriptions that contain words and phrases. Using TicketQuery wiki macro which listing tickets that match certain criteria would be a better solution to duplicate ticket search, since we want to present the duplicate tickets to the user as a list according to ticket ID next to the summary, with each ticket on a separate line. This ticket presentation is one of the format parameters that determine how the list of tickets is presented in TicketQuery wiki macro. On the other hand, we would need the server to do the work of rendering the macro for us. If there is a macro that gives (or can be made to give) the results in the form that we require, that could be an interesting shortcut but just requesting the data we require should also work. Additionally, there are going to be a number of areas of the code that deal with tickets including the base implementation from trac and the modifications added by bloodhound. We are going to interact with these through the various 3

interfaces that are available in trac, like IRequestHandler (for handling web requests), ITemplateProvider, IRequestFilter and others. Initially, we will start to implement the project with bloodhound without the BloodhoundMultiproduct, since it causes complication, after that support for Multiproduct might be added. Overall, this project will provide faster search facility to users whereas decrease the chance of misspelling. In other words, it will improve the usability and the core functionality of the Apache Bloodhound. This project would also be a start point for my contribution to the Bloodhound application. Deliverables Keyword Suggest Component Autocomplete Users Component Duplicate Ticket Search Component Unit tests for the three main components Documentation Timeframe May 19 June 8 June 8 July 8 July 3 Implement the Keyword Suggest Component for BloodhoundThemePlugin. Implement the Autocomplete Users Component for BloodhoundThemePlugin. Research the Trac ticket Query API Midterm Evaluation July 8 August 8 Implement the duplicate ticket feature to work with the ticket Query API Add support for the multiproduct API 4

August 8 August 16 Refactor code, finish test and documentation August 18 Final Evaluation Bio I am a third year Software Engineering student at the University of Sheffield. During my education, I have gained practical and analytical skills on Computer Science fields including various programming languages, such as, Java, Python, HTML, CSS, JavaScript and others. In the past few years I have been developing web applications both in my leisure time as well as part of my coursework and summer internship. Last year, I participated in Personalised Access to Cultural Heritage Spaces (PATHS) EU Project, which is a web-based software that provides users with an interactive and more personalized experience of using digital library collections. It was a great experience and I believe that developing dynamic client-side autocompletion features for the Apache Bloodhound ticket system would give me the opportunity to gain more experience on developing user interactive web applications. Looking forward to a great Summer of Code! 5