As with any dev environment, a useful architecture separates code, UI, and data. In Rev, this can mean factoring your code into libraries which are called from your UI stacks, and those UI stacks could be as simple as one stack per stack file so they're easily shared among different members of the team.
You can have up to 50 libraries at runtime, which is usually more than enough for even a highly-factored project. I tend to group related functionality into each library, so that I have one for managing the data store, one for search, another for input validation, another for document handling, etc.
Grouping by functionality also helps with assigning development tasks to team members: the person most familiar with Internet protocols can work on the connectivity library, while someone with a strong usability sense can work on the UI stuff, and someone with a knack for APIs can write the application layer.
This latter, the application layer, is a fairly new pattern I've added to my setup over the last year, addressing a problem with large applications in which new team members were required to learn the APIs of many different libraries to get stuff done. So now this application layer is simply a sort of one-stop-shopping for the business logic of the application: Most UI code only writes to the application layer library, and that library then handles the data store and other lower-level details. This layer keeps a clear separation between the UI and the underlying libraries that drive it, so that I can, for example, change the data store at any time without needing to alter any of the UI code that uses that data, since the data is handled through pairs of get and put accessors in the application layer - I just change the app layer and the UI code comes along for the ride.
I've started migrating my note about design patterns in Rev from a talk Ken Ray and I gave at RevCon West in '06 to a set of articles at RevJournal.com, which will explore some of these ideas in greater detail. But like the rest of my free work that takes a back seat to client needs so it may be another couple weeks before I post those.
In the meantime this article may help you get started using libraries:
Extending the Runtime Revolution Message Path:
An introduction to using Libraries, FrontScripts, BackScripts and Behaviors
in Runtime Revolution's RevTalk Programming Language
http://www.fourthworld.com/embassy/arti ... _path.html
I put my libraries and UI stacks into a folder named "Components"; on Win and Linux this is in the same folder as the application, and on Mac I put this with the executable inside the *.app bundle.
Not only does this setup make it easy to share stacks among developers, but if I have an emergency need to deliver a quick fix to a customer I can just send them the stack file, they drop it in the Components folder, and they get the fix without needing to download and re-install the entire app (not to mention saving me the time it takes to make installers).
For version control, I tend to store version info for each stack file in a custom property of the file's mainstack using the conventions outlined by the ECMI guidelines at the Rev Interoperability Project:
http://tech.groups.yahoo.com/group/revInterop/
The RIP guidelines themselves are described in " ECMI_10.rtf" in the "Files" section, and in "Additional Tools" there you'll find RIPEdit, a handy tool for quickly editing those properties.
Trevor's DataGrid and his framework also use the RIP guidelines for version info, and with a common discoverable place for these things it's a snap to make simple FTP- or CGI-based tools that manage a mirror on a remote site where team members can get the latest builds. And with a relatively simple control file you could add a check-in/check-out to that to minimize the risk of simultaneous editing of a given resource.
I have a pair of tools in the works to handle both check-in/check-out and general RIP-based updates (the latter will be especially useful for IDE plugins), and while they're moving along well enough as with the RevJournal article they're a second priority over some immediate client needs, so I don't have a specific release date for those.
If you'd be interested in beta testing please email me at
ambassador@fourthworld.com and I'll see that you get an early build as soon as they're available.