It may be advantagious for your application to notice changes to a UFO that were made outside of your application. the Font object can help you with this. This object has a testForExternalChanges() method. This method will compare the data that has been loaded into the font, glyphs, etc. with the data in the UFO on disk. It will report anything that is different from when the UFO was last loaded/saved.
To do this in a relatively effecient way, it stores the modification data and raw text of the UFO file inside the object. When the testForExternalChanges() method is called, the modification date of the UFO file and the stored modification date are compared. A mismatch between these two will trigger a comparison between the raw text in the UFO file and the stored raw text. This helps cut down on a significant number of false positives.
The testForExternalChanges() method will return a dictionary describing what could have changed. You can then reload the data as appropriate. The Font object has a number of reload methods specifically for doing this.
defcon does not automatically search for changes, it is up to the application to determine when the scanning should be performed. The scanning can be an expensive operation, so it is best done at key moments when the user could have done something outside of your application. A good way to do this is to catch the event in which your application/document has been selected after being inactive.
There are a couple of caveats that you should keep in mind: