Sun Shared Shell News

History of Sun Shared Shell

Monday Apr 02, 2007

Sun Shared Shell is a great collaborative tool for remote access to a shell session. Think of it as a multi-user VT100 terminal emulator, where the participants in the conference can be anywhere with a 'net connection and on any Java™-enabled platform. You can find out a lot more about the tool from the first link in this article.

What I'd like to cover today is some of the history that we know about this tool -- a tool I knew little about until about this time last year. I don't proclaim to know everything about its history -- hopefully some of the folks who know more about it will comment on this or track back to this entry. I'm basing this in the publicly available information that has been out on Sun's web sites.

Shared Shell actually started as a research project back in 1998 (or possibly earlier) in the Sun Labs organization. The earliest paper we have access to is the one published by Tang, Yankelovich, and Begole as SharedShell: A shared terminal for collaborative system administration, Network Communities Report, June 1999. In December 2000, it was also presented as a video at the ACM 2000 Conference on Computer Supported Cooperative Work (CSCW),in Philadelphia, PA.

The original version of the application served a dual purpose: one was the diagnostic/collaboration aspect to make life easier for Sun's service engineers. The second was to provide a case study in user interface design for the (then nascent) Java Swing user interface library. By building a non-trivial application with Swing components, it could be used to test the human interface guidelines, swing components, and the accessibility support built in to the Java/Swing platform.

Unfortunately, that version was not widely distributed or evangelized inside or outside Sun, and it was still a research-quality project -- not quite ready for prime time.

Some time in 2003, the Shared Shell project (and codebase, I believe) was adopted by Phil Cornelius, one of the engineers on the Net Connect project. This was followed by a very extensive re-engineering and rewrite of the entire client- and server-side parts of the code by Phil and a team of engineers including Dina Selim, Craig Lindley, Trevor Watson, Richard Yu, and Tong He. The result was a much more reliable and maintainable version of the application that still stayed true to the project's roots: a 100%-pure-java stack, still all Swing-based on the front end. On the networking and server-side, it was rewritten to use parts of the "NILE" framework from the rest of Net Connect, providing the ability to use the proxy and certificate infrastructure already in place at sites that used Net Connect. That version, the 2.x-series, was used at sites and on servers that had Net Connect installed and was well received by the, admittedly limited, user community. You may still find documentation and web pages for this older version of Shared Shell if you search for it today, and we are getting all those links directed over to our new version.

After several decision makers inside Sun Services on the business and engineering sides of the business had seen demonstrations of the app and talked about its potential, the version 4 project was started in late 2006. The major efforts of this new version were to:

  1. Make Shared Shell truly launchable on any platform with a recent Java virtual machine. This was made possible by Java Web Start and the clean pure-java code base we had to start with.
  2. Use Secure Shell (ssh) for accessing servers. Older versions of Shared Shell used telnet for connecting to servers, which is really only moderately secure when connecting to "localhost" (older versions could only telnet to localhost). This was made possible by the excellent JSch library, the same one used in NetBeans, Ant, and N1 SPS.
  3. Use the same logins and passwords that are used throughout sun.com, and differentiate between Sun employees and customers.
  4. Add a new "login" screen where all these options, along with proxy settings, etc. can all be managed in one place. We had a lot of help here by using the Netbeans Matisse GUI builder. I will never, willingly, hand code a GridBag layout ever again after using this tool.
  5. Add some better proxy support and diagnostics, like for SOCKS servers
  6. Move the server-side to its own infrastructure with all the processes and monitoring done with the Solaris 10 SMF facilities.

With all these updates (and more), a whole new team, and a lot of collaboration, we had a release of version 4.0.0 available on March 1, 2007. And there was much rejoicing.

We're not done yet -- there are more enhancements coming for usability, scalability, and reliability in the next few months.

Watch this space for news.

[updated 5-Apr-2007 to include Phil C's name along with the other engineers on the NC version]

[2] Comments
Like this post? del.icio.us | furl | slashdot | technorati | digg
Comments:

I was "one of the engineers on the Net Connect project" and did the redesign of the application and led the team that implemented this new design. I had designed previous Sun remote access tools and wanted to do a pure Java implementation when I discovered the Sun Labs prototype. After discussions with Begole and Yankelovich and a couple years of campaigning I managed to get it on the project schedule.

The server was redesigned by Craig Lindley, Trevor Watson, and myself with the goal of optimizing response time while maintaining the collaborative capabilities and adding plug-in authorization and logging features.

I redesigned the Shared Shell client to use the new server, provide a more maintainable architecture, update the user interface, add file transfer and integrated chat, etc. I also wrote a pure Java vt102 emulator and telnet client to eliminate third-party code and make the application truly portable.

I had a great engineering team on the project: Dina Selim, Richard Yu, and Tong He, with additional help from James 'Bo' Begole of Sun Labs, one of the original prototype designers.

The end result was a tool with none of the original prototype code remaining, but fulfilling the same goals of providing secure, collaborative access to remote systems to facilitate problem diagnosis and resolution, under complete customer control.

Posted by Phil Cornelius on April 05, 2007 at 11:05 AM MDT #

Thanks Phil. We couldn't have done this release without your work and without all the efforts of the people you mentioned, who made Shared Shell what it is today.

Posted by D. J. Hagberg on April 05, 2007 at 02:48 PM MDT #

Post a Comment:
  • HTML Syntax: NOT allowed