Will Linux For Windows Change The World?
An anonymous reader writes "A month ago, a trial version of a little-known Linux application called 'CoLinux' was released that is the first working free and open source method for optimally running Linux on Microsoft Windows natively. It's the work of a 21-year-old Israeli computer science student and some Japanese open source programmers; in Israel, analysts are already saying it could help transform the software world." (CoLinux is short for Cooperative Linux; we mentioned this project in January as well.)
All the ease of use of Unix running on the stability of Windows.
Cool! Amazing Toys.
So would this be: In Soviet Israel, Windows Runs Linux?
It's about time someone thought of doing this.
The NT(2000/XP) kernel has had the ability to run other native applications for a while.
It sounds like they are going the same way that Win16/WOW, OS/2 and Posix apps currently get run in Windows. There's no reason not to add Linux to this list.
the lamb will lay down with the lion and there shall be peace. And the earth will shake with unrest, and stars will fall from the sky. ick.
-- the only good thing the French ever did was two chicks at one time
It's already becoming a bit slow... Looks like the Israel Defence Force may have done it again. Already famous for spawning an entire generation of software geniuses now active in the world of wireless technologies, the IDF has now apparently incubated the technical talent capable of creating a project that could change the world: the ability to run Linux on Windows 2000/XP. 21 year-old Dan Aloni, a graduate of an IDF computer unit, has developed a Linux application - called Cooperative Linux ("CoLinux" for short) - that is a port of the Linux kernel that allows it to run cooperatively alongside another operating system on a single machine. For instance, it allows one to freely run Linux on Windows without using a commercial PC virtualization software such as VMware, in a way which is much more optimal than using any general purpose PC virtualization software. A member of the international open source community, Aloni developed CoLinux along with several Japanese programmers, collaborating over the Net. According to the Web site, they've written special core drivers for the host OS which modify the way the host OS receives notifications from the hardware - thus allowing both OSes to coexist peacefully - and run at a decent speed as well. In Israel, acclaim for a system potentially capable of allowing organizations to run Linux and Windows in parallel on the same computer or server has been immediate. Organizations would make great savings if they didn't any longer have to have separate machines for each OS, says Shahar Shemesh, a member of the Israeli open source forum. And Pini Cohen, a senior informations systems analyst at computer research company Meta Group Israel has called the development "an important stage in breaking Microsoft's monopoly." "As the trend is for Linux to take a more important role in organizations," Shemesh continues, "Aloni's development is extremely interesting. The question is how Microsoft will react and whether it will allow support for Windows systems if they have Linux systems installed on them." According to Haaretz.com that is carrying details of this story, Microsoft has so far made no comment on Aloni's development.
The difference would be that you can run already availble Linux binaries under Windows rather than trying to get programs to work and compile for Windows under Cygwin.
This comment was thought up very late at night and does not necessarily reflect my views at a more reasonable hour.
- Dunno, seems like the original article missed the actual link.
You mean the already available binaries bundled with Cygwin? Or coming up with a Win 32 copy of Mozilla? Or GCC? Or even the Gimp? Or do you mean Open GL apps? Or Vim? Emacs? Etc etc etc.
Nope.
Any existing linux binary. Any new linux binary.
Like that internal application that your company wrote whose source got lost.
Or the complicated one you got debugged and deployed on your department's native Linux platforms and you want to be sure runs EXACTLY THE SAME WAY on the boss' Windows box.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
it would seem more productive to do this in reverse... that is to say, windows running under linux... not simply a compatability layer [wine] or an emulated system [vmware] -- it would be cool to see the NT kernel running as a process under linux (just as linux ran under mach in MkLinux, or OS9 runs under OS X)... it would probably be a lot faster to reboot that way... ;-)
-m
4.) ???
5.) Users
Yes, OpenGL/SDL isn't good enough, Linux needs to implement an inferior, proprietary API.
My blog. Good stuff (when I remember to update it). Read it.
Perhaps if DirectX actually was inferior, and if it wasn't the primary or only API for 90% of the games out there, you'd have a point.
How often do we, here at /., ask if a new software development is going to change the world? Constantly. And how often does it? Never.
This is no exception. It's just a sort of more native version of Cygwin. Sure, it could be kind of nifty, but it's not some major breakthrough which will leave the world shocked.
Could people please stop being so melodramatic with their subject lines?
definitely a good thing, because it might then encourage more people to take up Linux and have a look at it. It would give those people who are so 'married' to Windows a chance to look at what all the fuss is about, and to really evaluate Linux and see if it would be right for them. They wouldn't have to partition, re-format, re-jig their hard drive... and if things got too tough open up the appropriate Windows application to get their job done instead.
I also see it as a good thing in some corporate environments. Say you have a call center, and all the operatives have been trained to use some program for their task (let's say they're in a credit card environment) and their software is Unix based. Well, porting to Linux could be straightforward. Also for these operators they don't need to access the computer for anything much besides this application... and maybe the web and email to keep in contact with people. So these guys would have Linux desktops. Now there would also be some other administrative people who don't take calls, and who have other tasks. Like payroll, or some other fancy tasks. Maybe these programs were written for Windows, and there is no Linux port planned. Rather than trying to make these programs work through Wine or Crossover Office or something like that the obvious solution is to make Linux run on top of Windows. Then people have the best of both worlds for those kind of operations.
I also see advantages of running CoLinux in a dual boot environmemnt. That is, if you are short on disk space. I presume that CoLinux would run on the same filesystem as Windows. In a traditional dual boot system you might have a 20 gb disk, and split it up two ways - 10gb for Windows, and 10Gb for Linux. Let's suppose you are a Windows fan, and you easily eat up that 10Gb for Windows use, and hardly use Linux, except to 'play around with'. You then have 8Gb of disk space that Windows can't access natively (yes there are third party apps now that get around this) and as such you are short on space. So if Windows and Linux are sharing the same 20Gb partition, then Windows can use more than that smaller partition on those occasions it is deemed necessary (like downloading by broadband that 5Gb linux distribution on X # of CD's).
I don't see it as a "real major" security problem, because I perceive its main target is the desktop, and not for running security-critical applications which could get hacked to shreds. Also that these Windows boxes would be firewalled anyway for Internet access - behind native Linux firewalls on native Linux machines.
Mark.
Seems Like what apple has done with Mac OS 9 and Mac OS X
But with Apple, the crappy system runs inside the good system; with this it's the reverse.
I'm not normally an irrational zealous dickhead, but I figure "When in Rome..."
Perhaps if DirectX actually was inferior, and if it wasn't the primary or only API for 90% of the games out there, you'd have a point.
DirectX is great for PC Games - but for real scientific/commercial work it *SUCKS*.
Whenn Boeing dows the next 7E7 fly-though in DirectX, give me a call.
Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.
DirectX is great for PC Games - but for real scientific/commercial work it *SUCKS*.
Much more money in PC games though I'm afraid. And as always, money talks.
I've seen a number of scattered reasons (above) for running coLinux but here is the scenario I have for using coLinux.
The need to run a linux Distribution from within a Windows box not the need to run Linux applications on a Windows box:
First I want to point out that cygwin will get you a secure shell, gcc, and a number of other biaries, as ported from Linux. But it will not natively behave the same way that Linux does. The primary difference I'm referring to is hardware support and native binary support. It is for this reason that Cygwin will never be as useful to the Linux world as other distributions are. (Contributions back to Linux from Cygwin are not practical.... [Mozilla aside, there are no other good examples of OSS projects where there is a large number of developers porting their software from a Cygwin environ back to Linux]). There are several interesting cases of Linux software being compiled for windows (Xine, Gaim, X, etc) but these programs are not sufficient to be considered a "linux distribution within windows" instead should be considered, Linux apps for windows.
Consider now, my personal usage example, I have had a Linux dist sitting idle on my drive because I sold my second box (power is expensive!), and I needed to develop in MFC (Direct X 9.0) for a course that I was taking (leave linux on one part, install XP on the other). Right now there are several applications and other things that I'm missing from when I had primarily booted Linux, but I can't move away from Windows and still continue my studies (and btw, dual-booting is not an option I'm eager to go back to [takes forever, and I always want that one windows or linux app when I'm in the wrong boot]). So, after this project matures, I will hopefully be able to mount my existing Linux partition, boot my kernel, and access my applications and settings as I left them before, without disturbing my continued study with MFC and Direct X.
A few final points:
1.) XP is not as unstable as everyone here seems to contend, I have had weeks of uptime on my computer at work, as has the other developer who works with me.
2.) Cygwin does not allow developers to comfortably develop Linux apps on windows, and is limited inherently by Windows (terminal width constrained to less than 72 characters, X Windows loads slowly, etc).
3.)There are a number of practical uses for virtual machines but the speed of these systems, their somewhat limited application (hardware) support, and the price of the software ($$$ you would pay a heck of a lot more for VMWare than for Windows XP, buddy) tends to leave something to be desired from that corner of the market.
In conclusion, yeah, coLinux may not change the world, and it may not even turn a few heads, but it certainly could be useful for a number of people such as myself who are looking to get a little bit more Linux out of their Windows boxes.
.: 2+2 = PI SQRT(1+N)
Fonts are fonts. I use Windows fonts in Linux. They look great. Big deal.
What do you mean by "the window manager have them?" My fonts look fine. In fact, try any recent distribution like SuSE, Fedora Core, Mandrake, etc., and I think you'll get the same impression.
Without DirectX, few games ever make it to Linux. Thats because DirectX is much more than just a 3-D gaming API. It has other features that make games easier to develop for.
OpenGL+SDL does as well.
Without a standard window manager and a standard API to program for (thanks GNOME vs KDE war), there is hardly any incentive for an application developer to go to linux. Sorry, its just too complicated to make it run correctly (across window managers).
Umm, are you implying that an app compiled against Gnome libraries will suddenly break if you try to run it in KDE? Actually, you can just choose the one you like best and develop for it. Copy and pasting will take care of themselves, and with good themes, they can look nearly identical.
What do you mean running properly "across window managers?" Window managers almost certainly could never prevent a program from working properly, unless they draw a border and buttons when they're not supposed to, for example.
So basically, you can't decide if you would want to program for Gnome or KDE, and you don't like the fonts that distros ship by default (even though haven't been an embarrasing smidgen on the Linux desktop for years), so you don't really think it's worth your time to develop for Linux.
I think it's more than fine to just say "hey, I'm doing fine developing for Windows, I don't have any problems with it, so I don't need to switch." So often zealots convince people on Slashdot that you ought to be ashamed of yourself if you run Windows, and while I disagree with your post and reasons for not choosing Linux as a development platform, I think it's totally fine to not choose Linux for no reason other than you're content with what you have :)
Slashdot: Where people pretend to be twice as smart as they really are by behaving like children.
No, really? DirectX was designed explicitly for games. That means that early in its life, it sacrificed accuracy for speed (compared to OpenGL, which took the opposite approach and didn't really gain speed on consumer hardware until 3D accelerators took off). Even now, DirectX is driven by games and multimedia, not CAD and scientific/engineering requirements. There's absolutely nothing wrong with that, and in fact it's better for games that it's focused on games and multimedia rather than engineering applications, because the requirements for games are different.
If you're writing scientific software, use OpenGL. If you're writing a (Windows- or XBox-targetted) game, use DirectX.
Oh, yeah, it's also possible to use DirectX and OpenGL together. Like SDL, DirectX is an entire framework, not just a 3D rendering interface. Id and theCarmack use DirectX for input and sound while rendering their 3D visuals in OpenGL.
If I could run AutoCAD on Linux, I would use it at work (for something other than a server).
There is an AutoCAD clone for Linux. Here's a quote from my Linux user group list. (I haven't used it, so YMMV)...
Date: Tue, 16 Mar 2004 09:41:07 +0100
From: "BricsCad BackOffice" email-deleted
Subject: BricsCAD goes Linux
BricsCad, the market leader in low cost DWG CAD software, today announced the beta release of BricsCad for Linux. The product is based on the IntelliCAD kernel.
BricCad for Linux is an "almost clone" of AutoCAD(r). BricsCad uses the exact same DWG drawing format as AutoCAD(r). Drawings made by BricsCad can be read by AutoCAD(r) and the other way round.
BricsCad for Linux addresses the untapped group of individual and corporate professional CAD users in the LINUX community allowing them to use their operating system of choice without being locked out from the professional Engineering world and the DWG standard.
The full press release can be found on their website(s):
English version
French version
German version
Interested beta-testers are invited to contact BricsCad at linux@bricscad.com
2.) DirectX is a MICROSOFT ONLY format. It will never, ever, be in any linux distro except in emulation form. And for second, why should it be? OpenGL is fine and great, and with 2.0 coming out you can stuff DirectX where the sun don't shine.
At its very core, DirectX is just a set of APIs. Yes, it's a Microsoft API, but the exposed interfaces are well documented, and ignoring any possible legal issues, it is entirely possible to write a DirectX implementation on another platform. Okay, some of you may disagree on whether or not DirectX is well documented, but it's documented well enough for emulation purposes.
There are wrappers available that translate Direct3D calls into OpenGL calls (similar to Glide wrappers from the 3dfx days), and I don't see any technical problems with removing the OpenGL layer and having the new Direct3D implementation call the graphics card directly. However, and correct me if I'm wrong, I think Linux 3D graphics drivers are currently all proprietary, so nVidia and ATI would have to provide the Direct3D layer.
Still, even with an emulation layer, why SHOULDN'T DirectX run on Linux? Ignore legal issues and Microsoft's desires. Believe it or not, there are some developers who've only used DirectX and not OpenGL+SDL. It's worth having DirectX on Linux even if only a tiny fraction of those developers decide to port to Linux. That fraction may grow, and after familiarizing themselves with Linux they may switch to other APIs that are better supported on Linux, such as OpenGL and SDL.
Threw this on MetaFilter a few hours ago; hope this helps clarify what's going on here. Thanks to the good Jason Spence for explaining most of this to me over fine tequila at Defcon a few years back :-)
:-)
===
OK, terrible terrible story. Nobody's going to contest that. My immediate reaction: "Yay, another whiz kid story. Kid probably rediscovered prefetching web pages."
Yeah. Then the CoLinux guy came up.
People, CoLinux is absurdly brilliant stuff, the kind of hardcore engineers get drunk about and laugh that "some psycho pulled off WHAT?!" regarding. I can say this from personal experience
To put it simply, most approaches that involve multiple operating systems sharing a processor require a significant degree of subordination. In the Cygwin model, the "Linux/Unix" way of requesting services from the operating system (open this file, give me that network connection) is translated to the Windows way through a library of functions. The mapping is pretty good, but like any translation, it's not perfect. Some actions, like starting new programs, are very very fast under Linux/Unix and are extraordinarily slow under Windows. Cygwin deals with this as best it can, but there's only so much it can do.
VMWare offers a different approach. Instead of translating Unix to Windows, VMWare creates a "virtual PC", complete with its own processor, motherboard, sound card, network card, and everything else. The child operating system -- Linux, for example -- gets a complete environment to manipulate, and VMWare handles the translation between what the child PC is asking to do and what the parent PC is actually capable of. This interface is much more isolated than what Cygwin offers -- memory, for instance, is not shared between the two environs -- but as such, the child operating system is freed of many of the particular quirks of the parent OS. The child Linux really is Linux, and can do everything Linux can do, because Linux is an environment for controlling a PC.
The only catch is that it's a virtualized PC, and VMWare needs to do alot of work to keep the two contexts separate -- and to emulate all the hardware resources that are normally "just there", but now need to be simulated. There's a 20-30% speed cut out of this. Also, switching contexts between parent PC and child PC is not a trivial thing to do, meaning it can only be done a certain number of times per second. This causes issues for some real time operations. Specifically, audio in VMWare is a problem.
CoLinux is something else entirely. x86 CPU's have the concept of Rings -- these are roughly analogous to privelege levels, in which certain classes of commands may be issued to certain components of the architecture. Lowest level code operates in what's referred to as "Ring 0" -- at this level of permissions, one can directly control the raw components of the PC, for better or worse. This is a gross oversimplification, but there's basically two things that live at Ring 0: A kernel, and device drivers (which are not entirely separate from the kernel). Kernels are basically a core set of commands that user software can execute to get things done -- create processes, read files, open network connections, and so on. Here's a list of Linux syscalls, at least from 2.2. Not on this list -- stuff like, "Send this block of memory to this device on the PCI bus, and tell the sound card to start emitting sound from that memory address on its internal buffer." That's what device drivers are for -- they get some kind of interface that userspace can talk to, and they do things with what they're given. Those things can be pretty much anything the underlying hardware can do -- stuff way deeper than "write this file" and "trace this process", and into the nuts and bolts of what the PC is -- a collection of wires and memory addresses. Normally, that's what a device driver does: It implements the requisite hardware calls to let some piece of equipment work.