real-time collaborative editing technique for source code files. General Terms ... rich flash file that requires more performance from client side and a high ...
International Journal of Computer Applications (0975 – 8887) Volume 96– No.22, June 2014
Building a Web-based IDE from Web 2.0 perspective Zakaria Itahriouan
Noura Aknin
Anouar Abtoy
LIROSA Laboratory, Abdelmalek Essaadi University
LIROSA Laboratory, Abdelmalek Essaadi University
LIROSA Laboratory, Abdelmalek Essaadi University
B.P.2121, Mhanech II, Tetouan, Morocco
B.P.2121, Mhanech II, Tetouan, Morocco
B.P.2222, Mhanech II, Tetouan, Morocco
Kamal Eddine El Kadiri LIROSA Laboratory, Abdelmalek Essaadi University B.P.2121, Mhanech II, Tetouan, Morocco
ABSTRACT The term "Web 2.0" was coined to indicate a set of changes in web applications as they have become more interactive, social and user-centric. These changes were characterized by software migration to the Web creating accordingly more interactive applications. On their part, Integrated Development Environments have turned to the Web taking advantage of many benefits thereby opening very promising prospects for collaboration. Software engineering is a team task where developers need to collaborate and produce pieces of the same software project, resulting in a set of problems in terms of collaboration. Therefore, the implementation of collaboration tools is a pressing necessity. This article presents IDE 2.0, a collaborative tool for software engineering offering features inspired from collaboration on Web 2.0 applications. The tool is also characterized by the real-time collaborative editing technique for source code files.
General Terms Web 2.0, RIA, Software Engineering, IDE
Keywords IDE 2.0, Real-time editing, collaborative IDE
1. INTRODUCTION Software engineering is purely a collaborative task. Developers must work together to build an integral software. Therefore, they adopt varied collaborative approaches that require a major effort on from collaborators part. Integrated Development Environment (IDE) is the interface in which developers work to perform software [1]. In these recent years, these applications have turned to the web and beginning to become more collaborative and central. These changes in IDEs can be explained by the influence of Web 2.0 on all kinds of applications [2]. Members of a developer’s team may work in different places. Thus, they are faced with a lack of communication, collaboration and coordination problems [3]. Developers often use social networks to supplement the lack of collaboration on software engineering tools [4]. Online collaborative development platforms such as SourceForge and Github provide a set of advantages to developers, but the lack of
social aspect in these tools is very outstanding. This requires reconciliation between social networks and web IDE. Collaborative editing systems are real-time Groupware that allows team members to simultaneously edit shared documents from different sites [5]. With the advent of Web 2.0, several projects have started covering the different requirements of users. Google Docs is the most successful real time collaborative editor for office documents. Adopting realtime editing technique by software engineering systems specifically IDEs will provide great added value and will have a large impact on the performance of these systems.
2. WEB 2.0 Web 2.0 describes the upgrade, improvement and modernization of the modern Web. This is a term used broadly to apply it to any explosion of social networking sites and rich interactive applications that are served online, and even for specific programming languages and technology tools that make possible new web. Tim O'Reilly [6] defined Web 2.0 as “Web 2.0 is the business revolution in the computer industry caused by the move to the internet as platform, and an attempt to understand the rules for success on that new platform. Chief among those rules is this: Build applications that harness network effects to get better the more people use them.” Web 2.0 Applications and tools have a major role in its success because they are focused on the user. Intel [7] shows the increasing popularity of Web 2.0 applications and how therefore its use makes machines connected equal to the population of the world. Intel expects that the number of connected machines will be doubled in 2015. Generally web 2.0 applications are:
Blogs. Wikis. Social Networks. Social Bookmarks. Podcasting applications.
Web 2.0 is also related to techniques such as:
Tags. Content syndication. Podcasts. Mashups.
46
International Journal of Computer Applications (0975 – 8887) Volume 96– No.22, June 2014
2.1 Web 2.0 Concepts After the collapse of the internet bubble [8], it was thought to find criteria to differentiate between what is Web 2.0 and what is not. Tim O'Reilly has gathered the following seven principles that describe Web 2.0 [9]:
Web as a Platform. Harnessing Collective Intelligence. Data as the next Intel Inside. End of software release cycle. Lightweight Programming Models. Software above the Level of a Single Device. Rich user experience.
These seven principles can also be divided into basic principles for Web 2.0 development and design principles of Web 2.0 applications.
2.2 Rich Internet Application An important concept of Web 2.0 is "Rich user experience". The traditional mode of web applications has a less sensitive and less effective user interface by reloading the entire web page after any click. Current applications have to be more interactive with a rich user interface. To serve the requirement of this kind of applications named “Rich Internet Applications” (RIA), many different approaches have been created. Marcel Linnenfelser & al. [2] published a work that aims to define a system of qualified criterion for comparing RIA platforms. Evaluated technologies were AJAX, Microsoft Silverlight, Adobe Flex and JavaFX. They claim that AJAX and Adobe Flex are the most dominant and specially AJAX is supported by most popular browsers and does not require the installation of additional plug-ins or Runtimes environments. Adobe Flex technology consists in generating a graphically rich flash file that requires more performance from client side and a high bandwidth, which is the major inconvenience of this technology. This work aims to achieve an interactive web IDE in RIA mode. Interested in benefits in developed AJAX applications, the IDE presented in this paper is developed using this technology combined with PHP as server side scripting language. This choice is also justified by integrating some open source solutions developed by these technologies (CodeMirror, Mobwrite ...).
3. WEB IDE An integrated development environment is a program used by software developers that combines the functions of a text editor with an interpreter or compiler or run-time execution to simplify coding and debugging [1]. It has some important features such as syntax highlighting, automatic editing, automatic code completion, compilation, execution, debugging, access to the database, constructor of graphical user interfaces (GUI builder) and other features that vary from one IDE to another according to technologies offered. Eclipse and NetBeans are examples of most used IDEs in desktop mode.
3.1 IDEs turning to the Web Web applications have the advantage of centralized administration and simplicity of deployment. They also help to collect very detailed observations, enabling rapid identification and repair of problems observed. Versions of Web applications can be evaluated quickly. The advantages of
web-based applications are compelling to create a strong motivation to move from desktops to the web. Traditionally, the biggest inconvenience of web-based applications has been the lack of interactivity in the user interface. In a software engineering domain, this means that IDEs was limited only desktop applications. Web 2.0 applications tend to have advantages of interactivity in the web browser and the mashup of different applications. The way is now open for building completely Web-based applications to be used by developers. Marcel Bruch & al. [10] gave a prediction for what will be IDE 2.0. They presented a general model of an IDE which benefits from the collective intelligence in developing software. The model presented is not a concrete model. They also present an analysis regarding IDE 2.0 according to the basic concepts of Web 2.0.
3.2 Overview for some Web IDEs Web IDEs are applications accessible to all users through a web browser were problems with operating systems are eliminated. They offer better portability and accessibility as no installation or download is required to use its features. They can be used as a programming environment for many people. Therefore, a set of researches has taken this way and have begun developing collaborative IDEs. Cored [11] and Collabode [12] are two collaborative IDEs with real-time editing property for developing Java applications. Each of these IDEs has varying features. Cloud9, Shiftedit and codenvy are an example of paid software as a service to develop projects with collaborators in real time. These are not specified for an exact language and offer a multitude of services, such as shiftedit for example allows synchronization of a software project tree with other services in the cloud such as Google Drive.
4. IDE 2.0 ARCHITECTURE This section presents the technical aspect of IDE 2.0 detailing some open source solutions deployed and some features of web 2.0 tools that were implemented in this work.
4.1 CodeMirror CodeMirror [13] is a polyvalent open source browser-based text editor implemented in JavaScript. It is specialized for editing code, and comes with a number of modes of languages and add-ons that implement more advanced editing features. A rich programming API and CSS themes are available for customizing CodeMirror to realization of applications, and extending it with new features. The decision to integrate CodeMirror as source code editor for IDE 2.0 has been made for several reasons including ease of use, modularity, rich features and developing language modes, rich APIs and technological compatibility with other solutions implemented in IDE 2.0.
4.2 Mobwrite Implementing real-time collaboration on the source code is to implement necessary techniques for synchronization of the content published by users. Differential synchronization is an algorithm specified by adding real time behavior to web pages [14]. It’s a minimalist synchronization mechanism whose design goal is to have a minimal impact on the design of the application. The algorithm of differential synchronization is available under the name of “Google-Mobwrite” [15] built by
47
International Journal of Computer Applications (0975 – 8887) Volume 96– No.22, June 2014 Neil Fraser using the JavaScript language with Python as a server side language.
namely “Phishing”, reuse of passwords on multiple site services and the use of "Post-it" to remember passwords [17].
4.3 Facebook Resources
Therefore, IDE 2.0 users have certainly an existing identity because they already use services offered by Facebook as OP. The use of OpenID in IDE 2.0 allows benefiting from the advantages explained previously on one hand. On the other hand, authentication is required when accessing resources from other applications using APIs. For this reason, IDE 2.0 use the authentication service enabled by Facebook to build on a user's identity for authentication in application presented in this work. Implementation of this mechanism enables implementing OpenID principle to IDE 2.0.
Social network applications host enormous information amount and rich user’s social data (identity, preferences, relationships, affiliation ...). The social network Facebook provides tools, services and SDK for developers [16] who want to integrate social experiences into their applications enabling integration of its properties in many types of applications. An application developed in this work uses Facebook APIs to access personal information of users residing in their profiles on social networks to provide social presence for them in IDE 2.0.
4.4 OpenID OpenID has been developed with the objective of providing a single and light authentication user experience through a variety of online services. The OpenID protocol allows users to subscribe to different services with a unique identifier, where the authentication itself is done by the OpenID Provider (OP). OpenID eliminates the need to create separate user accounts for services, and therefore covers the main issues with authentication based on traditional passwords
5. IDE 2.0 FEATURES 5.1 Interactive interface of IDE 2.0 IDE 2.0 is a code editor impresses by a simple interface for building software projects collaboratively in real time. IDE 2.0 provides a rich and interactive Web interface characterized by the ease of use combining the features referred in an IDE for software development and features that enable collaboration and add a social aspect to the application. The following figure gives an overview of the IDE interface 2.0:
Fig 1: Editing interface of IDE 2.0
5.2 User management User authentication is done using the authentication service offered by the social network Facebook. Users must first have a Facebook account to progress authentication to IDE 2.0. The user's identity is present by their identity on Facebook by
extracting their data (profile picture, name ...) to this application to identify them.
5.3 Project management IDE 2.0 is a tool for managing software development projects that allows for all tasks related to projects specific to the user.
48
International Journal of Computer Applications (0975 – 8887) Volume 96– No.22, June 2014 The user can create a new project, open a project from a list that contains all his projects, he can also delete or rename the project. For each opened project. A management tool for the project tree shows the structure of these files. This tree begins with a root which is the project folder. The tool allows managing files and folders on the whole project tree. A right-click on each component displays a menu that contains its options. Two types of menu are available, the first is specific to the folders and the second is specific to files. Another very useful feature is the ability to move a file or folder using drag-anddrop mode. Developers in software engineering require making tests for their projects continuously while developing any application. An execution button is set up to run the project. This property has a great importance because the developer often needs to see the result of his work. Project execution in IDE 2.0 is currently valid for projects made by PHP, HTML and JavaScript technologies.
5.4 Sharing and collaboration One of the collaboration strength aspects in IDE 2.0 is that it allows the user to share his project with another user in a very simple way. Thereafter explanation of the possible sharing modes:
Sharing with a friend on Facebook: Allows the user to select a collaborator in a simple way from a list that contains all his friends in Facebook. Selected friend receives a notification on Facebook informing him about this sharing. Share by e-mail: send a link to a user's e-mail address. The receiver of the message should follow the link to access immediately to the project that was shared with him. Share on IDE 2.0: enables sharing the project with a collaborator on IDE 2.0. The collaborator will be notified by a message in the internal system of notification with a link that allows access to the shared project.
As a user can share projects with other users, he may also be invited to collaborate with other users on their projects. Therefore, a list of shared projects is available showing all projects of other users that have been shared with him. The list contains projects identified by its name and the name of their owners, these latter must first share their projects with the user for inclusion in this list. A user who is not the owner of a project cannot share it. An essential property of real-time collaboration is that a user needs to know who online people to collaborate on the same project are. For this, a specific area displays a list that contains the photo and the full names of all users who are editing files in the same project allowing a user to be notified if someone start or leave collaboration on this project.
5.5 Real-time collaborative code editing The presence of this property in IDE 2.0 brings new experience to users of this application so that they can edit a development project and see in real time all the changes published in the same project by other developers. Collaborators area can show the list of users who are
collaborating on the same project. This list is updated in real time as well. Syntax highlighting of the file’s content can assist developer in allowing him navigate in the code rather easily. Syntax highlighting is related to the extension of the file that describes the language of the script. IDE 2.0 supports automatically this property. This means that it detects the language of the script and change the syntax highlighting according to that. During the development of a project, the developer always needs to edit multiple files simultaneously. One of the most important properties of IDEs is the support of consolidating multiple editing files in tabs. The user can edit multiple files at the same time and the content of all files is synchronized between collaborators in real-time. Each double-click on a file in the tree adds a new tab in the area. Also each tab contains a button that allows closing file. IDE 2.0 also provides specific options related to code editing such as changing the theme color, saving code to file and reloading the last saved version in the current file.
5.6 Notifications Similarly to notifications that are in some web 2.0 social applications, this property is used to inform the user of any news in real-time. It is used for automating deliverance of specific messages between users offering a way for communication exchange. For example, it is used to inform a user that a friend shared a project with him.
5.7 Social aspect IDE 2.0 harnesses a set of resources from Facebook giving therefore a social aspect to this application. The following table shows how this IDE uses these resources to achieve a set of concepts: Table 1.Social aspect in IDE 2.0 Concept User Authentication Users identity
Sharing projects
Messages exchange
Code commenting
Achievement Redirection to Facebook to validate authentication. Extracting user’s personal data on Facebook to illustrate the presence of the user. Exploitation of friendship on Facebook for helping Users to share its projects easily. Exploitation of Facebook notifications and messages to inform users of any information. Integration of a Facebook comment box for each project allowing collaborators of the same project to add comments below.
Adding the social aspect to IDE 2.0 shows a set of very tangible benefits that makes the experience of using this application very simple and avoids some of the complexities that may be required for the user to perform the tasks described in the previous table. The user then can begin to develop and collaborate with colleagues immediately upon first use of IDE 2.0. By adding these features, the user experiences the feeling of being present, the feeling of being with his co developers, and participates in the interaction of software development. This makes him perceived as real in IDE 2.0, which indicates the
49
International Journal of Computer Applications (0975 – 8887) Volume 96– No.22, June 2014 success of the adoption of this approach to give a social aspect to Web IDEs.
6. CONCLUSION This paper presents IDE 2.0 which is an integrated development environment developed from Web 2.0 perspective. The architecture of this application is modular and allows consequently the development and improvement of this IDE. Adoption of AJAX technology has helped to build an IDE version with a highly interactive interface. Contribution of adding user's social aspect from social network to this IDE then can make collaboration easier and help solving the problems identified in term of the collaboration. The tests applied to this application in terms of collaborative development have shown the results expected and led to give new experience that makes the collaborative software development easier.
7. REFERENCES [1] J. Parab, V. Shelake, R. Kamat et G. Naik, «Integrated Development Environment,» chez Exploring C for Microcontrollers, Springer Netherlands, 2007, pp. 19-28. [2] M. Linnenfelser, S. Weber et J. Rech, «An Overview of and Criteria for the Differentiation and Evaluation of RIA Architectures,» chez Handbook of Research on Web 2.0, 3.0, and X.0: Technologies, Business, and Social Applications, S. Murugesan , Éd., igi-global Inc, 2010, pp. 135-155. [3] P. Bouillon, J. Krinke et S. Lukosch, «Software Engineering Projects in Distant Teaching,» 18th Conference on Software Engineering Education & Training, pp. 147-154, 2005. [4] P. Kamthan, «A Social Web Perspective of Software Engineering Education,» chez Handbook of Research on Web 2.0, 3.0, and X.0, IGI Global, 2010, pp. 472-495. [5] L. Scissors, N. S. Shami, T. Ishihara, S. Rohall et S. Saito, «Real-time collaborative editing behavior in USA and Japanese distributed teams,» Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, p. 1119–1128, 2011. [6] T. O'Reilly, «Web 2.0 Compact Definition: Trying Again,» 2006. [Online]. Available:
IJCATM : www.ijcaonline.org
http://radar.oreilly.com/2006/12/web-20-compactdefinition-tryi.html. [7] «What Happens In An Internet Minute?» intel, 2012. [Online]. Available: http://www.intel.com/content/www/us/en/communicatio ns/internet-minute-infographic.html. [8] P. C. O'Brien, Yao et Tian, «Financial Analysts' Role in the 1996-2000 Internet Bubble» 2006. [Online]. Available: http://papers.ssrn.com/Sol3/papers.cfm?abstract_id=9643 11. [9] T. O’Reilly, «What is Web 2.0: Design Patterns and Business Models for the Next Generation of Software,» 2005. [Online]. Available: http://oreilly.com/web2/archive/what-is-web-20.html. [Accès le 10 04 2013]. [10] M. Bruch, E. BODDEN et M. MONPERRUS, «IDE 2.0: collective intelligence in software development,» Proceedings of the FSE/SDP workshop on Future of software engineering research, pp. 53-58, 11 2010. [11] J. LAUTAMÄKI, A. NIEMINEN et J. KOSKINEN, «CoRED: browser-based Collaborative Real-time Editor for Java web applications,» Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work, pp. 1307-1316, 2012. [12] M. Goldman, L. Greg et R. C. Miller, «Collabode: collaborative coding in the browse,» Proceedings of the 4th international workshop on Cooperative and human aspects of software engineering, pp. 65-68, 05 2011. [13] «codemirror,» [Online]. Available: http://codemirror.net/. [14] N. Fraser, «Differential synchronization» Proceedings of the 9th ACM symposium on Document engineering, pp. 13-20, 2009. [15] «google-Mobwrite,» [Online]. http://code.google.com/p/google-mobwrite/.
Available:
[16] «Facebook APIs,» [Online]. Available: https://developers.facebook.com/docs/reference/apis. [17] M. Uruena & C. Busquiel, «Analysis of a Privacy Vulnerability in the OpenID Authentication» IEEE Multimedia Communications, Services and Security (MCSS 2010), Krakow, Poland, 2010.
50