When is it Legal to Reverse Engineer Software?
A not-so Anonymous
Coward asks: "I'm the lead developer of
SciGraphica, an open
source application for scientific graphics that runs under Linux, and is
based on Microcal Origin, the
commercial application for Windows. When we contacted this company,
they let us know that a port for Linux or other operating systems was not in
their plans, and that they were not willing to make their proprietary file format
available. However, we realized that it is in fact easy to reverse engineer to create a
filter that would allow our program to read Origin files. Are we walking
into a case of patent infringement, or this is a legitimate solution? If this is
problematic, is there a way to allow people to legally have access to the
filter?"
Are we walking into a case of patent infringement
Have you searched?
Of course it's legal for a firm to market software that runs on only one platform. You can't require a company to make products for all available markets and users. You can't, in fact, require a business to do business with anyone. What you can do is require that a company not treat equivalent buyers in different ways: if you offer a discount for orders of ketchup by the case, then you have to give all the purchasers the discount. But even that is fuzzy, as defining "equivalent buyers" is pretty much up to the company.
I can't believe that got modded up
Although I am not sure on the legality of the issue, it is common practice to reverse engineer file formats. What concerns me is the act being viewed as stealing raw data from a file. So what I would think that it would be legal to reverse engineer the format, but not steal the data within those files. This would allow you to create your own files based on your data and have the same file format.
**Insert "I Am Not A Lawyer" header**
**Insert open source statement, explaining everything should be free as in beer**
**Insert obligatory anti-Microsoft statement**
**Insert funny sig**
I'm the lead developer of SciGraphica, an open source application for scientific graphics that runs under Linux, and is based on Microcal Origin, the commercial application for Windows. When we contacted this company, they let us know that a port for Linux or other operating systems was not in their plans, and that they were not willing to make their proprietary file format available.
... dumb, but normal ...
... just write your program to use the Origin files as their native file format ... and don't be surprised if the company changes the format to break interoperability ... it's been done before.
... don't go poking around in the binary with a debugger or hex editor. The file format may not be protectable but the code itself damn sure IS.
Normal
However, we realized that it is in fact easy to reverse engineer to create a filter that would allow our program to read Origin files. Are we walking into a case of patent infringement, or this is a legitimate solution?
File formats are not patentable nor are they copyrightable. If they were there would be no interoperability between word processors and WordPerfect would still be the standard for WP software because MS couldn't have wedged into the market without being able to interoperate. Yes, reverse-engineering the file format is perfectly legitimate. Do you think Star Division licensed the MS Office file formats from Microsoft?
If this is problematic, is there a way to allow people to legally have access to the filter?
Filter? What filter
As for giving others access to the "filter" you DID say this was an Open Source app, right? Just GPL whatever solution you create and then give it away. However, make sure that the ONLY thing you examine is the data files
utter rubbish
or call a lawyer well versed in technology and patent law.
I used to work for a small point-of-sale company. We had one programmer who's entire purpose in life was to do data conversions. If the competing company wouldn't open up their file format, he'd tear it apart in order to import our customer's existing data into our own system.
Sometimes it was even simpler: tell the old software to dump a full report to text file, massage with your own tools, then re-import into the new app. :)
I never heard of any legal scuffles as a result. And we'd often release (to customers) small utilities that would do the conversions.
I mean, there's an entire class of software devoted to pulling data from various closed formats. Given the extensive lists of some (I can't recall any names right now), I find it hard to believe they "licensed" the right to read those file formats from every single company.
On a related note, there are 2 apps that I'd love to see on Linux, but only have Windows versions. The first is the Unabridged Oxford English Dictionary 2nd Edition on CD-ROM, and the other is that huge CD-ROM collection from National Geographic that spans from 1888-2000 (or there abouts). Quite a project, to be sure, and I've always wondered myself if I'd catch hell if I ever figured out the DB structures and released the code to the OSS community.
Method of processing duck feet
As long as you can prove that you're working from pure deduction, you should be fine.
Check out this Cringely piece on reverse engineering.
nz
Heinz would, in fact, have some legal standing if they had to rewrite the "ketchup code" for each of the other vendors.
:)
So it's really not the same at all.
(And how the heck can I delete an accidental post anyway? That AC above is me and I need/want the karma points!
Adding a bit more as I wait for 2 minutes...
As for legality, the DMCA would have us believe it's not legal at all, however, I believe that depends on the manner of reverse-engineering. The code itself is apparently off-limits, but I wouldn't think the file-format couldn't be poked and prodded to the same end.
IANAL, ITALITH (Is There A Lawyer In The House) who can refute this?
Please don't take this personally, but the analogy is not only incorrect, but absurd. Yes, it would be perfectly legal for Heinz to only do business with Hot-Dog Bob if they like his hot dog stand better than any others. Would Heinz be shooting themselves in the foot by not providing wider dissemination of their product? Of course.
But that doesn't change the fact that they are allowed to do so. Heinz cannot be forced to sell their ketchup to Hamburger Fred if they decide they don't want to. They don't need any reason other than not wanting to. Why do you think you see computer stores that advertise "Sony/Apple/etc. Authorized Dealer"? It's because those are the stores that the respective company chose they wanted to sell to. Conversely, I cannot just open up a little hole in the wall computer store and force Sony to sell to me.
The only analogy that could make sense for the purpose of your argument would be comparing software distribution to the utility monopolies. Dominion Virginia Power can, unlike Heinz, be forced to sell their electricity to Hamburger Fred's corporate office, presuming he lives in their service area, signs up for an account, has a credit history that passes the minimum requirements and adheres to all the rules of paying on time, not reselling the power without prior license/consent/approval/whatever. But, the difference here is that DVP can only be told to do so because they are Hamburger Fred's one and only option for connecting to the public power grid.
Ketchup, and software, are nothing like that. There is no "natural monopoly" on software. There may be some unnatural obstacles such as patents and illegally aggressive business practices by other companies, but just because ACME Corp. sells a word processor does not prevent JimBob Inc. from selling theirs as well.
Consider the following situation. XYZ Inc. sells graphics software for the Mac OS platform. They're a small company but make a great product that graphic designers and artists on Macs dig. But, they don't have the resources to target multiple platforms right now.
Well, sucks for people not using Macs that may want to use that program. Oh well, there's nothing stopping another company, or even an open source project, from making a similar product for other platforms, except time and money.
So, you say, "Well, I don't have the time or the money, but I really want that software." Well, XYZ Inc. may want you to have the software, too, but they don't have the time or money to do so.
Basically, your position boils down to that you aren't really interested enough in that software to either do it yourself, buy in to the necessary platform or make it financially viable for the company to add the resources to get it to you. You would rather legislate to them that they must cater to your whims of platform, regardless of how thin it will spread their resources.
In fact, in your second paragraph you even go so far as to state that XYZ Inc., if they don't have the resources to provide a Windows version of their software, should "[give] their code to other operating-systems so that they can produce a workable solution." Does that mean that if XYZ Inc. can't afford anything but a Mac version they should just hand over their code to Microsoft (for a Windows port), Palm (a Palm and Be port), IBM (AIX, z/OS, etc.), Sun, HP, SGI, RedHat (or any other Linux distributor -- or should it be Linus, the copyright holder, or FSF the license's creator) and the other dozens of companies and individuals that create or maintain operating systems?
Where do you draw the line with operating systems? What if the current owner of a PDP-11 says they want a port of the software, however infeasible? Is XYZ Inc. forced to either devote their own resources to it or hand the code over to AT&T? What about Mac OS 5? It's a deprecated operating system, but there may be someone out there that still uses it. XYZ Inc. makes a Mac version, but it will almost certainly not work on such an old version. Who are they then forced to hand the code to for the Mac OS 5 port? I'd be willing to bet my next several paychecks that Apple would laugh at the idea.
What about software that doesn't, and simply never will, run on other platforms? I may really want 12" tape reader control software for the embedded operating system in my cell phone, but it's not going to happen. No matter how much I really want to use my old tapes to backup the phone numbers, it is ridiculous to assert that ABC Inc. (fictional company; I don't actually own a 12" tape reader or control software for one) that made the software for the tape reader should be forced to port their software to my cell phone or hand over all their code so that someone else can do it. If they don't want to do so, then it should be their decision.
The real world doesn't work that way. And in a free market society, it should never have to, because we have the choice to either make it financially worth the company's while, find another company with a similar product who does cater to our needs or to try and do it ourselves. But we should not be able to dictate their platform to them through any means other than as consumers who may or may not purchase/use the software. It's a different matter when the platform choice is part of contract development between businesses, but then just about all the rules are different.
Practically no software company could survive if things worked the way you suggested, and we would all be the worse for it.
Microsoft claims they are - they patented the ASF file format, and forced the author of VirtualDub to remove ASF reading support from his program. See http://www.advogato.org/article/101.html.
A quote:
Many licenses forbid you to reverse engineer software. I'm not sure how they get away with or enforce this. Anyway, if that's not in there, you can use the reverse engineered code up to whatever amount is permitted by the fair use doctrine. As for patents, I seriously doubt they bothered but you ought to check just in case.
Now, the problem you MIGHT, run into, is if they decide to change this format with a small "bug fix" patch. They could provide to conversion utility for current users. This patch could simply apply trivial encryption to the files and you would be (legally) powerless to reverse engineer or "crack" it.
Just another reason the DMCA goes way beyond its bounds.
I see nothing wrong in reverse engineering a file format. I've written such tools before. It's done all the time, even by the big guys. Microsoft reads WordPerfect and visa-versa. Used to be Lotus 1-2-3 and Excel could swap files. And look at Sun's StarOffice--reads and writes MS Office file formats. When I was working at NASA, the most popular piece of software we had for Macs and PCs on our Network was MacLink for converting popular Mac formats (like MacWord) to PC formats (like WordStar and WordPerfect; a time before Windows).
"Love is a familiar; Love is a devil: there is no evil angel but Love." --William Shakespeare ('Love's Labors Lost')
That said, this is a classic case for what we call a compulsory license. Because your vendor does not offer software on a particular platform and you can demonstrate a legitimate need to reverse engineer their software just to make your software work, you should be free and clear. Off the top of my head, your right to do this is protected by the Federal case law created in State of Illinois vs. Netscape Communications Corporation, Horowitz vs. Franklin, and Digital Equipment Corporation vs. IBM. These cases are definitely worth citing when you visit your lawyer (or get sued).
~wally
"Just Do It" as nike says it wont really matter and it wont hurt if you dont tell them c'mon now who hasnt copied a micro$oft product and just look at it my way since micro$oft is counted as a monopoly and since monopolies are illegal in the united states micro$oft is really just an illegal company whit no soul or no consideration for the free use of human knowledge which should be free for us all to use.
In Europe, it is, among others, legal as soon as it is for debugging or interoperability purposes, and the only means to do so. Here's the law that says it.
But c'mon, tell us what you really think.
That's why we have the patent system. Duh.
in my opinion, this isn't at all an immoral thing to do. just rewrite the file interaction stuff. in my opinion, this would be more difficult than immoral, because the compiler takes away the comments.
Engineering firms that do Human-Machine Interfaces do tons of reverse engineering.... If the goverment, the bsa, and other groups were to keep egineering firms from reverse engineering stuff... there would be no advacnes in plant control technology, plus in order to improve the systems, everything would have to get replaced, from the programable logic controler in some cases, to the network wireing, and up. Hell, some sapp wouldnt have his nice ORDT software if it wasen't for some acts of reverse engineering.