ScroIDESupervised by      Prof. Dr. Magdy Nagy      Prof. Dr. Noha AdlyScroIDE Team      El-sayed Ahmed El-sayed      ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
SimpleCollaborative Real-time                ScroIDE   Online IntegratedDevelopmentEnvironment       5
Introduction      Pair Programming                         ScroIDE                           6
Introduction (cont.)   A programmer don’t worry about workspace as it is    replicated across multiple servers;          ...
Introduction (cont.)Different between our online Ide and other desktop ides?                                   Begin devel...
What really happens in any   but what if…desktop IDE to begin         This link would open an online IDEdevelopment is to ...
Download IDE & JDK                                Just click run…Install and configure locally                            ...
11     ScroIDE
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Multilingual Support• Mainly JVM-based languages  •   Java  •   Jython  •   Jruby                               ScroIDE  •...
Code Building• Using Ant build tool                         ScroIDE                         14
Code Execution• User’s code should be sandboxed                                    ScroIDE                                ...
Java Debugger                ScroIDE                16
Source Control Management• Using SVNKit API                            ScroIDE                            17
Auto Completion                  ScroIDE                  18
Syntax Highlighting• Each supported language has a CSS file.                                            ScroIDE           ...
Cross Browser and Cross Platform• Cross Browser: using Ext-JS;                                                  ScroIDE• C...
Project Sharing• how real-time is supported without having a facility to share  project between users?                    ...
Chat• discussion of ideas among team members while coding                                                        ScroIDE  ...
Smart Phone Compatible• Android client makes use of WebService                                           ScroIDE          ...
Web Development and Deployment                                 ScroIDE                                 24
Real-time• Real-time Collaborative editing                                             ScroIDE• Real-time Collaborative ev...
Import and Export project• Import existing project.• Export project in fixed file structure to work offline.              ...
Programming Mistake Detector(PMD) • PMD is a static rule set that identifies potential   problems like:   • Possible bugs:...
Save Sessions (File Tabs)• Enable the user to save open tabs for fixed project                                            ...
Other Existing IDEs                MS Visual    NetBeans                                    Code Feature                  ...
Other Existing IDEs (cont.)                 MS Visual    NetBeans                                    Code  Feature        ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Architecture                                     Application                Mobile App                     ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Architecture                                       Application                   Mobile App                ...
Overall System Implementation                                      Application                   Mobile App               ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Code Execution• Java console applications• Java web application• Scripting languages “Scripting API”                      ...
Execution Alternatives• Threads• Processes                         ScroIDE• Multitasking VM                         42
Threads• Execution can not be sandboxed;• Within the same process;• In case of Run time exception from one user the       ...
Processes• Execution can be sandboxed;• In case of run time exception in one process the  system won’t be affected;       ...
Multitasking Virtual Machine MVM• The MVM is a general-purpose virtual machine  for executing multiple applications writte...
Decision• Use processes despites of large start-up time, and memory  footprint• Runtime.getRuntime().exec()               ...
Security (Sandboxing)• Main issues:  • Excessive memory consumption;  • Hacking to the servers files;  • Time limit excisi...
Solutions (Excessive memory consumption)• the problem of very large allocated memory because of large  number of objects c...
Solutions (Filesystem protection)• to prevent hacking to the servers files we may use Java  security model• Java security ...
Solutions (Time limit excision)• And the problem of running indefinitely can be solved by  giving users programs fixed num...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
ScroIDE DebugThe Java Platform Debugger Architecture                                          ScroIDE                     ...
ScroIDE DebugReal Time Debug Events   Output   Navigation                         ScroIDE   Termination                ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Communication Framework:How it works? (cont.)                           ScroIDE                           55
Communication Framework:How it works? Publish/Subscribe Model                           ScroIDE                           56
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Real-time Editing Techniques• Operational Transformation (OT)OT is an algorithm to transform the editing operationto adapt...
Real-time Editing Techniques (cont.)• Differential Synchronization (DS)DS is a symmetrical algorithm employing an unending...
Real-time Editing Software • Differential Synchronization Implementation:Google MobwriteSynchronizations occur every few s...
Real-time Editing Software ChoiceGoogle Mobwrite was chosen because: • Etherpad’s complex stack; • Etherpad’s large footpr...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Web application developmentMethod 1                       Physical server                                         app1www....
Web application development (cont.)          Method 1                        Method 2Faster user response;           Respo...
Web application development (cont.)Supported stacks: • Standard java servlets and JSP;e.g. Standard J2EE, Traspery, Struts...
Web application cloud deploymentWidely used PaaS providers• Google App Engine by Google                                   ...
Web application cloud deployment (cont.)Application deployment steps:1.   The user enters the platform credentials, requir...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
Future Work• Offline Support• Better collaborative editing experience                                            ScroIDE  ...
Future Work (cont.)• Debug support for more languages• More web application stacks support                                ...
Future Work (cont.)• Git SCM support• UML and code generation                            ScroIDE                          ...
Agenda •   Introduction •   ScroIDE Features •   ScroIDE Architecture •   ScroIDE Execution and Security                  ...
74     ScroIDE
ScroIDE Project Dicussion
Upcoming SlideShare
Loading in …5
×

