[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: st: Updating user-supplied code / mca example

From   "Nick Cox" <>
To   <>
Subject   RE: st: Updating user-supplied code / mca example
Date   Tue, 7 Oct 2008 18:51:53 +0100

Sergiy Radyakin made several points. I'll respond to some. 

Sergiy #1 ================================= 
Another common situation is:

//------ foo.ado -----
program foo
   version 6.0

   bar something

//------- bar.ado -----------
program bar
    version 6.0

    /* .... */

So if one command (foo) relies on another (bar) and bar gets updated
to say Stata 10, then foo will stop working on Stata 6 and also
require Stata 10. Thus relying on others' code is rather dangerous.

No code writer can protect users from all the silly things they might
do. The executable of Stata 6 won't let you install updates for Stata
10. If users of Stata 6 manually install programs for Stata 10, then
Sergiy is absolutely correct: such programs will not work and will break
any programs that try to use them within Stata 6. He is right, but the
implication is just: Sorry, but that won't work. 

Sergiy #2 ===================================
IMHO, it would be desirable that Stata Corp allows using older
versions of Stata under the more recent licenses either generally or
solely for compatibility testing purposes (by the same user on the
same machine).

Life is short. I doubt that many active programmers spend very much time
testing which versions of Stata something runs on. I usually slap
-version 8- on programs unless there is an obvious compelling reason to
use -version 9- or -version 10- (e.g. use of Mata). My impression is
that such behaviour is widespread and defensible. If anyone is using a
program and I'm wrong, then I will hear about it quickly enough and
there will be a resolution one way or the other. A fix will ensue or the
programmer will have to say: I was wrong; my program requires a later
version. My impression from Statalist is that this kind of problem is in
practice rare and that there is little point worrying about it. 

Sergiy #3 ===================================
Also (IMHO) Version statement must be restricted to declare higher
values than current setting only from the command line, and never from
the .ado program.

What does this mean? Why? Does "must" mean "should"? 

Sergiy #4 ===================================
Note also that some commands do not obey the version setting, like
save in Stata 10. An attempt to merge the dataset coming from Stata 10
with Stata 9 data in Stata 9 will crash Stata (while -use- will simply
issue an error message).

This is another misunderstanding of the form that -version- is, should
or "must" be a time machine. That is not the case. There is a good case
that -merge- should behave more gracefully here, but -save- respecting
-version- would confuse much, much more than the opposite. 


*   For searches and help try:

© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index