On 05/21/2013 08:10 AM, Ivan Shmakov wrote:
[...]
Curiously, are there any plans to release C6 PGEs as free software?
For sure, I'd feel much better being able to post diffs (and I've
had a few) to Usenet (or mailing lists) than having to keep them for
myself.
Collection 6 versions of the MODIS software are already freely
available at <
https://modaps.nascom.nasa.gov:9500/software/> for
M-API, the SDST Toolkit, PGE01, PGE02, PGE03, and PGE93. That's a
password protected site, you'll first have to set up an account by
registering at <
https://modaps.nascom.nasa.gov:9500>. That's just a
formality - all they need is a faxed copy of the NASA Software Usage
Agreement with your signature on it before they'll let you have the
software.
I'm glad to know that the code will still be available free of
charge, but here, I'm concerned with liberty, not price.
For a now-hobbyist I am, especially inconvenient would be the
section 9.iv of the User Agreement, which reads:
[...] Recipient shall provide a written, semiannual report to
Goddard identifying all further Recipients as required by the
Goddard representative designated hereunder.
Given that it's customary to use a context-bearing diff (either
-c or -u diff(1) options) when publishing patches, it's expected
that the change as published would include a portion of the code
covered by the agreement. And as the agreement effectively
disallows for these portions to be distributed to unidentified
parties, the usual means of patch distribution (as in: putting
one on a public Web site, or posting to a newsgroup) instantly
do not seem appropriate any longer.
Ah - so that's what you meant with your comment about diffs! I'm not a
lawyer; I'm not sure whether your interpretation is correct. However, if
the diffs you want to publish involve corrections to code I'm
responsible for, I'd appreciate it if you would at least send a copy of
them to me, so I can decide whether I want to incorporate them in future
versions. If so, I'll give you proper credit in the check-in comments.
....
BTW, do I understand it correctly that C6 output can be fed into
the later steps of a C5 processing chain? (ISTR that C4 and C5
weren't all that compatible.)
We didn't change the format of any existing feature of the product
files, we just added new features, and improved the calculations used to
determine the actual contents of the files. Since HDF allows you to
access individual components of a file without needing to know or care
about any other components in the same file, I would have given you an
unqualified "Yes" to that question, if it had not been for one bizarre
problem that was brought to my attention. A downstream program checked
to see whether our products had any HDF-EOS dimension maps, and rejected
the product file as invalid if it had any. Well, one of our C6 changes
was to add high-resolution data to the file, which means we needed to
add a dimension map indicating how the high-resolution data was related
spatially to the low-resolution data. The person currently responsible
for that code was a newbie who had no idea what the validity test even
meant, much less why it was being performed. Budget cuts!
I've learned something on this project that would have seemed
counter-intuitive to me when I was fresh out of grad school: don't
perform input validity tests on features of the input that don't
actually matter to your code - all that those tests do is make it more
difficult to reuse your code in a context where those validity tests are
no longer relevant, and such a context will usually come up, sooner or
later.
....
Strangely enough, ISTR that in c. 2009, when I've been reviewing
the changes between the PGEs (as were available from MODAPS back
then) and SeaDAS (one of the latest versions, IIRC), the changes
seemed fairly marginal. And neither I seem to recall any "heavy
modifications" on the SeaDAS side.
I don't pay much attention to SeaDAS; the last two times I checked were
in 2007 and 2010; each time they were running a version of our code that
was more than three years out of date.
Several organizations distribute modified versions of our code; I may be
remembering a different distributor. The modifications I'm thinking
about mainly involved dropping the use of a third-party library that our
code is required to use; they replaced calls to functions in that
library with code intended to serve a similar purpose (except when the
original code did something they had no interest in, in which case they
just commented it out). It looked to me like keeping their version
synchronized with ours would have been a maintenance nightmare, which
would explain why they were 3 years behind us. Had it been my
responsibility, I would have simplified that nightmare by creating an
emulated version of that third party library - but possibly that would
have run into intellectual property rights issues.