ScroIDE Project Dicussion

659 views

Published on

http://www.scroide.com
ScroIDE Graduation Project:
Simple Collaborative Real-time Online IDE
Team:
Me (Founder & Lead Developer)
Moustafa Ahmed: UX Developer
Mohamed Mahmoud: Core Developer

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
659
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Long process and need to be done at every machine
  • JS-rhino -- js engine written in java, used to run js on JVM as a scriptJython - implementation of the Python programming language written in Java.Jruby - JRuby is a Java implementation of the Ruby programming languagePHP-quarcus --- 100% Java implementation of the PHP languageAs those languages can be sandboxed. Wht not C, C++ ??Since C and C++ doesn’t have security APIs in another meaning I can not make constrains on memory, or Filesystem access, or network access \\gccfred.c to compileOr g++ fred.c “specially for c++” a.out to run
  • What is ant ?Ant is a build tool used mainly for java applicationsWhich used for compile, assemble, test and run Java applications.Using web.xml file which contain target tags like javac, javaScreen shot
  • We support execution for java console applications java web applications scripting languages like groovy, and js-rhino The problem in execution is security so it will be mentioned later.
  • It’s one of the features which makes us unique. How it works mimiWhy it’s simple?UI is very simple desktop IDE look and feel
  • Using SVN kitThat menu represents commands supported
  • To ease coding, by giving the user some suggestionsScreen shot
  • Each word should be colored according to its context SO Each language has a CSS fileScreen shot JavaComments --predefined word like “public”– “hello world”
  • so in other words we need a framework not just a lightweight libraryalternativesjQuery ----------- Doesn't support a sufficient number of widgets.YUI ----------- GWT && Doesn't have a wide community, and don't have a forum just YUI uses Yahoo! Groups “documentation” ExtJS -------------- all needed widgets, wide community, and a forum. Internet Explorer 6+Chrome 6+Firefox 3.6+ (PC, Mac)Cross Platform : it’s independent of user’s computer, only a web browser is needed
  • Generate key and save it, then send it to the user across fixed URL.
  • Because we support a RESTful API, it was easy to implement a mobile client (Android client) Screenshot
  • We are not only supporting Not just console applications eweda
  • Eweda will take about it in detail. All the user who registered in that project should be published.
  • Switching from project to project, without lose open tabs
  • Notes:Cloud9 runs only JS so no buildCodeRun supports only PHP web site as a web developmentCompilr supports only PHP web site and ruby as a web developmentSCM is unique
  • Project sharing, Real time editing
  • Layered arch.Component based architecture
  • MVC Framework-Model (Data Base) Control (controllers) view (User Interface)
  • File ---create, delete,read contentsEdit-- controller for collaboration (editor)
  • Utils- Search, import, export, email utils, encription,compress, decompressDI is an object-oriented programming technique that indicates to a part of a program which other parts it can use,Traditional--hard-code the dependencyFactory----> (still hard-code dependency)DI Split behavior from dependency resolution (to supply an external dependency, or reference, to a software component) (initiate component regardless of component implementation)At runtime, an independent component will load and configure the dependencies, Bind interface with its implementation in only one file that can be easy to changeGuice---small memory footprint, module smaller and easier to read.(Spring DI) it is better to write java module than writing xml config.
  • To components that doesnot support request/response modelServer Adapter--- Determine witch module to use according to server type (Glassfish, Jetty, Tomcat…)Decontinuations----JettyGlassFish----Grizzely
  • This data model was built over the relational database model.The data model is basically composed of five main entity models as follows: User, Project, Tag, EditSession and Breakpoint.Object relational mapping
  • Need to reload common runtime representationsSo that affects start-up time, memory footprint
  • Policy file:Network accessSystem calls
  • Resources, memory and time consumingMoustafaJPDAJdiSUNJVMEVents
  • Why..?Client to server (Ajax)Server to client - Poll - Push (Comet HTML4 / Web Socket HTML5)GlassFish: Grizzly CometJetty : Continuations & WebSocket servletsTomcat: Advanced IOServlet 3.0: Asynchronous Servlets
  • It is implemented on publish/subscribe channel-based to be genericDebugRun ChatBrowser adaptorStream
  • Mobwrite was used with Bespin (the editor of Mozilla Labs)
  • DefinitionsWeb application contextIt is the name under which the URL goes to address that application. e.g. localhost:8080/app1 has a context of /app1Root contextThe context of / which controls the server instance entirely.Method 1:Run the developer’s web application on the same server on which the IDE is running, under separate context nameMethod 2:Run the developer’s web application on its own server instance and subdomain in a separate process and proxy requests to them upon request.
  • DefinitionsWeb application contextIt is the name under which the URL goes to address that application. e.g. localhost:8080/app1 has a context of /app1Root contextThe context of / which controls the server instance entirely.Method 1:Run the developer’s web application on the same server on which the IDE is running, under separate context nameMethod 2:Run the developer’s web application on its own server instance and subdomain in a separate process and proxy requests to them upon request.
  • The second method was chosen as it handles all security issues.
  • A Platform as a Service: is needed for managing the deployment of web applications to the cloud with the required number of instances, memory requirements, service requirements such as MySQL, Redis, MongoDB, RabbitMQ …etcGoogle App Engine:Java, Python, and Go & Google Services & No published API available to integrate with and direct dependency on Google storage reduces flexibilityOpenShift:Java (JBoss), PHP & MySQL, MongoDB & Open Source & OpenShift’s API isn’t released yetCloudFoundryJava, Node.js, Rails, JRuby, Erlang, PHP & Open Source & public REST API
  • Offline SupportWhile offline, the IDE should still provide the basic functionalities of editing, creating, deleting files with syntax highlightingHTML5 Offline Web applications FileSystem API can be used to support the user offline and sync back when the user is back online.Auto-completion support for more languages:Currently, ScroIDE supports auto-completion for Java.Integration of more languagesCurrently, ScroIDE supports Java, Groovy, Jython, JRuby and JavaScript-rhino.Any JVM-based language can be supported by implementing the standard Scripting Engine and Script Engine Factory(e.g.Scheme and Velocity templating can be supported.)Scala support was dropped out because of its large memory footprint and relatively long startup timeC/C++ support was dropped because the only sandbox that can contain C/C++ is a full virtual machine and this is considered a very large overhead penalty.
  • Debug support for more languagesCurrently ScroIDE offers support for debugging pure java-based projects. Languages such as Jython, JRuby and JavaScript-Rhino have existing debuggers. It would be nice to integrate them with ScroIDE’s by implementing the Debug Session interfaceMore web application stacks supportCurrently ScroIDE supports Java Enterprise Edition standard web applications and PHP applications on top of Quercus.More application frameworks can be integrated by extending WebAppExecuter class.More support is needed for scripting languages running on top of the JVM such as the one presented with PHP quercus applications.Such stacks commonly wanted to be supported are:Groovy on grails;Jython on django;JRuby on rails.More cloud deployment optionsCurrently, ScroIDE supports application deployment to cloud foundry PaaS.Platforms that would desired would be Google App Engineby requesting access to their hidden API. Also OpenShift could be supported once the API is releasedMobile applications development support
  • Git SCM supportCurrently SCM supported with SVN; further git support gives the user the choice.UML and code generationAn online HTML5-based UML diagraming functionalities (e.g. class diagrams) would add great value to ScroIDE, especially if it was enhanced with a data-model code generator.
  • ScroIDE Project Dicussion

    1. 1. ScroIDESupervised by  Prof. Dr. Magdy Nagy  Prof. Dr. Noha AdlyScroIDE Team  El-sayed Ahmed El-sayed  Mohammed Mahmoud Mohammed 2  Moustafa Ahmed Anwer  Mostafa Mahmoud Eweda
    2. 2. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 3
    3. 3. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 4
    4. 4. SimpleCollaborative Real-time ScroIDE Online IntegratedDevelopmentEnvironment 5
    5. 5. Introduction Pair Programming ScroIDE 6
    6. 6. Introduction (cont.)  A programmer don’t worry about workspace as it is replicated across multiple servers; ScroIDE  A programmer don’t care about lake of resource on programmer machine. 7
    7. 7. Introduction (cont.)Different between our online Ide and other desktop ides? Begin development ScroIDE 8
    8. 8. What really happens in any but what if…desktop IDE to begin This link would open an online IDEdevelopment is to with a Sample project ScroIDE 9
    9. 9. Download IDE & JDK Just click run…Install and configure locally ScroIDE Build Deploy 10
    10. 10. 11 ScroIDE
    11. 11. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 12
    12. 12. Multilingual Support• Mainly JVM-based languages • Java • Jython • Jruby ScroIDE • JS-rhino • PHP-quercus• Why Not C and C++? 13
    13. 13. Code Building• Using Ant build tool ScroIDE 14
    14. 14. Code Execution• User’s code should be sandboxed ScroIDE 15
    15. 15. Java Debugger ScroIDE 16
    16. 16. Source Control Management• Using SVNKit API ScroIDE 17
    17. 17. Auto Completion ScroIDE 18
    18. 18. Syntax Highlighting• Each supported language has a CSS file. ScroIDE 19
    19. 19. Cross Browser and Cross Platform• Cross Browser: using Ext-JS; ScroIDE• Cross Platform: only a web-browser is needed. 20
    20. 20. Project Sharing• how real-time is supported without having a facility to share project between users? ScroIDE 21
    21. 21. Chat• discussion of ideas among team members while coding ScroIDE 22
    22. 22. Smart Phone Compatible• Android client makes use of WebService ScroIDE 23
    23. 23. Web Development and Deployment ScroIDE 24
    24. 24. Real-time• Real-time Collaborative editing ScroIDE• Real-time Collaborative event handling • Create, Delete, Rename, copy, cut file 25
    25. 25. Import and Export project• Import existing project.• Export project in fixed file structure to work offline. ScroIDE 26
    26. 26. Programming Mistake Detector(PMD) • PMD is a static rule set that identifies potential problems like: • Possible bugs: Empty try/catch/finally/switch/ if blocks; • Dead code: Unused local variables, parameters. ScroIDE • Done at building time 27
    27. 27. Save Sessions (File Tabs)• Enable the user to save open tabs for fixed project ScroIDE 28
    28. 28. Other Existing IDEs MS Visual NetBeans Code Feature Eclipse 3.5 Ideone Compilr Cloud9 ScroIDE Studio 2010 6.9.1 Run SyntaxHighlighting a a a a a a a a Builder a a a X a X X a Executer a a a a X a a a ScroIDE WebDevelopment a a a X a a X aMultilingual a a a a a X a aFile Manager a a a X X a a a Debugger a a a X X X X a Version Control Manager a a a X X X a a 29 Auto- completion a a a X X a X a Cross Browser X X X a a a a a
    29. 29. Other Existing IDEs (cont.) MS Visual NetBeans Code Feature Eclipse 3.5 Ideone Compilr Cloud9 ScroIDE Studio 2010 6.9.1 Run Cross Platform X X X a a a a a Project Sharing X X X X X X a a Chat X X X X X X a a ScroIDEUser manager X X X a a a a aSmart Phone Compatible X X X X X a X a Real-timeCollaborative editing X X X X X X X a Real-timeCollaborative event X X X X X a a a handling Import and Export project a a a X a a a a 30 PMD a a a X X X a aSave Sessions X X X X X X X a
    30. 30. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 31
    31. 31. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    32. 32. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    33. 33. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    34. 34. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    35. 35. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils Utils DI Modules Data File System SCM Model Executer Executer Collaboration Debugger Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    36. 36. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    37. 37. Overall System Architecture Application Mobile App Web Browser MVC Framework ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Utils DI Modules Data File System SCM Model Executer Collaboration Debugger Real-time Communication Framework Server Adapter Comet Web Socket Database
    38. 38. Overall System Implementation Application Mobile App Web IDE MVC Dispatcher JSON Library ControllersFile Edit User Project Session Settings Execute Debug Syntax Helper Components Commons DB DB Entity Façade Classes Classes File System DI Modules SVN Executer JDI Database Access MobWrite (ORM) Real-time Communication Framework GlassFish/ Comet Web Socket Tomcat/Jetty HTML 4 HTML 5 MySQL Database
    39. 39. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 40
    40. 40. Code Execution• Java console applications• Java web application• Scripting languages “Scripting API” ScroIDE 41
    41. 41. Execution Alternatives• Threads• Processes ScroIDE• Multitasking VM 42
    42. 42. Threads• Execution can not be sandboxed;• Within the same process;• In case of Run time exception from one user the ScroIDE whole system will fail. 43
    43. 43. Processes• Execution can be sandboxed;• In case of run time exception in one process the system won’t be affected; ScroIDE• Each process has to load, parse, verify, and create runtime representations (e.g. java.lang.Object);• Application start-up time, memory footprint, and raw execution time are thus negatively impacted. 44
    44. 44. Multitasking Virtual Machine MVM• The MVM is a general-purpose virtual machine for executing multiple applications written in the Java language ScroIDE• It uses the isolation API “JSR 121”• MVM reduces start-up time from 60% to 90%, and Footprint reductions have ranged from a half to a third• Not released yet, just JSR. 45
    45. 45. Decision• Use processes despites of large start-up time, and memory footprint• Runtime.getRuntime().exec() ScroIDE• But how can execution be sandboxed? 46
    46. 46. Security (Sandboxing)• Main issues: • Excessive memory consumption; • Hacking to the servers files; • Time limit excision. ScroIDE 47
    47. 47. Solutions (Excessive memory consumption)• the problem of very large allocated memory because of large number of objects can be solved by terminating such programs that exceed the predefined memory limit and returning OutOfMemoryError exception, by setting the JVM memory arguments: ScroIDE • -Xms: initial java heap size • -Xmx: maximum java heap size • -Xss: the stack size for each thread• E.g. -Xms100M -Xms100M setting the initial and maximum heap size to 100 MB 48
    48. 48. Solutions (Filesystem protection)• to prevent hacking to the servers files we may use Java security model• Java security model uses some kind of files with fixed format called policy file• That policy file contains some permissions like file read and ScroIDE write permissions• -Djava.security.policy== policy file URL 49
    49. 49. Solutions (Time limit excision)• And the problem of running indefinitely can be solved by giving users programs fixed number of seconds to execute, within the JVM before being terminated, by registering a TerminationTask to the user’s process which will be killed after a fixed time. ScroIDE 50
    50. 50. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 51
    51. 51. ScroIDE DebugThe Java Platform Debugger Architecture ScroIDE 52
    52. 52. ScroIDE DebugReal Time Debug Events  Output  Navigation ScroIDE  Termination 53
    53. 53. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 54
    54. 54. Communication Framework:How it works? (cont.) ScroIDE 55
    55. 55. Communication Framework:How it works? Publish/Subscribe Model ScroIDE 56
    56. 56. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 57
    57. 57. Real-time Editing Techniques• Operational Transformation (OT)OT is an algorithm to transform the editing operationto adapt the effects of previously executed concurrentoperations so the document remains consistent. ScroIDE 58
    58. 58. Real-time Editing Techniques (cont.)• Differential Synchronization (DS)DS is a symmetrical algorithm employing an unendingcycle of background difference (diff) and patchoperations. ScroIDE 59
    59. 59. Real-time Editing Software • Differential Synchronization Implementation:Google MobwriteSynchronizations occur every few seconds, with certain frequency. ScroIDE• Operational Transformation Implementation:Etherpad (acquired by Google in 2009)Comet-based stream of events 60
    60. 60. Real-time Editing Software ChoiceGoogle Mobwrite was chosen because: • Etherpad’s complex stack; • Etherpad’s large footprint (memory and processing); • Etherpad’s high dependency on the ACE editor; ScroIDE • Mobwrite’s independence of the editor; • Mobwrite is highly extensible. 61
    61. 61. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 62
    62. 62. Web application developmentMethod 1 Physical server app1www.example.com/app1 app2 ScroIDEMethod 2 Physical server App1 instance app1.example.com App2 instance 64
    63. 63. Web application development (cont.) Method 1 Method 2Faster user response; Response is passed through a proxy delaying the response;Reduced computation More processing overhead ScroIDEoverhead and memory and memory requirements;consumption;The developer doesn’t own The developer owns the rootthe root context (/) of the context of that subdomain;web application;Security issues of: excessive All security issues can be 65memory consumption and addressed using the JVMtime limit excision. security manager.
    64. 64. Web application development (cont.)Supported stacks: • Standard java servlets and JSP;e.g. Standard J2EE, Traspery, Struts, Spring • PHP (on Quercus). ScroIDE 66
    65. 65. Web application cloud deploymentWidely used PaaS providers• Google App Engine by Google ScroIDE• OpenShift by RedHat• Cloud Foundry by VMware 67
    66. 66. Web application cloud deployment (cont.)Application deployment steps:1. The user enters the platform credentials, required number of instances and memory required;2. The application is packaged in .war file;3. The .war file is sent to the platform with number of instances, memory required;4. The platform deploys the application with the specified requirements. 68
    67. 67. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 69
    68. 68. Future Work• Offline Support• Better collaborative editing experience ScroIDE (Operational Transformation)• Auto-completion support for more languages• Integration of more languages 70
    69. 69. Future Work (cont.)• Debug support for more languages• More web application stacks support ScroIDE• More cloud deployment options• Mobile applications development support 71
    70. 70. Future Work (cont.)• Git SCM support• UML and code generation ScroIDE 72
    71. 71. Agenda • Introduction • ScroIDE Features • ScroIDE Architecture • ScroIDE Execution and Security ScroIDE • ScroIDE Debug • Communication Framework • Real Time Collaboration • Web Application Development and Deployment • Future Work • Demo 73
    72. 72. 74 ScroIDE

    ×