Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

ArtOfWarfare

macrumors G3
Original poster
Nov 26, 2007
9,670
6,211
I'd like to write a simple VNC Client for iOS which converts touch events to Mouse and Keyboard events a bit differently from all of the other iOS VNC Clients on the app store.

I was reading through the Protocol here:
http://www.realvnc.com/docs/rfbproto.pdf

When it occurred to me that if I implement all the stuff described in that document for the client, I'm going to be writing the exact same code several other people have already written. That violates a rule I like to follow: DROP. Don't Repeat Other People.

So I'm curious - is there an iOS VNC Client Framework that I can just drop into my application (which I intend to sell, so any license needs to be generous enough to permit that). I've looked around but didn't see anything.
 
Further searching has turned up this:
https://github.com/sergeystoma/tinyvnc

It has the warning that the only visual format it supports is RAW so there's a huge amount of traffic... might be okay for my needs... I'll play around with it tomorrow. If it ends up not being okay, that's okay anyways, since I've now read the entire specification and I think I can implement a different encoding if necessary.

Here's another library I found. It looks better, but it's GPL so useless:
http://libvnc.github.io/

I'm sorry but "Free as in Freedom"? I call BS on that. "Free as in No Profit" would be much more accurate. Dictating that users can't make a profit from what you've done doesn't increase their freedom, it takes it away. I applaud open source software and sometimes contribute to it myself, but telling me what I'm allowed to do with your open source code is just being a jerk. "Here, have some help. Just kidding." GPL and all other Copyleft licenses should go die.
 
Last edited:
A while ago I stumbled on an full opensource VNC client.
IRDesktop.com I believe.

Anyways, the GNU says:

"Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish) "

So should be good enough to take an GPL source ? ;-)
 
Anyways, the GNU says:

"Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish) "

So should be good enough to take an GPL source ? ;-)

Source? My understanding is that if you use a library that's covered by GPL, you're required to release all of your own code under GPL as well, and to not charge for any of it. My rule of thumb is, if something has a license with a Copyleft (as GPL does), it may as well not exist if you're trying to make money.

I understand the thinking behind it, but I don't like it. I release sections of my own code whenever it seems insane that I had to write it because nobody had done so already.

Back on the topic of VNC... I tried out TinyVNC and ran the example application. It fell flat on its face. So I feel like my best option is just going to be rolling this from scratch. The protocol seems pretty simple.
 
I know very little about these agreements, but I know that some offer their work in order to support free software. Some are of the opinion that all or most software should be free.

One problem with this is that some of us want to make a living from some or all of our work.

Some of us are in a position where we don't have time to make software for free.

I understand that Microsoft is making huge money from something that was shown to them by a developer, and they told the developer they saw no value in it. It wouldn't surprise me a bit, as Microsoft has a history of cutting people out of their work.

This problem you face is common in the world of patents. Large companies have experts that analyze patents in order to find a legal workaround. This clearly is not in the spirit of patent law, but seems to be perfectly legal.

I'm in the process of getting a few patents and I'm working on finding ways that others will work around my ideas.

I can see the point of someone that works for free on a program and wants other to do the same, but at least he didn't become a patent troll where they sue to stop people from doing things.

Our legal system can get in the way just as much as it can protect people.
 
You know what would be really cool? A VNC app that let you very specifically set resolution and quality of the VNC broadcast. All of the VNC apps that I have tried so far don't have this option (which I assume is a limitation from OS X itself). With all of the very high-resolution displays on computers these days, a VNC session can be a real headache over a cellular data connection.
 
Source? My understanding is that if you use a library that's covered by GPL, you're required to release all of your own code under GPL as well, and to not charge for any of it.

Not true. You are required to release the source code but you can charge money for it. You just have to tell your paying customers where they can download the source code for your program and give them free access to it under the same terms as you were given when you used the software.

There is nothing in the GPL that prohibits you from charging money for money for software.
 
You know what would be really cool? A VNC app that let you very specifically set resolution and quality of the VNC broadcast. All of the VNC apps that I have tried so far don't have this option (which I assume is a limitation from OS X itself). With all of the very high-resolution displays on computers these days, a VNC session can be a real headache over a cellular data connection.

I agree. The limitation doesn't come from OS X itself, though. The FRB protocol (which is what VNC uses) simply doesn't allow for the client to specify resolution or quality - both of those are determined by the server.

Here's the protocol: http://www.realvnc.com/docs/rfbproto.pdf
 
There is nothing in the GPL that prohibits you from charging money for money for software.

Except the existence of a free market (in many parts of the world), and thus competition.

There is also nothing in the GPL that prohibits you from traveling faster than the speed of light.
 
IRDesktop let's you choose Resultion and Colors for your VNC. You can always look into it

It uses RDP (protocol created by Microsoft), not RFB (protocol created by... I forget who... Best known as what powers VNC.)

RDP allows the client to specify resolution and color, plus it allows bidirectional audio. RFB doesn't allow any of that.

Initially my app will use RFB just because there's a lot of sample implementations. I may swap over to RDP or write my own protocol if I can think of any way of making something much more optimized for the specific computer apps I want my iOS app to remotely control.
 
It uses RDP (protocol created by Microsoft), not RFB (protocol created by... I forget who... Best known as what powers VNC.)

RDP allows the client to specify resolution and color, plus it allows bidirectional audio. RFB doesn't allow any of that.

Initially my app will use RFB just because there's a lot of sample implementations. I may swap over to RDP or write my own protocol if I can think of any way of making something much more optimized for the specific computer apps I want my iOS app to remotely control.

I see, that would be great :)
Just by coincedence, do you have any library for connection to Mac devices?
Like... same protocol as Apple Remote Desktop? Instead of normal VNC ?
 
There are many companies that sell GPL software. Just because you don't think you can make money from it doesn't mean that others don't.

They are really selling their services and brand name, not the software. If I had a billionaires name and marketing budget, I think I might be able to sell boxes of air also.
 
I see, that would be great :)
Just by coincedence, do you have any library for connection to Mac devices?
Like... same protocol as Apple Remote Desktop? Instead of normal VNC ?

Apple Remote Desktop uses RFB, the same protocol as VNC. The only odd thing I've found about it is the version number that it says it's running. If you respond saying you only support RFB 003.008 it seems to work fine, though.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.