Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

refactorator writes "We have a lift-off! The NASA Ames Research Center has open sourced Java PathFinder, a JVM that is an explicit state software model checker, all written in Java. For the first time, the complete master development site of a live NASA software engineering project is hosted on SourceForge. Read the official press release for details. The team around John Penix, Willem Visser, and Peter Mehlitz fought long and hard to get the development hosted outside of NASA, to enable true collaborative software development. Now show the government that it works - join the fray. May Java PathFinder boldly go where no NASA program has gone before." (Both Slashdot and SourceForge are part of VA Software.)

The bigger question for me is if the open source software is used and fails then where does the accountability lie? consider the stress that would be required for anything NASA does, and consider the results of even slight errors. now imagine the sort of bugs that crop up in other open source projects... this could be bad.

As I understand it, this is just a tool to track down potential errors in the software. It is not mission critical software, but rather a tool to analyze mission critical software. I doubt that NASA is too concerned that someone will mess it up beyond belief. They've probably got a review process in place to ensure that any new features are properly checked before they go into use at NASA.

What I find interesting, is that this move seems to signal that NASA is looking at using Java in mission critical areas. (Not just data analysis as in the Mars rovers.) Could it be that NASA is finally giving up on Ada and embracing the safety, reliability, and simplicity of Java? If so, it would certainly be a huge culteral shift for them.

NASA never really embraced Ada. A LOT of software at NASA is done in C or special languages. A great deal of Space Station is Ada but it's not 100%. Java in Mission Critical systems is something NASA is thinking about but they move slow. When I was at the IV&V center there was some talk about Java and how NASA didn't really have the skills to evaluate/manage/budget Java development and that was an area for improvement to prepare for the future. IF there ever is a MissionToMars I'd expect a great deal of Java code. I've not looked in depth for Java for hard real-time systems is not something that is commonly done. I see a few tools out there that are first generation so someone is thinking about it but I have no feedback on how good it is compared to C code.

"Could it be that NASA is finally giving up on Ada and embracing the safety, reliability, and simplicity of Java?"

BWHAHAHAHAHA!!!

Oh, man. I needed a good laugh today.

Aside from the compulsory Slashdot Java FUD, it's really not a joke. Java has a big advantage in that the the bytes codes produced can be verified, and so the program tested, without any concerns of the final deployment platform. This is a major advantage for an organisation like NASA which most likely has a wide range of hardware on which software is deployed.

NASA knows explicitly what the final deployment platform will look like, from hardware up to OS and available software binaries. It's part of the all-encompassing and overwhelming specification process used when creating a new government (well, NASA/military) project.

For what NASA is doing, what they need is a language that is well-understood (Ada most definitely is), and Java doesn't fall into th

For what NASA is doing, what they need is a language that is well-understood (Ada most definitely is), and Java doesn't fall into that category yet...C++, maybe, but not Java.

Sure it does. Once you get down to the embedded development level, it's far easier to plan for capacity and availability. Programmers do it all the time for MIDP cell phone programs. The difficulties you are considering have to do with Desktop applications which use an unpredictable amount of resources.

NASA knows explicitly what the final deployment platform will look like, from hardware up to OS and available software binaries. It's part of the all-encompassing and overwhelming specification process used when creating a new government (well, NASA/military) project.

NASA has a huge range of deployment platforms, and not all are of military grade hardware/embedded. There are matters of security systems etc.

Aside from the compulsory Slashdot Java FUD, it's really not a joke. Java has a big advantage in that the the bytes codes produced can be verified, and so the program tested, without any concerns of the final deployment platform. This is a major advantage for an organisation like NASA which most likely has a wide range of hardware on which software is deployed.

Which is nice, but when it comes to serious mission critical software where faults can't be tolerated Ada has some advantages. Call me when Java h

Which is nice, but when it comes to serious mission critical software where faults can't be tolerated Ada has some advantages.
Call me when Java has anything equivalent to SPARK for validating code.

Work on this has started. Here is an example:https://www.hija.info/"High Integrity Java".

Much of the technology for this is already in place. For example, the Hotspot optimiser for Java already does bounds prediction of some variables in order to eliminate the need for time-consuming range checks in code su

That's nice to know. I wasn't meaning to diss Java - I think it's a nice language. I was more interested in the fact that it's (relatively speaking) a young language and doesn't have all the tools and additions available for it that something with a long history in high integrity software like Ada does.

I do expect Java to get there soon. That's for the reference, it looks like they were closer than I had previously thought.

