SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
In October of 1997, Ray Ozzie, creator of Lotus Notes, began development of Groove. Groove is a peer-to-peer application platform for building and deploying peer-to-peer applications. Because Groove takes care of the underlying connectivity and synchronization issues, developers can concentrate on creating applications in the peer-to-peer space. While the technology under the hood of Groove is cutting-edge and somewhat daunting, the actual process of creating applications is approachable for advanced beginner or intermediate programmers.
The book is organized by first to actually produce and deploy peer-to-peer applications. After exploring the Groove platform. Next, the reader is eased into application development by customizing Groove with a "skin." This exercise will demonstrate how XML and external resources are used in Groove, and will detail a step that the reader will probably want to take for each application developed and deployed.
The first tutorial will begin the creation of a peer-to-peer trivia game application, and will address User Interface (UI), persistence and dissemination issues. This part will require hand-coding of the XML for both understanding and experience. The completion of the second part will result in a working peer-to-peer application, a simple trivia game. Next, we will discuss some advanced topics that deal with administration and database integration. These topics address features provided in the premium version of Groove. Finally, we will include some comments about the future of peer-to-peer and the opportunities it creates for our readers.
Exploring the Groove Application
Introduction.
1. Why Peer-to-Peer?
A Short History.
Dynamic IP Addresses and NAT.
Client/Server Applications.
Peer-to-Peer Versus Client/Server Applications.
A Tour of the Peer-to-Peer Landscape.
Distributed Processing.
Distributed Storage Services.
Distributed Network Services.
Decentralized Collaboration.
Summary.
In the Beginning.
Stealth Mode.
Ease of Use.
What It Is.
Tools.
Mix, Match, and Customize.
Example: Great Schools Now, Inc.
Example: American Wooden Widgets.
How to Think.
Installing Groove.
Creating an Account.
About Identities.
Multiple Devices.
Creating a Shared Space.
Adding Tools.
Deleting a Shared Space.
Inviting Others.
Issuing an Invitation.
Receiving Invitations.
Shared Space Members.
Groove Tools.
Calendar Tool.
Contact Manager.
Discussion Tool.
Files Tool.
Outline Tool.
Pictures Tool.
Notepad Tool.
Sketchpad Tool.
Web Browser.
Summary.
The Model-View-Controller Structure.
The Groove Structure.
The Shared Space.
Groove Platform Services.
Account and Identity Services.
UI Services.
Component Services.
Shared Space Services.
Dynamics Services.
Communications Subsystem.
Storage and XML Services.
Security Manager.
Web Services.
Customer Services Subsystem.
Summary.
XML History.
Standard Generalized Markup Language (SGML).
HTML.
XML.
What XML Is.
An XML Document.
Prolog.
DTD.
Namespaces.
XML Schema.
Background.
Building a Schema.
Groove's Use of XML.
Groove Schemas.
Summary.
The History of OSD.
Microsoft's OSD Specification.
Groove's Use of OSD.
The Groove Manifest.
Writing an OSD File.
The Groove Manifest.
The Model Changes.
ComponentURLProviders.
Groove Assembly Files.
Thinking in OSD.
Summary.
The DevZone.
The GDK.
Development Account.
Supplemental Applications.
Specialized Groove Tools.
The Groove Database Navigator Tool.
The Tool Creator and Groove Tool Publisher Tools.
Registry Files.
EnableScriptDebugging.reg.
EnableCellBorders.reg.
EnableMyTemplates.reg.
The Plan.
Groove Tool Development.
Tool Template Development.
Publishing Your Tool.
Summary.
Groove Skins.
Getting Ready.
Modifying the Images.
Image Editing.
Understanding the Changes.
Changing TransceiverWindowBackground.jpg.
Changing the Look of Buttons.
Sounds.
Publishing a Skin.
Creating the Descriptor File.
Creating the Injector File.
Testing Injection.
The Transceiver Template.
Summary.
Tool Templates.
View Container Components.
UI Components.
Engine Component.
Glue Code Components.
Creating a Tool Template Skeleton.
The ToolTemplate Element.
ComponentGroup Elements.
The Layout.
The Button.
The Engine Component.
The Glue Code.
The Completed Skeleton.
TriviaQuiz1.
Creating the Layout.
The TitleLabel Component.
The QuestionLabel Component.
The AnswerLabel Components.
The Elapsed Time Components.
The NextQuestionButton Component.
The Glue Code.
The Finished Tool.
TriviaQuiz2.
The PropertyList.
Setting the Question and Answer Labels.
Changing Labels.
Elapsed Time.
Handling Multiple Guesses.
The Revised Tool.
TriviaQuiz3.
Initialization Code.
The OnPropertyChanged Function.
Synchronizing Screens.
A Few Tweaks.
Summary.
Preparation.
Writing the Files.
Creating a Tool Descriptor.
Creating Your OSD.
Creating the .GRV.
Testing and Troubleshooting.
Summary.
Tool Creator.
Installation.
Tool Creation.
Tool Modification.
Overlay a Tool.
View Source.
Tool Publisher.
Installation.
Preparation.
Publishing a Tool.
Summary.
The Welcome Screen.
Adding a Layout.
Adding a Graphic.
Adding a Title Element.
Adding Two Buttons.
The Add Questions Screen.
Adding Components.
Adding the DataViewer.
Viewing the Layout.
Changing Screens.
Code for Entering Questions.
The Play Trivia Screen.
Publishing TriviaQuiz.
Taking It to the Web.
Summary.
Data Integration and Groove.
Connectors.
Bots.
Groove Enterprise Integration Server.
Data Integration, Bots, and TriviaQuiz.
Using a Bot with TriviaQuiz.
Summary.
More About OSD.
Managing the Component Tree Structure.
Versioning.
Major and Minor Versions.
Roles and Permissions.
Tool-Level Access Control.
Adding Help.
Subforms.
Using Subforms.
Summary.
The Killer App.
Peer-to-Peer Challenges.
Potential Growth Areas for Peer-to-Peer.
Matchmaking.
Knowledge Portals.
Supply Chain Coordination.
Distributing Clinical Information.
Online Bill Payment.
Document Management.
Real-Time Searching.
Real-Time Collaborative Publishing.
Personalization.
The Microsoft/Groove Partnership.
Features of the Killer App.
Is There a Killer App?
ViewContainer.
HTMLTableLayout.
MultiCellLayout.
XYLayout.
Splitter.
SingleCellViewContainer.
ScriptHost.
GrooveEdit.
GrooveComboBox.
GrooveStatic.
ActiveXWrapper.
GrooveButton.
GrooveImage.
GrooveListBox.
GrooveTabControl.
RecordSetEngine.
GrooveTimer.
GrooveMenu.
GrooveListView.
GrooveTreeView.
GrooveHeader.
StandardDescriptors.
The Internet Web site webopedia.internet.com defines peer-to-peer architecture as "A type of network in which each workstation has equivalent capabilities and responsibilities. This differs from client/server architectures, in which some computers are dedicated to serving the others." But peer-to-peer is much more than a technology; it represents a radical change in how we will soon use our computers. It is, all at once, a revolution, an evolution, and a revision.
It is a revolution because it turns today's current client/server architecture on its ear. Suddenly, we're all producers of information as well as mere consumers.
Peer-to-peer computing is also a cultural revolution. Peer-to-peer technology will fundamentally change the way small groups work and interact over the Internet. By making it easy to find and download music over the Web, Napster not only has shown how fragile intellectual property rights of digital material are, but has probably affected the business model of the major media players, too.
It is an evolution because the current state of software engineering makes possible distributed processing and storage across personal computers, as well as the first attempts to provide an operating system for the Internet.
It is a revision because, in the early days of the Internet, peer-to-peer is how all computers were interconnected. The rise of the Web, with millions of people surfing, engaging in e-commerce, and downloading streaming video, made client/server architecture a really good idea.
Groove is an application that uses the Internet to make direct connections between members of a group. That group can consist of friends, family, co-workers, or any collection of people who want to communicate, solve problems, or work on a common task. Some of the functions of Groove let you talk, chat, send instant messages, draw pictures, share photos and files, play games, and browse the Web with other members of your group. With Groove, you communicate within secure, shared virtual spaces, in real-time, or in different places at different times. In addition, Groove is a platform that allows you to create, deploy, and run your own peer-to-peer applications.
At the time of this writing, Groove runs only on PCs running the Windows operating system. These are the minimum requirements for installing and running Groove:
This book is intended for those who want to develop peer-to-peer applications in Groove. The skills required to develop Groove applications include an understanding of the peer-to-peer paradigm, a working knowledge of extensible Markup Language (XML), familiarity with Open Software Description (OSD), and the ability to understand programming in JavaScript. Only the programming skill will be assumed--this book will help the reader develop the remaining skills. Information on these skills will be presented before Groove tool development is presented. The material is slanted toward intermediate programmers and advanced beginners but should be useful for advanced programmers with little prior knowledge of the peer-to-peer space.
The following 15 chapters give advanced beginner or intermediate programmers all the necessary background needed to understand the peer-to-peer paradigm, the Groove application, Groove architecture, XML, and OSD, as well as the ability to program and deploy an application on the Groove peer-to-peer platform:
If you're ready, let's get started!