XWinX is developing rapidly, and at this stage most of the core features are well implemented and tested. If you're a programmer yourself, or want to try something different, you might find this project interesting. You'll need some knowledge of X11 to understand what the XWinX project is about. If you know an X server from an X client, and how to connect the two over a network, then this project might be of interest to you. If you just want to get some work done, try VNC.
XWinX is a project to create a program in C to remotely control an MS Windows® machine, just like you can with VNC, Citrix MetaFrame® (Citrix ICA®), pcAnywhere® and friends. With VNC or Citrix MetaFrame®, there are actually two steps between your X server and the MS Windows desktop - the server and the client. VNC will be used as an example throughout XWinX documentation, but the setup is exactly the same with Citrix MetaFrame® using the Citrix ICA® protocol.
In many setups, the X server and the VNC client will be on the same machine, but they could be on separate hosts if you are using an X terminal. I was using VNC one day and it occurred to me that this setup wasn't very sensible. Why develop and use a another protocol (VNC) when the X11 protocol was designed run applications remotely? Why use two protocols which are both designed to do the same thing (X11 and VNC) at the same time, one after the other? Why not just use one?
So, the idea of XWinX is to cut out the middle man.
So, XWinX eliminates one process (the VNC client), and one protocol (VNC) by making the MS Windows machine connect directly to the X server using the X11 protocol. Obviously the use of VNC protocol, and the extra associated process, has some advantages. One being that you can connect to the VNC server from any platform, not just from an X server. Another being that the VNC protocol is more flexible in terms of bandwidth use, and is more likely to yield satisfactory results over a non-LAN connection. But in terms of the common scenario of connecting to an MS Windows machine from an X server to access applications, or perform an administration task, it doesn't make much sense.
If your VNC client and X server are on the same machine, then XWinX doesn't cut down on any network connections, since the connection between the VNC client and the X server will use local Unix sockets. But, if you are using an X terminal then you are running the X server on one machine, the VNC client on another machine, and VNC server on a third machine. In this scenario, by using XWinX, your traffic would go over the network once instead of twice.
The idea behind the name is that the first "x" is as in "across" or "transfer", so it's like "across windows". The second "x" is an "x" as in "unknown". That is, win(x) where x is "MS Windows" and/or "X Windows".
Pronounce it "ecks win ecks" or "ecks winks", take your pick. I tend to use the former myself.
Umm... not sure. Apparently some people find the need to do this. XWinX was started entirely as an experiment at a time when I was using VNC a fair bit for remote administration of servers. It occurred to me that it would be interesting to try a pure X11 protocol solution, so I attempted XWinX purely as an experiment, without much intention of turning it into a useful piece of real-world software. I felt that VNC was already a practical solution to remote MS Windows® control, and saw no reason to re-invent the wheel. XWinX was purely as an experiment, a challenge to see if what I had in mind was possible, whether it was practical, and whether I personally could do it. It wasn't an attempt to solve any particular problem of mine or anyone else's.
Having said that, since releasing that first primitive demonstration to the public, I have received impressive and encouraging feedback and contributions from the community. Progress on XWinX has been so good that I can now see that the project has the potential and support to become a very useful piece of software.
XWinX isn't meant to be a replacement for VNC or Citrix Metaframe®, the two main alternatives to XWinX. XWinX is a completely different way to solve the same problem, with completely different set of advantages and disadvantages.
The VNC protocol provides a truly cross-platform abstraction layer for remote access to a GUI. It has already been implemented in many, many situations other than the MS Windows to X Windows connection situation that XWinX deals with. It is a proven product, with a much broader set of possibilities than XWinX will ever have. It, like XWinX, is Free Software released under the GPL. VNC is definitely the best overall solution for remote control of GUIs because of its maturity and portability. VNC can be used with any combination of clients and servers for most operating systems, while XWinX will only ever provide access to MS Windows® from an X server.
Citrix MetaFrame® is also a completely different beast. It offers speed that will possibly never be rivalled by anything else, even over modem links. It is a true multi-user solution, which XWinX and VNC aren't. The "published applications" possible with Citrix MetaFrame® are also unique at the moment as far as I am aware. There are Citrix ICA® clients available for many different platforms.
I would like to see XWinX support multiple login sessions like Citrix MetaFrame®, but I'm not sure if this is practical or will ever happen. The published application support is more likely, and will hopefully happen soon.
XWinX will, hopefully, continue to develop towards filling its little niche very well, providing remote access to a Windows machine from an X server with no additional software required on the client (X server) side. Hopefully it will also support "published applications" similar to Citrix MetaFrame, which VNC doesn't support. Depending on how the plans for published applications and multi-user support turn out, XWinX could start being a free and open source alternative to some of the things currently only possible with Citrix MetaFrame®. Even if it does, it will probably never rival the speed.
Being supporters of Free Software, we are optimistic that eventually XWinX will make it easier for people who aren't using Linux due to a dependence on one or two Windows applications to make the switch to Linux. If our software makes it easier for people to use Linux, or means that people who could otherwise not use Linux can use it, then that, to us, is a worthwhile achievement.
The more help and contributions received from the community, the quicker the visions we have for XWinX will be realised. Anyone who would like to participate can check out the code using anonymous CVS and send us patches.
However, we need the help of non-programmers as well. Have a look at our future plans for some ideas.