You might take a look at ESC/Java [compaq.com], which provides "extended static checking" for annotated programs. It's similar in concept to SPARK/Ada, although I'm not sure how well they compare in terms of features.

1. Most of the "management" apps are written by people who are not experts in the Java language, thus tend to fubar it pretty well. This is changing, but slowly.

2. Sun is aware of the remote X issues. This is something they are being slow about addressing, but I believe 1.5 should show a marked performance improvement.

3. P2P programs tend to eat a lot of system resources during operation. This doesn't have so much to do with Java as in the way they are designed.

4. The majority of "good" Java software is outside of the area of Desktop applications. Desktop is still an underdeveloped area for Java.

5. Java programs will always take more resources on a mainstream machine. This is due to the fact that the JVM replicates a lot of the functionality of the OS. In instances where the JVM *is* the OS (e.g. embedded development) the difference in resources is insignificant.

Here are a few examples of Java Desktop programs that do their job extremely well:

I find the idea of attributing liability inane.Finding the cause is all-important, because you want to prevent recurrence of disaster, and that's what the extra eyes are for, but as for liability, I expect it's like someone already posted; the final word goes to the people at NASA that launch the sucker, they have to do final validation tests.

The bigger question for me is if the open source software is used and fails then where does the accountability lie?

If I contract you to build me a widget and it fails it is your fault. I am not responsible for your third party errors. You should have tested the software to the contracted standards and I should receive a quality statement signoff from your engineering department. That is of course if you are building a system that requires quality. If you are building a s

Then don't tell anyone where you work "hey, this project is neat, we can use it for free and it will work!" because when it doesn't, YOU will be the one at fault.

It's simple really. If Company X uses open source software with its disclaimer of liability and something goes wrong, its nobody's fault but X's. If Company X goes with Microsoft software with its disclaimer of liability, its still nobody's fault but X's.

While it'd be interesting to see if liability disclaimers hold up in court, I'd rather it b

Aah I see the problem. I was thinking "fault" in terms of the open-source programmers getting in trouble if NASA used some of their code and the spaceship went *boom*. Of course NASA are the ones that are responsible, I thought the original post was asking about the coders being responsible.

Most modern spacecraft software can be changed remotely. The Mars Exploration Rovers, for example, have had their software upgraded several times for a variety of purposes - fault tolerance, better pathfinding routines, etc.

The bigger question for me is if the open source software is used and fails then where does the accountability lie

With NASA, for not validating/testing a solution enough, just as it would be my responsibility if I implemented a half-assed piece of software into a corporate environment without adequate testing. If NASA went down to the hardware store and bought a garden hose valve for a rocket fuel tank, slapped it on the night of a launch and it failed and sent a rocket into the drink- would you blame the garden hose valve maker? Course not. We like to point fingers all the time at things other than our decision-making process.

I help volunteer for a car club which teaches high performance driving at various racetracks. A lot of stuff becomes Really Important when you're driving close to the limits of your talent and the vehicle's equipment. Stuff does go wrong, although it's statistically very rare for there to be an incident caused by mechanical failure. Much of the time, it's driver error.

For example, a wheel falls off. The driver says "I crashed because my wheel fell off." No. The driver crashed because the driver forgot to check lug bolt torque, and the wheel came off because the torque on the lug bolts wasn't correct. A more complex example: "I crashed because my brakes failed". No. The driver crashed because the lap before he crashed, the driver didn't realize his brake pedal was getting really spongy- or worse, he did realize it, and didn't do anything about it (ie, he didn't pit in and bleed the brakes because he wanted to stay out on track).

If the code is open source, that means ANYBODY can work on it, improve it, or find and squash bugs. If one person makes a mistake somebody else will correct it, If somebody tries to do something harmful to the code. *several* other people will instantly remove the malware.

Just because anybody CAN work on code and deal with bugs, doesn't mean anybody WILL. There is no evidence that bugs in any given OS projects are 'instantly' removed.

This app spiders through all routes of an app through the bytecode. Not only will this become a very stable and usable debugging application, but the applications that borrow from this application are endless with possibilities. For NASA to OS an app, this was probably the best choice!

Years ago (1980s) NASA used to have a repository called COSMIC that contained lots of code. It was mostly FORTRAN code for mathematical modeling or simulation of things like aerodyamics or heat transfer or stresses. A lot of it came from the Apollo program and some from Shuttle. When I did simulations for DOD systems we'd look there for code to reuse before we did our own as we felt if NASA was using it then it was verified and pretty tight in execution time.

The availability of this tool does wonders for Java. I'd like to know the reasons behind NASA's decision to use Java for this kind of development in the first place, but having this tool available as a testing resource could be enough reason alone to choose Java for a wide variety of new projects.

Generally, I'm pretty anti-Java. I hate working in it myself and I've partially structured my career so as to avoid it.

Why do I hate it? It is a language that builds in bureaucracy, making you say everything three or four times, static this, static that, hard-coded the other, if there's a fun or useful feature it's not there ("generics" are about 5 years too late and from my reading still amazingly weak compared to most other languages, and that's just one of the fun features I have in mind) after programming in a language like Python or Ruby it's like programming with handcuffs and concrete galoshes, complete with the sinking feelings the latter can cause and subsequent project death.

(We didn't used to need IDEs that did half to three-quarters of your typing for you (and I mean keyboard typing), and most languages still manage to live without it. That says something. (I'm also somewhat amazed at the Java community's ability both to have strong namespaces like org.slashdot.something.web, and still name classes with 40 or 50 characters, like WebPageToMirrorDeciderBooleanHelperInterface.))

But there are times that is called for, and NASA development epitomizes that. My personal feeling is that it is called for far, far, far less often than conventional wisdom says it is, but the call is certainly not zero.

All those features I'm bitching about missing above, including but not limited to things like closures, any sort of continuation support, metaclasses, "duck" typing like Python or Ruby, support for "eval"ing strings as if they were source code (which I've used precisely once in the last five years; I'm not saying this is something that should be used a lot), all kinds of things like that, are bad for an state checker, as it really complicates the space and makes it hard to tell what will happen when without actually running the code, which for various reasons is also not a practical solution to state checking.

There may be slightly better languages (ada?), but all in all Java is a good choice for NASA, for the very reasons that I hate it.

Oh, I see... it's just the language you hate, but you love the VM, the bytecodes, and the APIs?

We didn't used to need IDEs that did half to three-quarters of your typing for you...

And you still don't need those things for Java. I have a very stubborn friend who insts on developing in a text editor named TextPad and compiling using Ant on the command line. I started with notepad and the javac commandline, but quickly adfopted an IDE when I saw it would same me time and effort.

Doesn't our government exist to serve the general public? Why aren't more government software development projects open source? Why was it such a battle to make this particular application open source?

Don't get me wrong, this is a great feat by NASA-Ames, but it's something I already expect as a taxpayer...

Just because we pay for it, doesn't mean we're entitled to open access to it. There are countless guys in-between who decide how our money is spent, and what we can and can't directly reap the benefits of.

Sort of like how when I went to Area 51, they wouldn't let me in. Bastards.

Just because we pay for it, doesn't mean we're entitled to open access to it.

Just because we pay for it, doesn't mean we're not entitled to open access to it.

The automatic assumption that public servants have the right to restrict information from the public is wrong. Some countries have freedom-of-information laws where, by default, information is open, not closed, and public servants must give specific reasons, such as military security or privacy, why the public is not entitled to access.

I actually agree with you. My tone (which I guess didn't communicate well) was that of stating the status quo of how things tend to be these days, not so much stating my opinion of how things should be.

The Area 51 comment (while also entirely true) was meant to be a hint to my true feelings on the matter... heh.

The rich I'm talking about are the.1% with the highest income per year, you're talking about the rich as in people who own property. Apples and oranges.

Here's a quiz : You have $1, I have $10. The next year, you have $10 and I have $100. Are you worse off than you were a year ago? Why not? Income disparity between us has grown tenfold. But it means NOTHING, you're still ten times better off than you were.

How about this question : Would you rather be a king 100 years ago or a lower middle class Am

"Here's a quiz : You have $1, I have $10. The next year, you have $10 and I have $100. Are you worse off than you were a year ago? Why not? Income disparity between us has grown tenfold. But it means NOTHING, you're still ten times better off than you were."

Only if you live in a universe where there is an infinitate amount of money. I live in a universe where there is not an infiniate amount of anything, not even atoms or subatomic particles.

You're right, if you assume that wealth cannot be created, only redistributed.

But if I create something (a program, a piece of art, whatever) and someone buys it for $100, did I take anything away from someone else? The buyer now has a picture that's worth $100. How did I turn paint and canvas worth $2 into a painting worth $100 without taking $98 away from someone?

Economics is not a zero-sum game. A person getting rich doesn't mean that someone else becomes equally poor. In fact that person getti

"But if I create something (a program, a piece of art, whatever) and someone buys it for $100, did I take anything away from someone else?"

YEs, you used up natural resources which took something away from everybody. Even if you created something of exceedingly low impact like a program. You used a computer, electricity, food, and water. You needed a house or an office, a car to get around, clothes to wear, heating and cooling etc.

Income redistribution stifles innovation. Why should I work hard if you're going to take it away from me and give to 'the needy' (where needy is defined merely by someone who has less than 'average.')

If you redistributed income once - taking all of the money and resources away from the rich and poor and equitably distributed to each one, within ten years most of the people who were rich originally would be rich again. This is because so

Income distribution from the rich to the poor is a relatively new invention of mankind. Throught almost all of our history the rich always got richer. The more money you had, the more power you had the easier it was to gather more money and power. Eventually everything in a country was owned by the king or a handful of famillies. What usually followed was a revolution in which the rich were killed and the cycle started over again.

Of course you can see this going on all over the workd right now. There are

We were talking about paying for what your are given by the government as a seperate legal entity.

That's just it, the government gives us NOTHING. We have rights, that are inherent to us as human beings that government cannot take away. We don't have those rights granted by our government, our government has rights granted to it by "We, the people".

I worked under a programmer as part of a government contract and he said "everything we code is public domain, b/c we work for the govt." There are/were a few different classes of private contractors ones that worked on site and those that didn't. We worked on site and were often introduced as "government" to off-site contractors. But still I would think that the govt. could retain rights(ownership) to the code (and this would seem to support that).
It'd be nice if the government open sourced all code i

Thats what I say too, but don't even bother trying to get your senator to help paint your house.. It turns out they only serve the general public in a very narrow sense, and they wont help even if you pay for the beer.

> Why aren't more government software development projects open source? Why was it such a battle to> make this particular application open source?

A lot of it is.. it's just hard to find. Fermilab, for example, has many many projects that are freely downloadable and include source. I'd imagine that many other research labs have similar capabilities, just none of it really scratches an itch anyone has, so it never gets airtime.

The general public is the government. Some will help everything move forward for the sake of everything going forward, and some will move things forward only if it makes them better then everyone else.

There are two purposes to be served by making a project open source. First and foremost, you allow outsider to participate in its development, which speeds development and gives the original authors a source of free peer review. Second, and rather less important, it allows outsiders to download and use the software.

I think that neither purpose would be served by OSing most government softwares. Consider that most of them are probably uninteresting programs that provide IS support for that huge bureaucracy

Read up on the Bayh-Dole Act [google.com]. In the US at least, inventions created using government funds (either grants or contracts) by default are owned and administered by the grantee or contractor, not the government. I laugh when people talk about the drug companies "stealing" government funded university research because the universities are the most agressive people out there patenting research and trying to hit drug companies up for big bucks to license the patents. Work done by actual government employees can certainly be patented, but obviously in that case the patent is owned by the government. Work done by government employees can NOT be copyrighted, which can lead to problems when trying to get government involved in GPL'd projects. NASA has a lot of contractors that that are still looked on as "NASA", so I don't know whether these guys are government or contractors.

This can change things a lot. If the goverment sees open source work, imagine how many more projects(non security of course. Hell will freeze before those will be OS) will be opened up? Also, what about these OS authers? Do you think job offers might ever come to people? Is there a possibility that these Open Source Projects can change the way the Goverment operates?What happenes if this project fails? Then what? OS will seem to be a failure then, and that would not be a good thing, at all.

World Wind ( http://worldwind.arc.nasa.gov/index.html [nasa.gov] )is also open source. I think there are other NASA open source projects as well. This definitely isn't NASA's first venture into open source, although it may be their first project release on SourceForge.

Also of interest is the software these NASA people use. Most of the stuff seems to be done on Macs, but it's nice to see the one Windows machine (this [nasa.gov]) using Firefox and Thunderbird (the latter visible in the taskbar area).

I worked (as a consultant) on this team. Development was done in Eclipse on Windows, using (x)emacs, ant, etc and/or eclipse on Linux and Solaris, using Apple's IDE on Mac. Basically the developers used whatever they were effective with, that's one nice part about using a cross-platform language.

There is some disagreement about that. This issue was raised on/. a while back and I had some exchanges with someone who said the problem is solvable with certain constraints but not in general. I do know there are several software firms doing work with DOD research money in this area. I have asked some friends at NASA IV&V to take a look at this tool and see how good it is or if it's just a prototype. NASA is bad about doing prototypes that just tease you and then never getting the full project done d

The halting problem basically says that you can't write a program that will determine whether or not any arbitrary program will halt. It doesn't say that you cannot determine the halting properties of a specific program or class of programs. Java Pathfinder works. Model-checking in general works, and has been used for many years in many applications. Examples of model-checkers that have seen fairly wide use include (off the top of my head) SPIN, SMV, FDR, TLC, and Verisoft.

Recently, several large corporations, which (apart from other things) develop
commercial software, released a number of projects on sourceforge.net. Among them were:
Microsoft (3 projects [ostg.com]),
Google (4 projects [google.com]), IBM
(30 projects [sourceforge.net]),
Adobe (1 project [sourceforge.net]).
The reasons they gave for such move
are often somewhat "foggy". My personal opinion is that it finally became
"cool" to have a project on sourceforge.net, which is great of course.

I've checked out the license (link [sourceforge.net]), and it for the most part mirrors the GPL, with the addition of a clause which grants patent rights. However, 2.F provides this following gem:

F. In an effort to track usage and maintain accurate records of theSubject Software, each Recipient, upon receipt of the SubjectSoftware, is requested to register with Government Agency by visitingthe following website: http://opensource.arc.nasa.gov. Recipient'sname and personal information shall be used for statistical purposesonly. Once a Recipient makes a Modification available, it is requestedthat the Recipient inform Government Agency at the web site providedabove how to access the Modification.

Note that I am not doubting that this is indeed Free Software, as it follows the four freedoms [gnu.org]:

The freedom to run the program, for any purpose

The freedom to study how the program works, and adapt it to your needs. Access to the source code is a precondition for this.

The freedom to redistribute copies so you can help your neighbor.

The freedom to improve the program, and release your improvements to the public, so that the whole community benefits. Access to the source code is a precondition for this.

From what I can tell, this is definitely a true Free Software license. However, you have to register with an agency of the United States government in order to muck with the code. Some may have a problem with this, be forewarned.

Open source may be a "sunset" project this Silicon Valley branch of NASA because that site is to be
decimated [fcw.com] and perhaps closed.

Ames mainly performs long term R&D in space and areonautical sciences. There is an opinion in the adminstration that the federal government should not be conducting R&D internally, but outsourcing it to universities, companies, and think tanks. This is pretty much the model in the biological sciences.

Funny to see this code; I was just pinging the developers of C Global Surveyor [nasa.gov] (a vaguely similar tool that operates on C/C++ code instead of Java) to see if I could get access to their work. I didn't get a reply, but hopefully Java Pathfinder will give them the cover they need...seriously, CGS looks absolutely brilliant.

That's not precisely true according what I read in the US Code [cornell.edu]. Work done by federal employees certainly can not be copyrighted, but work done by others can be assigned to the federal government. Of course the specifics of who did this work and whether it qualifies as a work of the government (ie how DID they get around this) are something I would like to see clearly explained

Sorry to deillusion you, but in this case the only benefits will be PR and, maybe HR, nothing too technical, specially not "to enable true collaborative software development" which, in this case, just can't happen.

This software, even if it is not directly involved with something launched to space (it's a code validator) it is still a political issue (as anything related to the space race) and that means there can't be "real" collaborative s

No: every code will have to be scrutinized by NASA people and then, if accepted, checked in to the *real* source code repository well protected within NASA facilities so, for practical purpouses, the public repo will be a "read only" one.

Nonsense, many OSS projects have benevolent dictators vetting every patch. NASA is no different.

"True collaboration" is all about mutual confidence, and this cannot be grown at a NASA project, no matter SF or not.

You'd think that NASA would figure out that virtually any nerd would give his left leg to work on a spaceship. This could probably lead to things like, "Free Software Testing" and "Free Software Programming" for them if they were paying attention.

If you could get into Mars Probe source code, and debug it, would you?

The real question is, since most of this is tax dollar supported, why isn't more of it openly available to the public? I realize that releasing specs on nuclear warheads might pose a problem, but the code on say, the mars probes or some other innocuous project would probably be nice to see. And after all, we paid for it.

I'm not suggesting they'd take our changes and use them, I'm just saying a lot more non-sensitive code could be made public. NASA is, after all, suffering from a lack of public interest

NASA's big decade was the 60s. They were doing amazing things and were the darlings of the US and much of the world. Even those that thought space research was useless still saw some side-benefit from the space research (eg. supposedly non-stick fry pans).

Now NASA has a far less glowing image. So we see another probe every now and then. We see an archaic shuttle. By releasing software, NASA is potentially creating more positive press again. Even those people who think space reasearch is stupid might say "He