Purpose of Roadmap

The purpose of this roadmap document is to define the stages which will be taken to acheive the (project) aims. The roadmap splits the aims into a series of smaller, easier to acheive goals, and sets out a timetable for the acheivment of these goals. If, for any reason, the project falls behind schedule then the roadmap will be updated to reflect this. This does not mean that I'm planning to fail - just being realistic.

But I though Cocoa was modern and made everything fast to develop. Why yes, it probably does. But I am not going to be doing this full time, and am allowing for my lazyness and the fact that I'm going to be learning as I go along. That's why I've planned for this to take almost a year. I hope that I get caught up in this and it all goes a lot faster.

Milestone Targets

The target are shown in a table below. Each target milestone is expained in more detail below.

NumberDescriptionTarget DateRevised DateActual Date
0.0Setup26th Nov 2001N/ACompleted - 26th Nov 2001
0.1User Interface21st Dec 2001N/ACompleted - 15 Dec 2001
0.2Initial Connect31st Jan 2002N/AN/A
0.3View Ony Viewer (Raw)14 March 2002N/AN/A
0.42-Way Viewer (Raw)31st April 2002N/AN/A
0.52-Way Viewer (All)31st May 2002N/AN/A
0.6Server (Raw)31st July 2002N/AN/A
0.7Server (All)31st August 2002N/AN/A
0.8 (1.0)Optimisations/Clean Up31st SeptemberN/AN/A
(1.1)Add VNC ServicesTo Be DecidedN/AN/A
(1.2)Add Apple Script accessabilityTo Be DecidedN/AN/A

What is not shown on this roadmap is the localisation that I hope gets done. This is because I am no fluent enough in any language other than English to provide messages and other program text of a high enough quality. Once the code is stable enough that the messages and language specific text are not changing too much I hope to have the code localised by willing volunteers. (see contibuting)

Milestone Details

The individual milestone descriptions given above are expanded below:

0.0 Setup

This milestone is to setup the basic framework and resources required for this project to get up and running. There are two (linked) parts to this milestone:

  1. Setup login and project on Sourceforge
  2. Setup this website detailing the project, its goals, aims and provide a platform for documentation.

0.1 User Interface

This milestone is to set up the user inteface for the entire program in Apple's Interface Builder and provide some basic glue in Project Builder. It will also implement the user preferences system for the VNC viewer which will be expanded on for the server and any further extensions later on.

0.2 Initial Connect

This milestone is where the real meat of the project will start. Once this milestone is reached Cocoa VNC will be able to connect to a VNC server (on another machine) and negotiate the encoding and so on. It will not be able to display the view of that machine, but will maintain the connection to the remote server. Only the "raw" encoding will be available (as described in 0.3).

0.3 View Only Viewer (Raw)

This milestone is built on top of the basic connection described in 0.2, but displays the desktop from the server in the display window. It will only use the Raw protocol, all others will not be in place. It will be a view-only "Viewer": it will not send mouse movements, clicks or key presses to the server.

0.4 2-Way Viewer (Raw)

This milestone again builds on the one preceding it. This will be the first milestone where the VNC Viewer part of the project is fully usable. It will send mouse movements, clicks and keypresses to the server in addition to the functionality described in 0.3.

0.5 2-Way Viewer (All)

This milstone implements all of the base VNC protocols on top of the Raw protocol. This will be a full VNC Viewer implementation.

0.6 Server (Raw)

In this milestone the basic VNC Server functionality will be implemented over the raw protocol only. This will allow clients on other machines to take control over the Mac OS X machine on which it is running.

0.7 Server (All)

This milestone is (again) just adding all the basic protocols to the server allowing it to use various algorithms for comunicating with the clients.

0.8 Optimisations/Clean Up

Before entry to thie milestone full VNC Server and Client functionality will be in place. This milestone is simply tidying up the code and implementing any optimisations which are apparant. This may mean that we reach the milestone (1.0) described below.

1.0 "Gold" Release

This milestone is the symbolic 1.0 release which normally signafies that the code is of release quality. This, if all goes well, will be the milestone 0.8, but if there are known bugs or faults with this milestone then improvements will have to be made before it is described as 1.0.

1.1 Add VNC Services

This milestone has no planned time as of yet as it will not be started until the main code has reached 1.0. This will add an item to the Mac OS X services menu allowing Cocoa VNC to interact with other Cocoa applications. This will allow the user to select some text and have Cocoa VNC connect to that server.

1.2 Add Apple Script Accessability

This will be started once the services part is complete. This wil add an Apple Script Vocabulary (I think that this is the terminology) to Cocoa VNC allowing it to be controlled from Apple Script.

Current Progress

The progress made against these goals will be noted below.

0.0 Setup - Completed

The sourceforge project has been setup and the website is in place and fully functional. It is even validated by the W3C validation tools (that almost never hapens with my code). Some pages are already a bit long so some work will be ongoing, not only keeping it up to date, but also in reorganising the site as needs be.

0.1 User Interface - Progress

Milestone completed 5 days early. All code uploaded to sourceforge CVS making it publically accessable as required unfer the GPL. Compiled binaries made available to download from sourceforge. Website updated to reflect the completion of this milestone.

0.2 Initial Connect

Work to start soon but likely to be interupted by my snowboarding over the Christmas/New Year period :)