JiscMail Logo
Email discussion lists for the UK Education and Research communities

Help for MOONSHOT-COMMUNITY Archives


MOONSHOT-COMMUNITY Archives

MOONSHOT-COMMUNITY Archives


MOONSHOT-COMMUNITY@JISCMAIL.AC.UK


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

MOONSHOT-COMMUNITY Home

MOONSHOT-COMMUNITY Home

MOONSHOT-COMMUNITY  December 2011

MOONSHOT-COMMUNITY December 2011

Options

Subscribe or Unsubscribe

Subscribe or Unsubscribe

Log In

Log In

Get Password

Get Password

Subject:

Re: Refactoring the moonshot-ui software

From:

Sam Hartman <[log in to unmask]>

Reply-To:

Sam Hartman <[log in to unmask]>

Date:

Wed, 7 Dec 2011 07:56:58 -0500

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (105 lines)

>>>>> "Pete" == Pete Fotheringham <[log in to unmask]> writes:

    Pete> On 06/12/2011 22:36, Sam Hartman wrote:
    >>>>>>> "Pete" == Pete
    >>>>>>> Fotheringham<[log in to unmask]> writes:
    >> 
    >> 
    >> >> 2) You can't lose the existing libmoonshot interfaces. I mean
    >> you >> can change their call signatures or names if you like, but
    >> the >> functionality of a client application to select an
    >> identity with >> possible prompting is required. That's kind of a
    >> major use case >> of the system. So, your architecture needs to
    >> describe how the >> interactions between the application and the
    >> UI are handled. This >> is presumably either through the identity
    >> server or another >> library.
    Pete> Agreed. Modified the text and the diagram to address this (I
    Pete> believe).
    >> 
    >> 
    >> How does this interact with the Mac design?  One of the
    >> advantages of keychain on the Mac was that it avoided DBUS.  What
    >> RPC are you using between the UI and the app on the Mac then?

    Pete> Sam

    Pete> Thanks for your input - getting to the 'right answer' is a lot
    Pete> easier when ideas can be bounced off other people.

    Pete> In the initial implementation, the RPC boundary is between
    Pete> libmoonshot and the app, moonshot-ui. That doesn't allow a:
    Pete> different backend stores or b: client apps accessing
    Pete> identities without any UI - hence the refactoring.


So, when I got to my office this morning, Kevin was waiting with a bunch
of questions about this design.
We had a bit of a discussions and he pointed out a number of things.

First, let's separate the discussion of RPC boundaries from class
boundaries.

It's not actually necessary to have an RPC boundary to have different
storage backends.  You simply need to have an abstract interface and be
able to instantiate multiple storage backend objects.

We don't even need loadable storage backend plugins: we'll know at
compile time what storage backends we need.  We do need a well defined
abstract interface. That could just as easily take the form of a .h
file, vala objects as it could an RPC.

Second, the single RPC boundary doesn't actually stop you from having
headless operation. On Linux at least you can have a program that
optionally pops up UI only when needed; doing so without opening a
connection to the X display when no UI is required is a bit involved but
certainly possible.

I don't know if that's true about Mac and Windows, but you could just as
easily share a bunch of code and start either the headless or
non-headless version of the moonshot identity process if your OS doesn't
support the idea of a process that only sometimes generates UI. However,
I'm fairly sure that both on Mac and Windows you can have a process that
optionally generates UI.

Also, Kevin reminded me of a future goal of the library. One of the
items dropped from the first SOW and not added to this SOW was an RPC
interface that isolated applications from usernames and passwords. The
goal of that RPC was that the identity application would never expose a
password to an application (although applications could expose passwords
to the identity app). INstead, the identity app would directly generate
EAP tokens.  That is still on our long-term radar. The design
implications today is that there needs to be a place to run core code
independent of the storage server and application.  I guess that could
be in some library that always gets linked into the storage server,
although it seems more natural for it to be in an app that houses the
core logic, optionally the UI and the storage server.

I was not previously aware you were considering a design where the UI
ran in-process with the application.  That can't work. There is a hard
abstraction (the GSS-API, RFC 2743) between Moonshot and the rest of the
application. We cannot ask applications to change except through
changing the GSS-API through a standards process. Even if we do change
the GSS-API, we have to support existing unchanged applications;
backward-incompatible changes are not on the table. That abstraction
does not permit us to ask an application to present UI, and even if it
did, we would not control the UI presented.  So, in effect you're asking
to present UI as part of a library call without the application's
cooperation. You can technically do that on Unix: you can start up your
own display connection and main loop in the library. There are a lot of
disadvantages to doing this. I don't know if GTK uses X or is more
native on the Mac; if it is more native there then it's probably not an
option at all.  Based on what I know of COM threading models, my guess
is that Windows does not expect libraries to pop UI except through well
defined interfaces like COM or .net with the cooperation of the
application.  Even if you can do it, there are significant build and
deployment concerns I have with linking GTK into arbitrary Windows
applications.
So, I don't think  in-application UI is something we want to do.

In conclusion, I don't see the need for more than one RPC boundary. I do
see a need for non-storage-server code running outside the application,
at least in the future. I think an identity selector app that houses the
storage server, and when needed the UI component makes sense as a
design, but that's just a guess. No in-application UI is a hard
requirement and one RPC boundary is a very strong desire.

Top of Message | Previous Page | Permalink

JiscMail Tools


RSS Feeds and Sharing


Advanced Options


Archives

March 2022
December 2021
October 2021
September 2021
August 2021
June 2021
April 2021
February 2021
January 2021
December 2020
November 2020
October 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
January 2020
November 2019
October 2019
September 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
December 2018
June 2018
April 2018
November 2017
October 2017
September 2017
August 2017
July 2017
May 2017
April 2017
March 2017
February 2017
November 2016
October 2016
August 2016
July 2016
June 2016
May 2016
March 2016
February 2016
January 2016
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010


JiscMail is a Jisc service.

View our service policies at https://www.jiscmail.ac.uk/policyandsecurity/ and Jisc's privacy policy at https://www.jisc.ac.uk/website/privacy-notice

For help and support help@jisc.ac.uk

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager