Discussion:
[mosh-devel] Blink and Mosh changes released
Carlos Cabanero
2016-06-15 15:47:35 UTC
Permalink
Hi everyone!


We’ve finally released Blink v 0.714, and most important, the code for it (
https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)


First of all, I did not merge with latest version, changes will be required
to our implementation anyway, as these were just to make sure the project
would be doable, and didn’t want to cover everything in a pile of new
commits. I’ll be focusing on fixing bugs and provide you with nicer pull
requests to Mosh during the next days. These are basically in two areas,
but nothing too big:



- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.


There is also a straightforward bug with the socket (commit 8b21ee1), that
we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.


To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.


Thanks a lot!! :)
Keith Winstein
2016-06-15 19:29:36 UTC
Permalink
Thanks, Carlos, it will be very interesting to read through the code. I'm
trying to make sure I understand the licensing implications of what you're
planning to release on the App Store. Could you please describe:

(a) Which parts of the overall Blink application are you planning to
release as open-source software, under which licenses? Which parts do you
intend to keep proprietary?

(b) What is the interface that "Mosh as a library" exports? Is there
documentation on this interface?

(c) What other libraries implement the same interface?

(d) What are the programs that implement the other side of this interface?

Best regards,
Keith
Post by Carlos Cabanero
Hi everyone!
We’ve finally released Blink v 0.714, and most important, the code for it (
https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)
First of all, I did not merge with latest version, changes will be
required to our implementation anyway, as these were just to make sure the
project would be doable, and didn’t want to cover everything in a pile of
new commits. I’ll be focusing on fixing bugs and provide you with nicer
pull requests to Mosh during the next days. These are basically in two
- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.
There is also a straightforward bug with the socket (commit 8b21ee1), that
we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.
To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.
Thanks a lot!! :)
_______________________________________________
mosh-devel mailing list
http://mailman.mit.edu/mailman/listinfo/mosh-devel
Carlos Cabanero
2016-06-15 22:00:19 UTC
Permalink
Thanks for your prompt response Keith. Hope this serves to clarify any
possible issues, and please let me know if there are any things I might
have missed:

a) Everything in Blink is Open Source already. There are no and will be no
parts kept proprietary. And it uses the same license as Mosh (GPL v3 with
OpenSSL exception). This is the only way that Mosh could be actually used
on iOS without building a separate implementation. My vision is that people
see Blink just like a very small distro with a few embedded tools to work,
and they basically trust this distribution.
a') Other pieces that integrate Blink are also important for the license
part, to avoid incompatibilities. These include: Libssh2 (BSD), OpenSSL,
Protobufs (BSD), linenoise (BSD), HTerm (BSD) and Mosh (GPL v3 with OpenSSL
and iOS exception). Also, icons are released under the CC by SA 4.0 which
is one way compatible with GPL. Fonts will be downloadable online but the
packaged ones will be OFL SIL, again GPL compatible. I think it is all
good, but I'm in process to corroborate all of this with Open Source
lawyers. If someone knows someone who could help I would appreciate that
too :)

b) The "interface" we are exporting (if it can be called like that as it is
only a bridge to keep the code separate) is only mosh_main, which can be
found in our iOS branch, the new file called terminalbridge.cc. It
instances an iOSClient object (copy of STMClient, removing stdin and stdout
to work with our custom streams).
int mosh_main(FILE *f_in, FILE *f_out, struct winsize *window_size,
const char *ip, const char *port, const char *key, const
char *predict_mode)
c) No other libraries are implementing the same interface. This is just a
bridge for mosh. The reason why the GPL still applies is because we have to
compile it as a static library. In theory, it would be possible to do a
dynamic library since iOS 8, but really, I feel comfortable (and even
relieved) with doing Blink GPL too.

d) The other side to implement this interface, or the caller of the bridge,
is our MoshSession class. This is Blink's mosh-client per se. Our Session
objects try to act like a "Process" within a Thread and have a
TerminalStream (with a "stdin", "stdout", "stderr", "windowsize", etc...),
and a main function. You can see that in the code for Blink in
Sessions/Session.m and Sessions/MoshSession.m. And then MoshSession for
example calls SSHSession, etc... So yes, I tried to replicate the basis of
a pipes and process system so that connecting other tools would be easy too
(and linenoise for example was).

And I think this is it. If anyone please see any issues or has any more
questions, please shoot!

