Various projects have re-implemented the code necessary to host Win32 DLLs in-process, for instance Xine, MPlayer and GStreamer all have (different) forked, badly hacked copies of the Wine codebase inside themselves to load and use codec DLLs. The GIMP now has the ability to use Photoshop plugins using Wine. And so on.
It'd be nice if there was a simple API programs could use to do this, for instance, wine_dlopen("whatever.dll"), wine_adopt_thread() and so on to make re-use of Win32 components and COM objects easy.
This has been discussed before and Alexandre wasn't sure it was worth it as it'd be a significant extension to the (stable??) Wine APIs, so IMHO this one shouldn't be judged on whether it gets checked in or not but rather whether it works and how easy it is to use.
Thoughts? I know roughly what needs to be done so I could mentor this one, but students be warned - it requires _excellent_ understanding of operating system design and things like threading. There's a reason such a thing doesn't already exist, and it's because it's hard. On the flip side it's not a massive amount of code IMHO so the work would mostly involve learning, debugging, etc rather than simply being a hard typing slog.
Also, a student has all summer and the nice thing is, it's mostly generic computing knowledge that'd be useful for future work (whereas learning a specific api in depth probably isn't ...).
Such a thing has many uses:
* Hosting ActiveX controls inside a native Firefox
* Allowing more apps to use plugins from popular Windows apps. GIMP is a bit weird in that its plugin system is out of process and has a simple wire protocol .... a hangover from the days before ELF (!!), but most programs aren't like that. EG imagine being able to use WinAmp visualizion plugins in your music player of choice.
* Maybe getting the xine/mplayer/gst mess sorted out a bit (on the other hand they need to run only a small, relatively unchanging amount of code so it may not be worth it)
* Allowing piece-by-piece porting of a modular Windows app without Winelib (which is annoying as you have to switch toolchains all at once, you may not even have the sources to some DLLs etc ...)
* Actually there is a huge component marketplace in Windows which is especially rich in the boring sort of business components (grid views etc) that open source hackers tend to ignore ... this could allow developers to embed some of the very sophisticated Win32 business objects into native Linux apps, so reducing development costs (of course the result would not be free software, but for in house custom apps that's not really a concern anyway)
I'm sure you can think of some more. Discuss! :)
thanks -mike
On 4/18/06, Mike Hearn mike@plan99.net wrote:
The GIMP now has the ability to use Photoshop plugins using Wine. And so on.
As you point out later, Photoshop's plugins are out of process (http://www.gimp.org/~tml/gimp/win32/pspi.html) so that's not a good example of the problem you're trying so solve. (They make the mistake of shipping a winelib executable, but that's a minor sin.)
It'd be nice if there was a simple API programs could use to do this, for instance, wine_dlopen("whatever.dll"), wine_adopt_thread() and so on to make re-use of Win32 components and COM objects easy.
This has been discussed before and Alexandre wasn't sure it was worth it as it'd be a significant extension to the (stable??) Wine APIs
I still think it's an excellent idea, albeit difficult.
so IMHO this one shouldn't be judged on whether it gets checked in or not but rather whether it works and how easy it is to use.
I wouldn't put it that way. I'd continue "and if it clearly makes the world a happy place, Alexandre will naturally change his mind".
Thoughts? I know roughly what needs to be done so I could mentor this one, but students be warned - it requires _excellent_ understanding of operating system design and things like threading. There's a reason such a thing doesn't already exist, and it's because it's hard. On the flip side it's not a massive amount of code IMHO so the work would mostly involve learning, debugging, etc rather than simply being a hard typing slog.
Yep, it would take a special student for this one.
Such a thing has many uses:
- Hosting ActiveX controls inside a native Firefox
Now that's an evil use :-)
On the whole, I hope this happens. It would be an interesting experiment. - Dan
Dan Kegel wrote:
On 4/18/06, Mike Hearn mike@plan99.net wrote:
so IMHO this one shouldn't be judged on whether it gets checked in or not but rather whether it works and how easy it is to use.
I wouldn't put it that way. I'd continue "and if it clearly makes the world a happy place, Alexandre will naturally change his mind".
I agree
Such a thing has many uses:
- Hosting ActiveX controls inside a native Firefox
Now that's an evil use :-)
Evil not to mention very bad idea.. ActiveX is the big cause of spyware and some virii as far as I'm concerned, and if you put that into FF, you are opening a whole new can of worms for ppl like cydoor and doubleclick... With that being said it would make it (theoretically) possible to use the ActiveX Sun JVM for IE under FireFox, thereby finally allowing me to play runescape in FireFox with sound..
On the whole, I hope this happens. It would be an interesting experiment.
- Dan
I agree this idea is one of the best I have seen so far, and if done properly will open up a whole new set of doors for linux users, and probably make it a whole lot easier to convince windows users to switch, while at the same time keeping the security issues to a minimum..
Tom
On the whole, I hope this happens. It would be an interesting experiment.
One thing I don't really understand is the process for this .... are students meant to trawl the wine-devel archives looking for ideas? Or should I go stick a link to this thread on the wiki and students can just point to that? The current wiki page implies students have to invent all their own ideas, but I remember last year we compiled a big list on the wiki.
thanks -mike
On 4/19/06, Mike Hearn mike@plan99.net wrote:
On the whole, I hope this happens. It would be an interesting experiment.
One thing I don't really understand is the process for this .... are students meant to trawl the wine-devel archives looking for ideas? Or should I go stick a link to this thread on the wiki and students can just point to that? The current wiki page implies students have to invent all their own ideas, but I remember last year we compiled a big list on the wiki.
Go ahead and create a wiki page for the idea, and link to it from the wine SoC wiki page. I'm going to do that for one or two prefab projects myself.
But last year we had lots of applicants who simply copied and pasted the wiki page for their proposal, with minimal rewording. We would like to make it easy to tell those people apart from people who actually understand the project and can bring their own ideas to bear. So while you're writing your page, try to think of ways to encourage students to fill in the dots themselves. - Dan
-- Wine for Windows ISVs: http://kegel.com/wine/isv