I have a Tablet PC, running Kubuntu, and I have just released a project on sourceforge to allow me to use the Microsoft hand writing recognition. The current approach uses a .NET server in IIS running on Tablet XP to provide the recognition. I would prefer to write a classic Windows program that accepts the polyline ink strokes, accesses the Tablet SDK & .dlls to recognize ink, and run that program in WINE directly in Linux without IIS and network connections.
I'm thinking of my legal dual-boot installation, and reaching over with WINE to run the app just as I run Notepad from the Windows install now.
I'm a Java programmer by day, and I haven't programmed Windows COM before (much). I'd like comments and advice (even help) on doing this.
All of this message is written by hand in Linux using the SHIP project (except copying and pasting this URL): https://sourceforge.net/projects/ship-project/
Thanks in advance for information, bret
On Fri, May 23, 2008 at 8:17 AM, Bret Comstock Waldow bcw1000@yahoo.com wrote:
I have a Tablet PC, running Kubuntu, and I have just released a project on sourceforge to allow me to use the Microsoft hand writing recognition. The current approach uses a .NET server in IIS running on Tablet XP to provide the recognition. I would prefer to write a classic Windows program that accepts the polyline ink strokes, accesses the Tablet SDK & .dlls to recognize ink, and run that program in WINE directly in Linux without IIS and network connections.
There is the very tiniest skeleton of inkobj.dll which unfortunately is no where near enough to even let an ms ink program run let alone do handwriting recognition. Also I'm unsure of how doable it is to run .Net apps in wine yet.
wintab32 works alright though, so perhaps you would be able to write a wintab app which integrated with one of the open source handwriting recognition programs (ocropus and others ill try and dig up the links later if you are interested).
--John
John Klehm wrote:
On Fri, May 23, 2008 at 8:17 AM, Bret Comstock Waldow bcw1000@yahoo.com wrote:
I have a Tablet PC, running Kubuntu, and I have just released a project on sourceforge to allow me to use the Microsoft hand writing recognition. The current approach uses a .NET server in IIS running on Tablet XP to provide the recognition. I would prefer to write a classic Windows program that accepts the polyline ink strokes, accesses the Tablet SDK & .dlls to recognize ink, and run that program in WINE directly in Linux without IIS and network connections.
There is the very tiniest skeleton of inkobj.dll which unfortunately is no where near enough to even let an ms ink program run let alone do handwriting recognition. Also I'm unsure of how doable it is to run .Net apps in wine yet.
wintab32 works alright though, so perhaps you would be able to write a wintab app which integrated with one of the open source handwriting recognition programs (ocropus and others ill try and dig up the links later if you are interested).
I will be very interested in looking at any open source handwriting recognition programs you can point me at.
In order to be generally useful, the program must be able to recognize cursive handwriting, as then it can be used with a general note-taking application, such as the Tablet enabled PIMs (which is why I got interested in the first place) or an open source equivalent of OneNote.
Xstroke uses the libstroke library to provide recognition of single-stroke characters, and while many of those glyphs look like their actual character, not all can. A person could learn to write a page full of individual glyphs (and read it), and then a program could use libstroke later to interpret (and thus search through) such pages of notes, but that's not the best solution.
We need cursive natural handwriting recognition, and I have that in the licensed Tablet XP I have on my machine. There are many examples of "ink-on-the-web" published by Microsoft and their MVPs, and the license states I can connect to my copy of XP over the network to consume services provided by IIS, so I'm comfortable with my current solution.
But it's not the most useful - it requires a virtualized copy of Tablet XP (or Vista) and that VM makes it cumbersome.
There is apparently a legal basis for me to use WINE to run Notepad off my Windows partition. I want to write a Windows COM (Automation) app - no .NET - that I can install on my copy of Windows and then run via WINE, just as I do Notepad or Solitaire. The Tablet PC SDK appears at first look to allow such.
If there is already a usable open source cursive handwriting recognition program, I'll be happy to use that and ditch Windows entirely.
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
Cheers, Bret
On Fri, May 23, 2008 at 8:58 PM, Bret Comstock Waldow bcw1000@yahoo.com wrote:
I will be very interested in looking at any open source handwriting recognition programs you can point me at.
Here's what I was able to dig up awhile back in regards to open source handwriting recog of any kind (not saying I found everything by any means):
http://code.google.com/p/ocropus/ <= maybe the best handwriting recog engine? http://www.dklevine.com/general/software/tc1000/jarnal.htm <= closest thing to onenote http://groundstate.ca/tabletsoft <= good summary of a bunch of programs http://www.stressbunny.com/wayv/ http://www.handhelds.org/projects/xscribble.html http://www.etla.net/libstroke/
I had been hoping to eventually get inkobj in wine to use ocopus as the backend for handwriting but thats just a dream at this point.
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
If you are suggesting to use one copy of windows to serve functionality for multiple users that might be on shaky legal ground, IANAL though.
Hope this helps, --John
John Klehm wrote:
On Fri, May 23, 2008 at 8:58 PM, Bret Comstock Waldow bcw1000@yahoo.com wrote:
I will be very interested in looking at any open source handwriting recognition programs you can point me at.
Here's what I was able to dig up awhile back in regards to open source handwriting recog of any kind (not saying I found everything by any means):
http://code.google.com/p/ocropus/ <= maybe the best handwriting recog engine?
I've had a half-an-hour look at this. I see the phrase "handwriting recognition" a lot, but no examples or discussion yet.
http://www.dklevine.com/general/software/tc1000/jarnal.htm <= closest thing to onenote
Yes, and the handwriting recognition is entirely printed individual characters, and it's not particularly good. I don't think this is any reflection on the authors - handwriting recognition is one of the "hard" problems.
But it doesn't provide sufficient support.
http://groundstate.ca/tabletsoft <= good summary of a bunch of programs http://www.stressbunny.com/wayv/ http://www.handhelds.org/projects/xscribble.html http://www.etla.net/libstroke/
All of these are printed individual character (or glyph) recognition systems, and thus seriously compromise notetaking and post-recognition tasks.
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
If you are suggesting to use one copy of windows to serve functionality for multiple users that might be on shaky legal ground, IANAL though.
I don't know myself. The web has many examples, published with Microsoft's implicit (MVPs) or explicit consent (MS provides the examples themselves) of ink-on-the-web, including handwriting recognition. They're largely .NET, but not all.
I'm not interested in providing this service for many users, however, I'm only interested in using it for myself, on my own Tablet computer, with my own licensed copy of Tablet XP.
Here is the language from the eula:
1.4 Device Connections. You may permit a maximum of ten (10) computers or other electronic devices (each a "Device") to connect to the COMPUTER to utilize one or more of the following services of the SOFTWARE: File Services, Print Services, Internet Information Services, Internet Connection Sharing and telephony services. The ten connection maximum includes any indirect connections made through "multiplexing" or other software or hardware which pools or aggregates connections. This ten connection maximum does not apply to other uses of the SOFTWARE, such as synchronizing data between a Device and the COMPUTER, provided only one user uses, accesses, displays or runs the SOFTWARE at any one time. This Section 1.4 does not grant you rights to access a COMPUTER Session from any Device. A "Session" means any use of the SOFTWARE that enables functionality similar to that available to an end user who is interacting with the COMPUTER through any combination of input, output and display peripherals.
1.5 Remote Desktop/Remote Assistance/NetMeeting. The SOFTWARE contains Remote Desktop, Remote Assistance, and NetMeeting technologies that enable the SOFTWARE or applications installed on the COMPUTER (sometimes referred to as a host device) to be accessed remotely from other Devices. You may use the SOFTWARE's Remote Desktop feature (or other software which provides similar functionality for a similar purpose) to access a COMPUTER Session from any Device provided you acquire a separate SOFTWARE license for that Device. As an exception to this rule, the person who is the single primary user of the COMPUTER may access a Computer Session from any Device without acquiring an additional SOFTWARE license for that Device. When you are using Remote Assistance or NetMeeting (or other software which provides similar functionality for a similar purpose) you may share a Session with other users without any limit on the number of Device connections and without acquiring additional licenses for the SOFTWARE. For Microsoft and non-Microsoft applications, you should consult the license agreement accompanying the applicable software or contact the applicable licensor to determine whether use of the software with Remote Desktop, Remote Assistance, or NetMeeting is permitted without an additional license. Except as otherwise permitted by the NetMeeting and Remote Assistance features described above, a license for the SOFTWARE may not be shared or used concurrently on different computers, such as a workstation, terminal or other device.
Note this phrase especially: "As an exception to this rule, the person who is the single primary user of the COMPUTER may access a Computer Session from any Device without acquiring an additional SOFTWARE license for that Device."
I read this as saying I may use a running Tablet PC as a compute server, processing polylines into characters just as the ink-on-the-web exmaples Microsoft publishes do, but for my own use, on my own network.
And this: "You may use the SOFTWARE's Remote Desktop feature (or other software which provides similar functionality for a similar purpose)"
VMware provides similar functionality for a similar purpose - I can remote my desktop with it. It's still only running on the PC it's licensed for - my Tablet computer.
So, for individual use by the licensee, I'm comfortable about my current implementation (xmlrpc access to a compute server over the net by the licensee). I don't know about the legal grounds for running a program I write that provides the functionality, which program is installed on the actual copy of Tablet XP, and which program is accessed via the WINE compatibility layer.
And I don't know if it's technically feasible, as I don't program MS Windows COM applications (yet). I know .NET won't work with WINE, but the Tablet SDK does include COM support as well.
Any comments?
Cheers, Bret
Bret Comstock Waldow wrote:
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
You have to have valid _retail_ license of whatever windows version parts of which you want to use with Wine.
You can only use OEM version if you using the same hardware your license came with.
This makes completely impractical for anyone to use such a setup. Wine is made to avoid having windows all together, not requiring it.
Vitaliy.
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
Like Vitality said, the Wine project would like to avoid this, if possible. However, the statements made about the 'parts' of Windows you are using. If you are using a .dll that is available ONLY with a retail/OEM Windows package, you just might be violating the laws of your country. Here it is best to consult a copyright attorney before DOING ANYTHING. In the United States, copyright violations can be VERY expensive. If you get several of the United States government entities involved, fines can be very high and you can end up with a lengthy stay in one of the country's finer prisons.
You have to have valid _retail_ license of whatever windows version parts of which you want to use with Wine.
Depends on where you are living. The European Union threw out most of the End User License Agreement as unenforceable. In the United States of America, your statement is completely true. However, it is best to avoid piracy if at all possible.
You can only use OEM version if you using the same hardware your license came with.
Again, see above. However, if you are using a re-destributiable and it does not have the 'new' EULA, you can use the package with Wine. .NET 3 has the new EULA that states it MUST be used with Microsoft Windows and thus the Genuine check.
This makes completely impractical for anyone to use such a setup. Wine is made to avoid having windows all together, not requiring it.
Here, here. Let's build into Wine the functionality to support most popular Windows programs and rid ourselves of the need to rely on Windows .dll code.
James McKenzie
James McKenzie wrote:
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
Like Vitality said, the Wine project would like to avoid this, if possible.
I understand, as I mention in another post. I also specify my reasoning more there - it is a case of "the end justifies the means", but I believe WINE itself might fall into that category. You are offering a way for Windows users to boot and remain in Linux instead of booting Windows - that's what I want, specifically for Tablet computer users that have a legal copy of Tablet XP.
You can tell me if you think I'm wrong about that - it would help me to understand.
However, the statements made about the 'parts' of Windows you are using. If you are using a .dll that is available ONLY with a retail/OEM Windows package, you just might be violating the laws of your country.
In my approach, only a person that has a Tablet PC (Microsoft's definition) which therefore is bundled with Tablet XP (or Vista now, I suppose) licensed for that machine will use the app, and they will install it on their Windows copy, just as they do Word.
No Microsoft code is redistributed at all, unless it's part of the re-distributables listed in the Visual C++ or Tablet SDK listings.
Keep in mind of course that this application doesn't exist yet, if it ever will.
Here it is best to consult a copyright attorney before DOING ANYTHING. In the United States, copyright violations can be VERY expensive. If you get several of the United States government entities involved, fines can be very high and you can end up with a lengthy stay in one of the country's finer prisons.
Since I will only redistribute code I've written, or files listed as re-distributable in the Visual C++ or Tablet XP lists, I think this wouldn't apply - not copyright violation anyway. I'll have to look at the pertinent license terms for other aspects.
Let me know if you think I haven't understood, please.
You have to have valid _retail_ license of whatever windows version parts of which you want to use with Wine.
Depends on where you are living. The European Union threw out most of the End User License Agreement as unenforceable. In the United States of America, your statement is completely true. However, it is best to avoid piracy if at all possible.
No piracy at all - the copy of Tablet XP is licensed for the machine it's installed on. It would get copied off the disk into RAM, but only on the hardware it's licensed to. Is that a violation?
You can only use OEM version if you using the same hardware your license came with.
No problem. I'm not targeting or assisting any other scenario. The law that protects Microsoft's rights is the same law that enforces the GPL. I'm for it - and I want to be sure I don't violate it.
Here, here.
As an aside, the original phrase is "Hear, Hear!" - as in an exhortation to everyone else to listen to what this man is saying.
Let's build into Wine the functionality to support most popular Windows programs and rid ourselves of the need to rely on Windows .dll code.
I'd love it. I'm working on it as best I can myself. I see this a a martial arts trick - go with the opponent to guide their strength so it doesn't confront me.
But do please tell me any ways you can see that I'm still not understanding the legal issues. I can do more out of prison myself, even if it's not working on this idea.
By the way, I'm living in Perth, Australia. There are nuances to all legal situations, but it is legal to reverse engineer software that I have a legal right to use in Australia in order to use it with hardware or other software I have the legal right to use (unless they changed that in the last few months when I wasn't looking). I don't know that that's pertinent in this case, as I'm proposing a Windows application written to be installed and run on Windows. And then possibly, accessed via WINE.
I'd just as soon choose a solution that is legal (or at least not obviously illegal) in the US, Europe, and New Zealand (my home) as well.
Cheers, Bret
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
Otherwise, I need to know about the legality, and practicality, of a scheme such as I am proposing above. I'm hoping for comment, pointers, and perhaps help about writing it.
You have to have valid _retail_ license of whatever windows version parts of which you want to use with Wine.
You can only use OEM version if you using the same hardware your license came with.
This makes completely impractical for anyone to use such a setup. Wine is made to avoid having windows all together, not requiring it.
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
There are Universities that mandate Tablet computers for Faculty and Students, thus locking Linux from use in academic situations, which is one of the best arenas for development of Free Software handwriting recognition. I want to make it practical for anyone to remain in Linux (or Unix) all the time while using a Tablet computer.
This would allow an eco-system of tablet functionality to develop, which in turn makes it more possible and more likely that someone will provide a solution to the central problem of handwriting recognition free from proprietary encumbrance.
If someone wants to avoid using Windows, they should avoid using Windows programs, and instead use solutions that have no dependency on Windows, to make it entirely irrelevant.
WINE is a compromise to allow people to use Windows programs without (all of) Windows, but it's not a solution, it's a stepping stone. That's what I am intending as well, but specifically for Tablet computers.
I don't see an ethical difference between allowing the use of native ..dlls in WINE, and my own intentions, nor a legal one. If you can load native .dlls without running a full session of Windows in order to run a Windows program, why can't I? I would like an actual answer to that, as it seems to be the crux of the question.
Or does WINE itself break the law by allowing the use of native .dlls without loading a full copy of Windows?
Cheers, Bret
Bret Comstock Waldow wrote:
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
So you want that everyone drop everything they are doing and start doing something that no one else can possibly use? Because it's either illegal, too costly or depends on hardware that non one has? What a wonderful idea!
Vitaliy.
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
So you want that everyone drop everything they are doing and start doing something that no one else can possibly use? Because it's either illegal, too costly or depends on hardware that non one has? What a wonderful idea!
No, I want to develop a solution that anyone who has a Tablet PC can use to remain in Linux/Unix while using their OWN Tablet PC and the legal copy of Tablet XP that is licensed for that actual PC, and I want to tell others how to do it so they can for themselves.
If it's legal for me to release the actual binaries to do that under a free license (I'm using the Modified BSD license for my current .NET server), then I will. If it's only legal to release the source code or instructions under a free license then that's what I'll publish, and people can write and compile their own, so they can use everything they have paid for in a legal way.
And you didn't address why it's acceptable for the WINE project to tell people to use native .dlls in WINE without loading a full session of Windows, but not acceptable for me.
Can you speak to that, please? Is WINE itself breaking the law, and what is the difference to what I am thinking of if the project is not?
Cheers, Bret
Bret Comstock Waldow wrote:
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
So you want that everyone drop everything they are doing and start doing something that no one else can possibly use? Because it's either illegal, too costly or depends on hardware that non one has? What a wonderful idea!
No, I want to develop a solution that anyone who has a Tablet PC can use to remain in Linux/Unix while using their OWN Tablet PC and the legal copy of Tablet XP that is licensed for that actual PC, and I want to tell others how to do it so they can for themselves.
In your solution you had 2 windows copies running at the same time. That you can't do with only one license.
And you didn't address why it's acceptable for the WINE project to tell people to use native .dlls in WINE without loading a full session of Windows, but not acceptable for me.
That's up to people to decide what they do and legality of it. If you read some posts where people suggesting use of native dlls - that's not a _project_ telling everyone to use those dlls.
Is WINE itself breaking the law, and what is the difference to what I am thinking of if the project is not?
Wine itself DOES NOT break the law. Nor is it's intention to break the law in any way shape or form. What you proposing - does.
It seems you missing the whole point of the Wine project. Wine's objective is to run windows programs _WITHOUT_ windows. So no one is obligated to pay m$ tax on their hardware.
Designing something that runs on Wine and requires that windows is absolutely wrong.
Anyway. You are welcome to send patches that implement required functionality in Wine (after the wine-1.0 is out of course).
Vitaliy.
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
So you want that everyone drop everything they are doing and start doing something that no one else can possibly use? Because it's either illegal, too costly or depends on hardware that non one has? What a wonderful idea!
No, I want to develop a solution that anyone who has a Tablet PC can use to remain in Linux/Unix while using their OWN Tablet PC and the legal copy of Tablet XP that is licensed for that actual PC, and I want to tell others how to do it so they can for themselves.
In your solution you had 2 windows copies running at the same time. That you can't do with only one license.
I most certainly do not have two copies of Windows running at the same time with this new proposal, anymore than there are ANY copies of Windows running if I run Notepad off my disk in Linux via the WINE app.
I install a COM app I write on my Tablet XP, shut down Tablet XP, and then boot Linux and run the app off the disk from Linux, just like we do when we run a copy of Notepad via WINE in Linux, or a game, or Word, off the Windows install partition, without running the full copy of Windows that is on the partition.
My CURRENT .NET server based solution DOES involve a running copy of Tablet XP, on the hardware it's licensed to be installed on, accessible on a network to the person who is legally entitled to access it over the network, just as Microsoft's license says they may. It is even possible to load the local install of Windows right off it's partition in VMware, although it is an advanced use of VMware - and only one copy is running, and it's always running on the hardware it's actually licensed for - never anywhere else.
Cheers, Bret
On Sat, May 24, 2008 at 12:39 AM, Bret Comstock Waldow bcw1000@yahoo.com wrote:
Vitaliy Margolen wrote:
Bret Comstock Waldow wrote:
I ONLY want to write a Windows app I can install on my OWN copy of Tablet XP on my OWN Tablet PC and then run from Linux via WINE.
So you want that everyone drop everything they are doing and start doing something that no one else can possibly use? Because it's either illegal, too costly or depends on hardware that non one has? What a wonderful idea!
No, I want to develop a solution that anyone who has a Tablet PC can use to remain in Linux/Unix while using their OWN Tablet PC and the legal copy of Tablet XP that is licensed for that actual PC, and I want to tell others how to do it so they can for themselves.
If it's legal for me to release the actual binaries to do that under a free license (I'm using the Modified BSD license for my current .NET server), then I will. If it's only legal to release the source code or instructions under a free license then that's what I'll publish, and people can write and compile their own, so they can use everything they have paid for in a legal way.
And you didn't address why it's acceptable for the WINE project to tell people to use native .dlls in WINE without loading a full session of Windows, but not acceptable for me.
Can you speak to that, please? Is WINE itself breaking the law, and what is the difference to what I am thinking of if the project is not?
Wine is software...not sure how 'it' can break the law. There's a vast difference between a software project, developing for that software, and using that software. A person using native Windows DLLs with Wine may be violating copyright law or the MS EULA if they don't own a licensed copy of Windows. We only advise licensed users of Windows to use their DLLs in Wine, and even then its' only as a last resort because it's detrimental in the long run to the project (developmentally, not legally).
http://wiki.winehq.org/FAQ#head-d9796202650e186ec37698c0c8d2a18bebf6862c
James Hawkins wrote:
A person using native Windows DLLs with Wine may be violating copyright law or the MS EULA if they don't own a licensed copy of Windows.
That is of no concern with what I'm doing, as only the person who owns the Tablet PC and has the license for the copy of Tablet XP that comes with it will use the system, and only on the Tablet PC the Windows software is licensed for.
We only advise licensed users of Windows to use their DLLs in Wine, and even then its' only as a last resort because it's detrimental in the long run to the project (developmentally, not legally).
http://wiki.winehq.org/FAQ#head-d9796202650e186ec37698c0c8d2a18bebf6862c
I understand it's detrimental in the long run.
As I mentioned, I'm hoping to jump-start the Tablet software eco-system on Linux by making it (legally) possible to have functional handwriting recognition now, with as much as possible of the surrounding software written as Free or at least Open Source Software.
As the support springs up around it, eventually, only the actual handwriting recognition engine itself need be replaced, and the ability to use the Tablet in the meantime means more and more people will want that, and more and more people (Graduate Students?) will have an incentive, and supporting software, to write it for.
It's a hack, but then, isn't that what WINE is for? To keep people booted into Linux and off Windows?
I'll also look into getting some of the proprietary handwriting software available as a module people can pay for and run on Linux with my existing client (plus improvements) or other clients others may write. But right now I'm investigating whether the recognition I've already paid for can be used in Linux via WINE, just as the Wordpad and Solitaire and MineSweeper I've already paid for can be used in Linux via WINE.
If you have a better proposal to solve the problem I'm addressing, I and lots of other Tablet users I read on the Ubuntu forums and elsewhere would love to hear it - people are crying for this, and the reason you don't hear it a lot is that Tablets are not really usable AS TABLETS in Linux - we can't really get started. But telling us not do do it just because you might have no need for it personally isn't really addressing what we need.
The only reason to support Office is because people want it, and won't get off Windows unless they can use it anyway. That's what I'm trying to do for Tablet users.
Cheers, Bret