111 Comments
- geminitojanus, on 10/12/2007, -5/+65What they're describing is really just a redesign of Wine; instead of having the source code for the program and manually linking against WineLibs (for porting a Win32 program to Linux, for example), this system simply forcefully relinks an already built application to their library (LibAlky).
What they forgot to mention is that you can already DO this with Wine, and with Wine approacing 1.0, virtually an entire copy of Win32 is available and at your disposal. What this project should do is focus their relinker on WineLibs instead of once again reinventing the whole API, which would increase the performance of Wine on some applications (because the Wine server won't have to run to dynamically translate function calls). - shuffle, on 10/12/2007, -1/+42Bootcamp does not render emulation obsolete... I'd love to be able to run Windows binaries along side my mac stuff - you know, in the same environment, accessing the same data - without rebooting into a whole seperate OS.
- merreborn, on 10/12/2007, -3/+35This is a really nutty and difficult idea. There are a bunch of trouble spots:
1) Calls to propreitary hardware and instruction sets. Altivec on the mac, BIOS on the PC.
2) Calls to OS libraries. This guy seriously thinks he can take an arbitrary OS call, and translate it into calls for two other completely different OSes? Their APIs are completely different, and full of quirks. And what about things that rely on special OS services? Those services obviously won't be running on a mac or linux box.
3) Drivers drivers drivers.
Is it theoretically possible? Yeah. Is it really, really, really hard? Hell yes. - inactive, on 10/12/2007, -6/+38Why's he talking about this five year plan? Is this some communist trickery!?
- RyeBrye, on 10/12/2007, -4/+36In 5 years you will have forgotten about it. Kind of like how 10 years ago we were going to have fiber optic going to our houses in 10 years.
- deepsub, on 10/12/2007, -2/+26http://darwine.opendarwin.org/
- dobesov, on 10/12/2007, -13/+33Wait! wait... what if you ran a copy of XP through this theoretical program... Then you could run windows, but still feel good that you are running linux! ...Its a joke, dont kill me...
- daeken, on 10/12/2007, -0/+17lpcustom:
I'm the Cody Brocious mentioned in the article, and I think the one thing you're missing is that we're focused on games, not general applications. (Not that we won't support normal applications in the future, as they do play into my goal for the next 5 years.) Games use a very, very small subset of API calls, unlike general applications. Although I believe that with the way development on Alky is done that we can meet the goal of having damn near every application working within 5 years, I don't kid myself as to the work involved. It is a huge undertaking, and I'm fine with that. Something needs to drive change. - shakin, on 10/12/2007, -2/+17Boot Camp is nothing more than a wizard to guide newbies through the steps to setup a dual boot computer, which Linux users have been doing for more than 15 years.
Alky will be a winner if it works. I'm skeptical that it will be more successful than Wine. - binaryloop, on 10/12/2007, -1/+16by that line of reasoning... if humans were meant to fly we'd have been born with wings.
- keeperofkeys, on 10/12/2007, -0/+11well, I'm English, so I'd put a 'U' in there
- barbobot, on 10/12/2007, -1/+12If it could be done , it would be done? burn those witches at the stake!
Seriously whenever I hear someone say this my brain implodes and Einstein cries. - khyberkitsune, on 10/12/2007, -1/+11This is to the programmer of this application.
Games DO NOT USE A SMALL SUBSET OF API CALLS. At least, that's in the Windows world. If games only used a small subset of API calls, it'd be a very limited game. First off, about 98% of the DirectX API is used for even a game as 'simple' (as it could be called compared to today's games) as Quake 2. Next, you've gotta run all that through the OS if you use Direct3D for your hardware acceleration, which involves even more API calls. If you use OpenGL, then you've gotta run it through it's specific set of calls and hooks.
'Normal' apps use FAR less API hooks and calls than games (with the odd exception for the occasional video chat program, like Camfrog, or other programs that constantly encrypt stuff, like Skype.) - daeken, on 10/12/2007, -1/+11@lpcustom:
Our conversion layer is already 100% done for OS X, and getting there for Linux. All (as if that's small...) that needs to be done now is implementing the Win32 APIs.
So why again is this not possible?
(Not saying it's practical, just possible) - strictnein, on 10/12/2007, -2/+12Interesting idea... but doesn't the future seem to trending more towards virtualization? Microsoft, among others, is throwing billions of dollars at the idea.
- RyeBrye, on 10/12/2007, -0/+9I guess the other reason he is saying in 5 years is because he is going to use Duke Nukem Forever as the first app that he demonstrates translating?
- aoe2bug, on 10/12/2007, -4/+13Atleast this guys making an effort. Jeez way to be a pessimist.
- Jakelshark, on 10/12/2007, -1/+10Heres the CVS of the code, http://alkyproject.com/svn/alkyproject/trunk/
looks like hes busy working on the kernel and a few other small things, and thats about all the progress done - ahhell, on 10/12/2007, -0/+6Oh yeah? How did that work out for them?
- lpcustom, on 10/12/2007, -1/+7They'll just digg you down for telling them the truth khyberkitsune. I've been arguing with em for about an hour now.
Look people...If I make a website and say I'm building a car that'll fly to the moon at 28000 mph and gets 2000 mpg. Would you tell me I'm crazy and it can't be done or would you say you want to help?
Cause I believe my magic car is more possible than what Cody thinks he can do. - lane.montgomery, on 10/12/2007, -1/+7Ipcustom, your logic is flawless, oh wait...
"If it could be done, it probably would have been done by now."
Do I really need to explain to anyone why this statement is wrong? - cius, on 10/12/2007, -6/+11"Is it theoretically possible? Yeah. Is it really, really, really hard? Hell yes."
The question is, is it NP-complete? Even if it were, that wouldn't make it not worth pursuing. Ever tried to find an algorithm to give the minimum dominating set of an arbitrary graph? That's NP-complete. The difficulty of finding a solution to any hard problem is offset by the value of its solution. If I could spend a day or so alkylizing Steam and Counter Strike Source in order to play it full speed under Ubuntu, I'd do it. So, if his project can make this possible, I say its worth it.
Also, maybe I understood this wrong, but some people seem to compare this to Wine and he clearly explains the differences. If I understand Wine properly, it implements the NT 4.0 libraries and dynamically translates calls to them into *nix calls at runtime. The original Win32 binary is untouched. What this guy is going to do, is actually create a new *nix binary that implements the exact same functionality as the win32 binary. His alkylib implements only those specialty system calls that aren't available on *nix systems. So he's not trying to dynamically link to new calls or translating at runtime, he's actually translating the entire binary at once into a functionally identical binary. Once that binary is translated, its *nix native, or OS native more precisely. - RadiantBeing, on 10/12/2007, -9/+14It's like commercial fusion power, the technology that is forever 20 years away. But fiber did roll out in my neighborhood last month so maybe there's some hope.
- daeken, on 10/12/2007, -1/+6How do you figure that I don't understand how wine or binaries work?
I've worked with wine quite a bit, and I wrote an entire binary translation layer from Windows PE to Mac's Mach-O. I think you're mistaken. - Ilyanep, on 10/12/2007, -2/+7"Is it theoretically possible? Yeah. Is it really, really, really hard? Hell yes."
Yeah but imagine how much money this guy could make later with a "premium version" or tech support or something. - daeken, on 10/12/2007, -1/+5No we don't. We simply copy the segments from their files as they are into the Mac/Linux binary. This requires no reverse-engineering whatsoever.
- stoanhart, on 10/12/2007, -0/+4@daeken
Is that all, huh? Well then I can definately see how you are not doing the same things as the WINE team then...
@cius
"If I understand Wine properly, it implements the NT 4.0 libraries and dynamically translates calls to them into *nix calls at runtime. The original Win32 binary is untouched. What this guy is going to do, is actually create a new *nix binary that implements the exact same functionality as the win32 binary."
They are both doing the same thing. Wine implements the win32 API, so that the windows EXE can call functions with the same functionality as the win32 binaries (at the same or even better speed, if the calls are written well). That is also what alkylib does. The first poster had it right - they should just focus on using their binary conversion algorithm with the winelibs, rather than redoing all of the WINE team's work.
The only difference between this and wine is that wine uses the wine server, which really doesn't add much overhead, since it is really just a box around the windows EXE, made to look like windows on the inside. When a program makes a system call, the wine server calls the appropriate function from the winelibs, which are natively implemented. There is very, very little overhead in running the wine server.
I think this is a cool project - being able to run an application on any OS without extra software would be cool, I just think it's a wast of time to re-implement the win32 API again. Like daeken said, "All we have to do now is implement the win32 API". That is no small task, and is exactly what wine is doing. - daeken, on 10/12/2007, -1/+5You can see the source, fatdog.
- rasterbator, on 10/12/2007, -2/+6Couldn't someone just run a virus-infected executable, convert it to Mac OS X or Linux and start a widespread outbreak of a computer virus?
- pgquiles, on 10/12/2007, -6/+10This is not new. The OS/2 Netlabs people did this years ago for OS/2 and it's called Project Odin: http://odin.netlabs.org/
- daeken, on 10/12/2007, -9/+13It's an open-source project which you're more than welcome to help out with if you don't like the way you believe it's being developed.
- daeken, on 10/12/2007, -1/+5You misunderstand as well, fatdog. If you simply move those encrypted segments over in the binary file formats, their encryption code stays identical.
You don't need to touch their encryption whatsoever.
(This is coming from the person who developed the system, as well as an experienced reverse-engineer who deals with packed binaries daily)
As for disassembling, that's not the case at all. We literally read the segments out of the windows PE file and write them in byte-for-byte into the mach-o file. The only difference is we also link in a replacement main function to set up imports. You can read the source for how this is done in the SVN repository. - geminitojanus, on 10/12/2007, -1/+5"1) Encrypted executables cannot just be ported over to Mac/Linux line you suggest. They are actually run through a self-contained virtual machine that decrypts the executable at runtime."
Sure. So answer me this, how does the self-contained virtual machine get into memory? Oh, that's right. It's just an ordinary application. That ordinary application can be translated and ran just like any other application.
"2) IP laws. This is a violation of copyright and patent laws. The first time this is used on commercial software, the company that makes that software is going to shut you down."
Why? You've done nothing to touch the encryption, nor the program itself.
"3) There are thousands of Windows API functions in each version of Windows. There are hundreds of undocumented functions in each version. These numbers don't include proprietary functions. Many of these functions *have no analogue* in Mac or Linux."
They have an analog in Wine, which reimplements them. LibWine is actually _exactly_ the same thing as LibAlky that this project would use, and does the exact same thing. And Wine is able to act as any version of Windows from Windows 2000 to Windows 1. So yes, it is a HUGE body of code that one person could never implement in his or her own lifetime. But then again, why reimplement when a team of over a thousand have already done it for you? Wine is OS too, and could very easily make use of Alky's front end tools.
"4) This project sounds like a dissembler. You take a compiled binary, dissemble it, and recompile it into something useable on the target OS."
Disassembly implies that you're taking the application and turning it into source code. This project does none of that witchery, which is actually even MORE complicated. This program simply rewrites the Windows application (which is in a binary format called PE) into a Linux program (which has a binary format called ELF) or a Mac OS X program (which has a binary format called Mach-O). From there, it updates the application's linker table (a table which has the addresses for libraries in the system) with links to its own library (LibAlky, or even better, LibWine).
So no, nothing this guy is doing is any kind of IP violation, and it already works (and could work better if it just targeted Wine instead of his own library). Of course, if you want to learn more of how Wine works (and for that matter, Linux and Windows), you can always go to their respective developer's websites. - zetsurin, on 10/12/2007, -0/+3I've previously used wxWidgets for my cross platform projects. It works a treat except for the fact that it's difficult to make a Mac app LOOK like a mac app this way. And to compound that, Mac users are particularly anal about that kind of thing (which I think is understandable as a 'most of the time' Mac user myself). I've been really trying to like Objective-C in order to do things that way with Cocoa, but [self dontLikeIt:AtAll]...
- lpcustom, on 10/12/2007, -0/+3This guy links to the SVN page so you can actually look where the project is at and you digg him down????
Digg amazes me - daeken, on 10/12/2007, -1/+4http://flickr.com/photo_zoom.gne?id=161443549&size=o is the best screenshot I have right now. A simple (e.g. a quad and triangle) D3D app is almost entirely running, but I don't have any screenshots yet.
- lpcustom, on 10/12/2007, -0/+3@aoe2bug
Its great that you spent that much time replying to my post. I think a lot of you are missing the point though. I know we haven't done everything that we can. If you think we can do anything we want you are completely wrong though. The truth in this case is that the computer industry has been booming since 1980. Back in the early days there were a ton of different architectures and OS's. Now we have more standards. These standards don't really apply to OS's though. They all have the same job but they perform this job completely different.
Its not impossible that someday one game will play on all different systems flawlessly. That objective however is highly unlikely. You won't have some magical converter that will make a windows binary into a linux binary. If this happens at all it'll be from standards placed on game and OS developers to make all their software compatible. There are way more intricacies to all of this that most of you are missing. - ThirdPrize, on 10/12/2007, -0/+3Nice idea but not a hope in hell of getting it working. OS2 used to do something like this but they had to rewrite the Windows 3.11 API in a non copyright infringing way. Add to that the various undocumented functions that exist in Windows.
- daeken, on 10/12/2007, -0/+3http://alkyproject.com/wiki/index.php/Developer_Home look at the "Getting the Code" section.
- SyvanX, on 10/12/2007, -1/+3"If it could be done, it probably would have been done by now."
Tell that to Charles H. Duell, director of the US Patent Office in 1899. He said - "Everything that can be invented has been invented - zephc, on 10/12/2007, -1/+3Long method names in Cocoa are sometimes in a pain in the ass, but they lend themselves well to goin onto mutliple line e.g.
result = [myObj copyFile: file
fromDirectory: dir1
toDirectory:dir2]; - Halvy, on 10/12/2007, -0/+2The reason Wine has not progressed fully, nor any other Win API related replacement for M$ is because of fear that M$ will bring a halt to it through tough legal action.
What needs to be done is a completion of Wine and/or any related projects, in secret, and then released to the world community.
This needs to be done WITHOUT any regard or respect for M$.
Since that is not apparently happening, then the only other hope may be what Cringely said recently, about how someone as big as Job's, may be ready to solve this age old problem.
http://www.pbs.org/cringely/pulpit/pulpit20060420.html - lane.montgomery, on 10/12/2007, -2/+4It's probably 5 years away because that's the perpetual prediction of when Linux on the desktop will finally go mainstream. Thus, at the same time you will be able to run your windows programs without knowing the difference.
- lpcustom, on 10/12/2007, -0/+2well get some screenshots of it running....I'm interested in seeing how far you've came with it.
- SniperSlap, on 10/12/2007, -0/+2If Wine is already working on this, he should put his efforts into that.
I'm not always a fan of Wine though. So who knows. May the best man win (and absorb the other man). - geminitojanus, on 10/12/2007, -0/+2"The reason Wine has not progressed fully, nor any other Win API related replacement for M$ is because of fear that M$ will bring a halt to it through tough legal action."
I'm pretty sure that fear has been put to rest with Microsoft's Anti-trust lawsuit. The ruling was in favor of the government, and ruled that the API should be opened for interoperability. That ruling definitely would protect Wine.
Basically, the only thing Microsoft could do is assert copyright on the API, but that's a very weak ground to stand on, legally: You and I both have an assignment to write a program that does the same thing, draw a cube. Because our assignments are so similar, it stands to argue that some of our function names will overlap (such as "DrawCube()"). Microsoft could argue the fact that Wine's direct task was to take their function names and reimplement their code, and argue they should be shut down for that reason, but like said above, if they pulled that defense, they'd be admitting to violating the Justice Department's ruling, and asking the Justice Department itself to counteract that own ruling. - inactive, on 10/12/2007, -0/+2I would pay well over $500 for software to do this, and do it well :)
- daeken, on 10/12/2007, -1/+3I'm fairly close now. Had a bit of trouble understanding how D3D used vertex buffers (I've only ever done OpenGL) so that took me a bit, but all that's needed now is to finish that up (only a few more lines) and write up the DrawPrimitive function. You can see what I have in the DirectX/D3D9 and DirectX/D3DGL directories in the SVN repository.
- xst4t1kx, on 10/12/2007, -0/+1Thanks. I was hoping to be proven wrong.
- aoe2bug, on 10/12/2007, -2/+3"You obviously don't realize the effort he would have to put out to do this"
You obviously don't have much faith in your fellow digger. Just because i said you were a pessimist doesn't mean I don't acknowledge the huge amount of work something like this is.
"If this could be done it would have been been done by now. This isn't being pessimistic."
This has got to be the stupidest thing I've ever heard. We, as a human race, are not "done" yet; therefor we still have things to do. Therefor not everything accomplishable is done. Even if this is too difficult to do "in today's world", even if you are "right", it could still be done "at some indefinite point in the future." I'm sorry if I've insulted you, but your statement is inherently false.
"I can put up a website saying that's what I'm going to do as well. That doesn't mean anything. This type of project is no where near as easy as he thinks. "
How easy do you think he thinks it is? Just because he is willing to do something doesn't mean he doesn't know the task ahead of him.
"Wine has been in existence well over 5 years....do you see it coming close to what this guy is proposing? NO....You know why...it's not because of lack of effort...it's because it's not this straight forward or simple. It's a very complex task to try to achieve."
True, but again; more effort toward the goal of interoperability is a good thing. Even if one could argue that he's reinventing the wheel; new effort is never a bad thing.
"Kudos to him if he makes any headway in it. "
Yep.
"By the time he's actually able to achieve his "goal" though we'll probably all be using something totally different."
That's entirely possible.. Then we could emulate osx on that and then... :) -
Show 51 - 100 of 106 discussions



What is Digg?