1 / 18

ProCol ~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004

ProCol ~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004 CS470 Final Presentation. What is ProCol?. Plugin for the jEdit text editor Facilitates on-line collaboration between developers Small groups (2-10 people) Small to medium sized projects

gharold
Download Presentation

ProCol ~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ProCol ~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004 CS470 Final Presentation

  2. What is ProCol? • Plugin for the jEdit text editor • Facilitates on-line collaboration between developers • Small groups (2-10 people) • Small to medium sized projects • Provides file repository, users are able to check out files • Provides communication and project management functions • Quick and easy to set up and use • Current solutions - CVS, SourceForge, gForge, etc. • Complex to set up • Time-consuming to maintain • Not practical for small projects

  3. Requirements • Not developed for a specific client • Requirements developed by looking at existing solutions • Possible improvements • Past experience • Scope of project was fairly large • Open-ended requirements • Goal: Release usable beta version by end of class • Development continued as an open-source software project (GPL) • Able to be extended by others • Clients for other development environments • Web-based clients

  4. Client Requirements • Compact and simple graphical interface • Able to integrate well with jEdit's user interface • Complex functionality in separate dialog windows • File tree • Indicate checkout status with bold text • Get information about individual files • User list • Windows for file transfer, messaging, etc • Able to be docked • Project snapshot

  5. Server Requirements • Handles multiple simultaneous connections from clients • Uses SSL sockets for security • Information stored on disk in properties files • Readable by the Java Properties class • Do not need separate database • Java uses hash tables for this • Maintain project and user information • Simple configuration files • Store versioning/changelog information for each file • Store communication and project management messages • Automatic file backup • Accidental or malicious deletion/changes

  6. Plugin Interface Options Connect Help Project Info Change Project File Tree Checked-out File Popup Menu Upload file/directory New file/directory Snapshot User List Private Messages Bug List Public Messages Todo List Progress Bar

  7. Connecting to Server Connect Login Join Project

  8. File Management File Info File Check-in

  9. Communication Tools Reading messages Composing a message

  10. Project Management Tools Bug List Posting a New Bug

  11. Docked Windows

  12. Client Architecture GUI Model Dockable Windows Project Message Composers User Misc. Dialogs Messages Sections communicate using Observer/Observable pattern Network ProColClient Communication from Server Communication to Server IncomingMessageHandler OutgoingMessageHandler MessageFactory PacketFactory

  13. Server Architecture Model Projects Users ServerConnection maintains reference to currently opened project ProColServer Network ServerConnection Communication from Client Communication to Client IncomingMessageHandler OutgoingMessageHandler MessageFactory PacketFactory

  14. Network Protocol Data (0 to 2032 bytes) Header (16 bytes) messageID requestType dataRemain dataSize DataSection Packet (2048 bytes max) • Messages are broken into packets of maximum 2048 bytes • 16 byte header followed by optional data section • Allows low priority messages to be interrupted to send high priority message • Less than 1% overhead per packet for full data section • PacketFactory class generates packets to be sent • Data can be drawn from Strings, byte arrays, files, etc • Automatically determines which packet to send next based on priority • MessageFactory class reassembles packets into original messages • Handed off to Observers for handling

  15. What Worked? • Networking • Spent large percentage of time developing networking • Packets and priority queues • Anonymous SSL security • Open, easy protocol, able to be used by other ProCol clients/servers • Dockable windows • Integrate well with jEdit • Able to use as normal window or docked • Store settings in Properties files • Labels, buttons, error messages, etc • Central location for changes, applied throughout program

  16. What Did Not Work? • NIO (New I/O) • Java's new I/O API • Good in theory, bad in implementation • Many problems in Sun's code that I was unable to work around • 2 weeks wasted with troubleshooting and rewriting • Rewrote large portions of networking code to revert back to classic networking • Too many features • Not enough time to implement everything I wanted • All required features implemented, but some are rather basic

  17. Conclusion • Was project successful? • Yes, all requirements satisfied • Proved usable during testing • Interest expressed by jEdit community • Will be released under GPL • May continue development • What did I learn? • Java features – SSL, NIO, Threads, Properties • Implementing design patterns – Observer, MVC, Factory • jEdit – Plugin programming, Beanshell scripting • Apache Ant – automated compiling and packaging

  18. Questions? Justin Dieters Spring 2004 CS470 Final Presentation

More Related