[Design] [cosmo] [proposal] [last call] Sign up for an account + adding the currently viewed collection

Travis Vachon travis at osafoundation.org
Tue Apr 10 10:11:13 PDT 2007


>
> In the previous discussions about how to do this, there were a  
> three possible approaches we discussed:
>
> 1. Adding the subscription on the server-side after the account is  
> created, but before it's activated.
>
> The benefits of this approach are obvious -- the subscription is  
> added to the account right away, and nothing can happen in between  
> creating the account, getting the e-mail, and verifying/activating  
> the account that would cause the subscription to be lost.
>
> IIRC, the major downside of this approach is that it was deemed to  
> be difficult to implement because of the inflexibility of our  
> security model. (I believe there were also concerns that allowing  
> subscriptions to be added to a not-yet-activated account could be a  
> security risk, which seemed a little dubious to me.)

There are actually a couple different ways we could implement this one:

a) Add subscription information to the CMP data model, so that we  
could create users with subscriptions in one step.

I don't like this, and I know Brian didn't like it when I proposed  
it, as it mixes up our data models. Information about content is not  
currently part of CMP, and it would be a pretty big departure from  
the protocol to do this. That said, I'm open to discussing it.

b) Punch a hole in our security to allow subscriptions to be added to  
unactivated accounts. This could be done by:

i) Building a special exception for certain operations into the  
method that decides whether or not a user is activated (and thus  
whether or not a client can authenticate as the given user). This  
seems really crufty and ugly, building information about our  
protocols into our auth code.

ii) Allow anonymous clients to add a subscription to a user. This is  
definitely a security hole. Spammer add bogus advertising  
subscriptions to arbitrary calendars, Cosmo becomes object of  
ridicule. Out of the question in my mind.

Any other ideas?

>
> 2. Storing the information about a 'subscription to be added' in a  
> browser cookie, and adding the subscription after the user actually  
> logs on to the new account.
>
> The benefit of this approach is that it doesn't require any server- 
> side work.
>
> The downside is the inherent unreliability of cookies. For example,  
> if the users completes the account-activation process from a  
> different browser (e.g., goes home from work and checks e-mail  
> there), the subscription will not get added to their account.
>
> The bottom line would be that we can't assume the process would  
> always work, and end-users in those cases would be left wondering  
> why it didn't "add this
> subscription" like it said it would.

Agreed, I don't like this either.

>
> 3. Change the activation e-mail to include information about the  
> desired subscription, and put it into the URL for the confirmation  
> page.
>
> The benefit is that approach is that the info for the subscription  
> is in the actual e-mail, so it comes along with the users to the  
> activation and login pages -- no matter where they log in to the  
> app from.
>
> The only drawback I can think of is that it would require some  
> amount of server-side work. There may be others. I would appreciate  
> feedback from Travis on this.
>

Remember, account activation is optional, so this would only solve  
half the problem (the whole problem for Hub, since it uses account  
activation). We could have separate logic for the non-account- 
activation scenario, but that seems overly complicated

4. Use the preferences system to implement this feature.

We built out a system for storing arbitrary key-value pairs on the  
server side to implement preferences, couldn't we use this instead of  
a cookie to implement option 2?

The one downside is an extra server call, but we could have the code  
only check for a pending subscription the first time a user logs in.  
We already do this to add a default calendar to a user's account, so  
that would probably be a reasonable location for this logic. This  
would mean the Web UI performs a check for pending subscriptions any  
time the user has no calendars, but I think that's a pretty minimal  
cost.

Thoughts?

>> I believe we had a discussion on the list to see if it was  
>> necessary to keep the out of the box 'Chandler Hub' calendar. I  
>> think for now, I don't see much harm to keep a blank calendar for  
>> the CC users. When we introduce remove, perhaps they would be able  
>> to remove it from their list?
>> Any thoughts on this proposal?
>> -Priscilla
>
> I think it's a good idea anyway to give CC users their own empty  
> calendar in the Web UI. It's a way of encouraging them to try it  
> out themselves.

+1, especially since there is currently no mechanism for adding  
calendars.


-Travis



More information about the Design mailing list