ECF/Shared Code Plugin
Project Lead: Marcelo Mayworm
Mentor(s): Scott Lewis, Ken Gilmer
The Shared Code Project is a small set of Eclipse plugins to support dynamic source code search and sharing among a team of Eclipse users. The SCP idea is to provide developers with an easy-to-use interface to search for source code and share source code among developers, which can be leveraged in the applications. Developers can make yours source code on Eclipse Workspace available to a lot of people, adding special metadata into these source code, making way for others developers find easy source code, in ways never possible before. SCP is based in a peer-to-peer communications and file sharing, therefore, the intention is to use the Eclipse Communication Framework (ECF) as base, because ECF provides an open source framework supporting the creation of communications-based applications on the Eclipse platform, using a peer-to-peer network. SCP focuses on the development of tool of collaborative.
- Enable easy-to-user searching of source code across multiple Eclipse workspaces
- Support metadata-based searches using Java annotations and/or Eclipse markers. See here for candidate metadata types.
- Support the delivery and view/presentation of matching source code in response to remote search requests
- Support search restriction based upon source license type, as well as individual and group-level search restrictions
See here more details of how these goals will be achieved.
Project's schedule is in SCP Schedule, you can be well aware of tasks and status about the project.
SCP make a broadcasting search requests from peer A(requestor) to peers N. When peer N1 matches on the search term, it sends the match to Peer A, not all the peers in the group. The messaging model imply in a request/response model. We decided have two channels: one to broadcast requests to peers N, and another to receive responses - only to requestors. The request message should contain a Return Address that indicates where to send the reply message. A simple solution was get ID of the requestor, using method getFromContainerID() in IChannelMessageEvent, and send the response using sendMessage(ID receiver, byte  message), which sends to a particular receiver container. Any peer that wants to respond can simply initiate a direct connection with the requestor. Figure 1 shows the scenario.
If different messages to the same replier require replies to different places, the replier can determine from each request message where to send the reply for that request. A Return Address(ID name) is put in the header of a message because it's not part of the application data(Java files) being transmitted. Each replier needs to deal with several requests, so there is a mechanism Produce/Consumer into each peer, storing each message received in a message queue implementation. Process consumers look at messages inside the queue consuming any of the messages. Figure 2 shows the scenario.
Screenshots were produced from the SCP and placed where it can be easily seen - Screenshots SCP.
All the relevant characteristics of SCP Architecture can be figured out in ScpArchitecture.
This session is a nice place to talk abou ideas and clues with other people about SCP - Talks.