Best
Thanks, Carlos, it will be very interesting to read through the code. I'm
trying to make sure I understand the licensing implications of what you're
(a) Which parts of the overall Blink application are you planning to
release as open-source software, under which licenses? Which parts do you
intend to keep proprietary?
(b) What is the interface that "Mosh as a library" exports? Is there
documentation on this interface?
(c) What other libraries implement the same interface?
(d) What are the programs that implement the other side of this interface?
Best regards,
Keith
On Wed, Jun 15, 2016 at 8:47 AM, Carlos Cabanero <
Hi everyone!
We’ve finally released Blink v 0.714, and most important, the code for it
(https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)
First of all, I did not merge with latest version, changes will be
required to our implementation anyway, as these were just to make sure the
project would be doable, and didn’t want to cover everything in a pile of
new commits. I’ll be focusing on fixing bugs and provide you with nicer
pull requests to Mosh during the next days. These are basically in two
- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.
There is also a straightforward bug with the socket (commit 8b21ee1),
that we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.
To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.
Thanks a lot!! :)
_______________________________________________
mosh-devel mailing list
http://mailman.mit.edu/mailman/listinfo/mosh-devel
Keith Winstein
2016-06-15 22:06:13 UTC
Permalink
Hello Carlos,

If the whole thing is GPL, that's great news! Re: lawyers, we had a good
experience dealing with the Software Freedom Law Center (softwarefreedom.org);
Aaron Williamson is the attorney who helped us draft the iOS waiver in the
first place. I'm guessing they may be able to help you as well.

Best regards,
Keith
Post by Carlos Cabanero
Thanks for your prompt response Keith. Hope this serves to clarify any
possible issues, and please let me know if there are any things I might
a) Everything in Blink is Open Source already. There are no and will be no
parts kept proprietary. And it uses the same license as Mosh (GPL v3 with
OpenSSL exception). This is the only way that Mosh could be actually used
on iOS without building a separate implementation. My vision is that people
see Blink just like a very small distro with a few embedded tools to work,
and they basically trust this distribution.
a') Other pieces that integrate Blink are also important for the license
part, to avoid incompatibilities. These include: Libssh2 (BSD), OpenSSL,
Protobufs (BSD), linenoise (BSD), HTerm (BSD) and Mosh (GPL v3 with OpenSSL
and iOS exception). Also, icons are released under the CC by SA 4.0 which
is one way compatible with GPL. Fonts will be downloadable online but the
packaged ones will be OFL SIL, again GPL compatible. I think it is all
good, but I'm in process to corroborate all of this with Open Source
lawyers. If someone knows someone who could help I would appreciate that
too :)
b) The "interface" we are exporting (if it can be called like that as it
is only a bridge to keep the code separate) is only mosh_main, which can be
found in our iOS branch, the new file called terminalbridge.cc. It
instances an iOSClient object (copy of STMClient, removing stdin and stdout
to work with our custom streams).
int mosh_main(FILE *f_in, FILE *f_out, struct winsize *window_size,
const char *ip, const char *port, const char *key, const
char *predict_mode)
c) No other libraries are implementing the same interface. This is just a
bridge for mosh. The reason why the GPL still applies is because we have to
compile it as a static library. In theory, it would be possible to do a
dynamic library since iOS 8, but really, I feel comfortable (and even
relieved) with doing Blink GPL too.
d) The other side to implement this interface, or the caller of the
bridge, is our MoshSession class. This is Blink's mosh-client per se. Our
Session objects try to act like a "Process" within a Thread and have a
TerminalStream (with a "stdin", "stdout", "stderr", "windowsize", etc...),
and a main function. You can see that in the code for Blink in
Sessions/Session.m and Sessions/MoshSession.m. And then MoshSession for
example calls SSHSession, etc... So yes, I tried to replicate the basis of
a pipes and process system so that connecting other tools would be easy too
(and linenoise for example was).
And I think this is it. If anyone please see any issues or has any more
questions, please shoot!
Best
Thanks, Carlos, it will be very interesting to read through the code. I'm
trying to make sure I understand the licensing implications of what you're
(a) Which parts of the overall Blink application are you planning to
release as open-source software, under which licenses? Which parts do you
intend to keep proprietary?
(b) What is the interface that "Mosh as a library" exports? Is there
documentation on this interface?
(c) What other libraries implement the same interface?
(d) What are the programs that implement the other side of this interface?
Best regards,
Keith
On Wed, Jun 15, 2016 at 8:47 AM, Carlos Cabanero <
Hi everyone!
We’ve finally released Blink v 0.714, and most important, the code for
it (https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)
First of all, I did not merge with latest version, changes will be
required to our implementation anyway, as these were just to make sure the
project would be doable, and didn’t want to cover everything in a pile of
new commits. I’ll be focusing on fixing bugs and provide you with nicer
pull requests to Mosh during the next days. These are basically in two
- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.
There is also a straightforward bug with the socket (commit 8b21ee1),
that we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.
To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.
Thanks a lot!! :)
_______________________________________________
mosh-devel mailing list
http://mailman.mit.edu/mailman/listinfo/mosh-devel
Carlos Cabanero
2016-06-15 22:20:18 UTC
Permalink
Thanks a lot Keith! I already contacted them, hope they reply soon too :)
Post by Keith Winstein
Hello Carlos,
If the whole thing is GPL, that's great news! Re: lawyers, we had a good
experience dealing with the Software Freedom Law Center (
softwarefreedom.org); Aaron Williamson is the attorney who helped us
draft the iOS waiver in the first place. I'm guessing they may be able to
help you as well.
Best regards,
Keith
On Wed, Jun 15, 2016 at 3:00 PM, Carlos Cabanero <
Post by Carlos Cabanero
Thanks for your prompt response Keith. Hope this serves to clarify any
possible issues, and please let me know if there are any things I might
a) Everything in Blink is Open Source already. There are no and will be
no parts kept proprietary. And it uses the same license as Mosh (GPL v3
with OpenSSL exception). This is the only way that Mosh could be actually
used on iOS without building a separate implementation. My vision is that
people see Blink just like a very small distro with a few embedded tools to
work, and they basically trust this distribution.
a') Other pieces that integrate Blink are also important for the license
part, to avoid incompatibilities. These include: Libssh2 (BSD), OpenSSL,
Protobufs (BSD), linenoise (BSD), HTerm (BSD) and Mosh (GPL v3 with OpenSSL
and iOS exception). Also, icons are released under the CC by SA 4.0 which
is one way compatible with GPL. Fonts will be downloadable online but the
packaged ones will be OFL SIL, again GPL compatible. I think it is all
good, but I'm in process to corroborate all of this with Open Source
lawyers. If someone knows someone who could help I would appreciate that
too :)
b) The "interface" we are exporting (if it can be called like that as it
is only a bridge to keep the code separate) is only mosh_main, which can be
found in our iOS branch, the new file called terminalbridge.cc. It
instances an iOSClient object (copy of STMClient, removing stdin and stdout
to work with our custom streams).
int mosh_main(FILE *f_in, FILE *f_out, struct winsize *window_size,
const char *ip, const char *port, const char *key, const
char *predict_mode)
c) No other libraries are implementing the same interface. This is just a
bridge for mosh. The reason why the GPL still applies is because we have to
compile it as a static library. In theory, it would be possible to do a
dynamic library since iOS 8, but really, I feel comfortable (and even
relieved) with doing Blink GPL too.
d) The other side to implement this interface, or the caller of the
bridge, is our MoshSession class. This is Blink's mosh-client per se. Our
Session objects try to act like a "Process" within a Thread and have a
TerminalStream (with a "stdin", "stdout", "stderr", "windowsize", etc...),
and a main function. You can see that in the code for Blink in
Sessions/Session.m and Sessions/MoshSession.m. And then MoshSession for
example calls SSHSession, etc... So yes, I tried to replicate the basis of
a pipes and process system so that connecting other tools would be easy too
(and linenoise for example was).
And I think this is it. If anyone please see any issues or has any more
questions, please shoot!
Best
Thanks, Carlos, it will be very interesting to read through the code.
I'm trying to make sure I understand the licensing implications of what
(a) Which parts of the overall Blink application are you planning to
release as open-source software, under which licenses? Which parts do you
intend to keep proprietary?
(b) What is the interface that "Mosh as a library" exports? Is there
documentation on this interface?
(c) What other libraries implement the same interface?
(d) What are the programs that implement the other side of this interface?
Best regards,
Keith
On Wed, Jun 15, 2016 at 8:47 AM, Carlos Cabanero <
Hi everyone!
We’ve finally released Blink v 0.714, and most important, the code for
it (https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)
First of all, I did not merge with latest version, changes will be
required to our implementation anyway, as these were just to make sure the
project would be doable, and didn’t want to cover everything in a pile of
new commits. I’ll be focusing on fixing bugs and provide you with nicer
pull requests to Mosh during the next days. These are basically in two
- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.
There is also a straightforward bug with the socket (commit 8b21ee1),
that we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.
To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.
Thanks a lot!! :)
_______________________________________________
mosh-devel mailing list
http://mailman.mit.edu/mailman/listinfo/mosh-devel
Carlos Cabanero
2016-08-22 23:06:48 UTC
Permalink
Thanks for adding us to the webpage!! Working full speed for release ;)
Post by Carlos Cabanero
Thanks a lot Keith! I already contacted them, hope they reply soon too :)
Post by Keith Winstein
Hello Carlos,
If the whole thing is GPL, that's great news! Re: lawyers, we had a good
experience dealing with the Software Freedom Law Center (
softwarefreedom.org); Aaron Williamson is the attorney who helped us
draft the iOS waiver in the first place. I'm guessing they may be able to
help you as well.
Best regards,
Keith
On Wed, Jun 15, 2016 at 3:00 PM, Carlos Cabanero <
Post by Carlos Cabanero
Thanks for your prompt response Keith. Hope this serves to clarify any
possible issues, and please let me know if there are any things I might
a) Everything in Blink is Open Source already. There are no and will be
no parts kept proprietary. And it uses the same license as Mosh (GPL v3
with OpenSSL exception). This is the only way that Mosh could be actually
used on iOS without building a separate implementation. My vision is that
people see Blink just like a very small distro with a few embedded tools to
work, and they basically trust this distribution.
a') Other pieces that integrate Blink are also important for the license
part, to avoid incompatibilities. These include: Libssh2 (BSD), OpenSSL,
Protobufs (BSD), linenoise (BSD), HTerm (BSD) and Mosh (GPL v3 with OpenSSL
and iOS exception). Also, icons are released under the CC by SA 4.0 which
is one way compatible with GPL. Fonts will be downloadable online but the
packaged ones will be OFL SIL, again GPL compatible. I think it is all
good, but I'm in process to corroborate all of this with Open Source
lawyers. If someone knows someone who could help I would appreciate that
too :)
b) The "interface" we are exporting (if it can be called like that as it
is only a bridge to keep the code separate) is only mosh_main, which can be
found in our iOS branch, the new file called terminalbridge.cc. It
instances an iOSClient object (copy of STMClient, removing stdin and stdout
to work with our custom streams).
int mosh_main(FILE *f_in, FILE *f_out, struct winsize *window_size,
const char *ip, const char *port, const char *key, const
char *predict_mode)
c) No other libraries are implementing the same interface. This is just
a bridge for mosh. The reason why the GPL still applies is because we have
to compile it as a static library. In theory, it would be possible to do a
dynamic library since iOS 8, but really, I feel comfortable (and even
relieved) with doing Blink GPL too.
d) The other side to implement this interface, or the caller of the
bridge, is our MoshSession class. This is Blink's mosh-client per se. Our
Session objects try to act like a "Process" within a Thread and have a
TerminalStream (with a "stdin", "stdout", "stderr", "windowsize", etc...),
and a main function. You can see that in the code for Blink in
Sessions/Session.m and Sessions/MoshSession.m. And then MoshSession for
example calls SSHSession, etc... So yes, I tried to replicate the basis of
a pipes and process system so that connecting other tools would be easy too
(and linenoise for example was).
And I think this is it. If anyone please see any issues or has any more
questions, please shoot!
Best
Thanks, Carlos, it will be very interesting to read through the code.
I'm trying to make sure I understand the licensing implications of what
(a) Which parts of the overall Blink application are you planning to
release as open-source software, under which licenses? Which parts do you
intend to keep proprietary?
(b) What is the interface that "Mosh as a library" exports? Is there
documentation on this interface?
(c) What other libraries implement the same interface?
(d) What are the programs that implement the other side of this interface?
Best regards,
Keith
On Wed, Jun 15, 2016 at 8:47 AM, Carlos Cabanero <
Hi everyone!
We’ve finally released Blink v 0.714, and most important, the code for
it (https://github.com/blinksh/blink) and our Mosh changes (
https://github.com/blinksh/mosh), including build scripts too (
https://github.com/blinksh/build-mosh)
First of all, I did not merge with latest version, changes will be
required to our implementation anyway, as these were just to make sure the
project would be doable, and didn’t want to cover everything in a pile of
new commits. I’ll be focusing on fixing bugs and provide you with nicer
pull requests to Mosh during the next days. These are basically in two
- Mosh as a library, with iOSClient as a subclass of STMClient and
makefiles with BUILD_IOS_CONTROLLER flag.
- Mosh multithreaded.
There is also a straightforward bug with the socket (commit 8b21ee1),
that we triggered because iOS always closes sockets when going to the
background. I will submit that one straight to GH as could help make Mosh
more stable in this corner cases.
To keep it clean, I will start the conversation on those in a separate
thread, and just keep this one for any issues related to Blink-Mosh
licensing, attributions, or compatibilities we might have.
Thanks a lot!! :)
_______________________________________________
mosh-devel mailing list
http://mailman.mit.edu/mailman/listinfo/mosh-devel
Loading...