To the new VTR Administrator,

Thank you for taking up the responsibility of being the administrator for the 
VTR project. The VTR project provides a dependable software baseline from which 
other researchers may use to launch their new FPGA research ideas. For the VTR 
infrastructure to be useful, the many different components necessary to conduct 
architecture experiments must stay compatible with each other.  This responsibility 
falls to you, the VTR administrator.  The rest of this document describes the details of your role.

Developers on the VTR project will look to you for guidance.  So the first thing 
you should do is familiarize yourself with the duties of a normal developer.  
This information is found in the New Developer Tutorial in this folder as well 
as the readme files of the trunk.

The VTR trunk is supposed to represent the most up-to-date, stable, version of 
the software.  However, with many collaborators working together, inevitably 
someone will commit code in such a way that makes the trunk unstable.  
Developers working on the project sync with the trunk regularly so an unstable 
trunk will slow down their work. Hence, it is important to monitor the trunk and 
get whoever breaks it to fix it ASAP.  This is where buildbot comes in handy.  
Whenever anyone commits code, our buildbot setup will automatically compile the 
code then run some regression tests.  Buildbot flags problems and reports who 
made which commit.  The VTR buildbot website is located here: 
http://canucks.eecg.toronto.edu:8080/ It gives you regular updates on the state 
of thet trunk. As the administrator, you should check buildbot regularly (eg. 
once a day in the morning). When the trunk breaks, e-mail the person who broke 
it.  Details of the management of the buildbot system itself should already be 
e-mailed out.

People using VTR will report issues to either the wiki or the e-mail 
vpr@eecg.utoronto.ca. The VTR project wiki is located here: 
https://code.google.com/p/vtr-verilog-to-routing/ You should also add your 
e-mail to the vpr@eecg mailing list.  When an issue gets flagged, you should 
triage the issue to whoever is responsible or reject the issue as invalid.  When 
there is nobody to pass an issue to, unfortunately, the issue falls on you.

How much support you are willing to give other researchers is up to your own 
discretion.  I encourage helping others because it builds a friendly research 
community.  But there will come a time when the support that someone requires 
exceeds what you can reasonably supply.  In such a case, a polite response of 
"I'm sorry, the support that you require is beyond what I can provide" is a good 
diplomatic way to decline providing assistance.

Finally, you are responsible for the maintenance of the wiki and list of 
contributors to the project.

There are benefits being the point man for VTR.  By virtue of having to keep the 
system as a whole working, you will become knowledgeable with every part.  When 
you meet others in conferences, talking about your work is also much easier 
because many have experience with the VTR tools.  Lastly, if you have an 
interest in visiting other universities, some are interested in hearing a talk 
about the latest developments in the tool.


- Jason Luu

Former VTR Administrator







