[15:48:36] --- xiaodong has joined
[15:48:58] --- marcos has joined
[15:49:27] * xiaodong has changed the subject to: EAI WG meeting, San Diego[Room Spinnaker]
[15:50:10] --- Yangwoo Ko has joined
[15:54:50] --- yone has joined
[15:59:34] --- Barry Leiba has joined
[15:59:44] --- arnt has joined
[16:00:32] --- cnewman@jabber.org has joined
[16:01:02] --- fujiwara has joined
[16:01:15] --- Glenn Parsons has joined
[16:01:49] --- alexeymelnikov has joined
[16:02:17] --- JeffYeh has joined
[16:02:34] --- hardie@jabber.qualcomm.com has joined
[16:02:48] <hardie@jabber.qualcomm.com> Harald starts the meeting
[16:02:57] <hardie@jabber.qualcomm.com> notes that there is no tutorial material in this meeting'
[16:03:01] <hardie@jabber.qualcomm.com> This is all about open issues
[16:03:11] <hardie@jabber.qualcomm.com> Agenda slide up now
[16:03:15] --- kmurchison has joined
[16:03:22] --- healthyao has joined
[16:03:26] <hardie@jabber.qualcomm.com> lc resolutions,
[16:03:40] <hardie@jabber.qualcomm.com> open issues with smptext, utf8headers, downgrade, end-system operations
[16:03:47] <hardie@jabber.qualcomm.com> (pop IMAP mailing lists)
[16:03:48] --- pguenther has joined
[16:04:00] --- Seung Yi has joined
[16:04:01] <hardie@jabber.qualcomm.com> related issues, other documents: encapsulation, mailto, scenarios
[16:04:02] <hardie@jabber.qualcomm.com> summary
[16:04:06] <hardie@jabber.qualcomm.com> end
[16:04:10] --- asullivan has joined
[16:04:14] --- alexeymelnikov has left
[16:04:16] * pguenther starts scribing taking over from Ted
[16:05:10] <pguenther> comments on the agenda?
[16:05:10] --- cyrus_daboo has joined
[16:05:21] --- randy has joined
[16:06:14] --- aaronstone has joined
[16:06:23] <pguenther> status of work:
[16:06:32] <pguenther> framework finished WGLC
[16:06:39] --- Lisa has joined
[16:06:44] <pguenther> core docs in discussions (SMTP, header, downgrade)
[16:06:52] <pguenther> drafts for other supporting stuff
[16:07:01] <pguenther> DSN coming soon
[16:07:18] <pguenther> implementation tests have started
[16:07:21] --- JeffYeh has left: Computer went to sleep
[16:07:27] <pguenther> (CDNC)
[16:07:52] --- JeffYeh has joined
[16:08:00] --- tonyhansen has joined
[16:08:13] <pguenther> the implementors have posted on list, so contact them if interested in their experiences
[16:08:22] <pguenther> framework: issues list
[16:08:36] --- resnick has joined
[16:08:46] <pguenther> assumption: the silent ones agree/find it acceptable
[16:09:02] <pguenther> issue tracker: https://rt.psg.com/
[16:09:17] <pguenther> user/password: ietf/ietf
[16:10:17] <pguenther> harald summarizes the statuses of the issues that were raised (check the tracker for details)
[16:10:22] --- alexeymelnikov has joined
[16:10:51] <pguenther> harald: general email infrastructure problems are not working group problems
[16:11:32] <pguenther> anyone with to speak on the issues?
[16:11:54] <pguenther> some are still open: e.g. #1397
[16:12:27] <pguenther> editor will make changes based on the existing mailing list sdiscussions
[16:12:42] <pguenther> next step: john will do -03 rev
[16:12:55] <pguenther> chair will issue WGLC _on_those_fixes_
[16:13:00] <pguenther> _no_new_issues
[16:13:20] <pguenther> if necessary, -04 will be issued
[16:13:33] <pguenther> then passed to IESG for approval
[16:13:37] <pguenther> SMTP extensions
[16:13:37] <pguenther> ----
[16:14:07] <pguenther> resolved: identifier is UTF8SMTP
[16:14:34] --- Seung Yi has left
[16:14:35] <pguenther> open issue: changes to DSN extension?
[16:14:40] --- doug.otis@gmail.com has joined
[16:14:50] <Yangwoo Ko> "Framework doc" will be shipped to IESG no later than the end of this year.
[16:15:14] <pguenther> Chris Newman: we have extensions that add parameters to SMTP MAIL FROM and RCPT TO
[16:15:52] <pguenther> should the UTF8SMTP draft look at published extensions and loosen syntax to permit UTF-8 in _some_ parameters?
[16:16:03] <pguenther> in particular: AUTH parameter on MAIL FROM
[16:16:57] <pguenther> any other issues on UTF8SMTP?
[16:17:16] <alexeymelnikov> I will be revising SMTP AUTH soon, so I can try to address UTF-8 in the AUTH parameter
[16:17:41] <pguenther> chris: due diligence
[16:18:40] <pguenther> chris: ORCPT is the other big one, but that's being addressed in DSN rev
[16:19:07] <randy> Alexey -- it might be better to do it in the EAI document, so as not to introduce a dependency on EAI into SMTP AUTH
[16:19:27] <pguenther> Chris: which EAI needs DSN
[16:19:28] <randy> (Since EAI will be Ex, not stds)
[16:19:40] <pguenther> s/which/why/
[16:19:51] <pguenther> draft standard DSN RFCs are 7bit only
[16:20:18] <pguenther> original UTF-8 rcpt address important to preserve on bounce for end-user correlation
[16:20:45] <pguenther> - as we have more address translation in system, preserving them in bounces important
[16:20:50] <pguenther> technical issues:
[16:21:11] <pguenther> use new 'utf-8' address type and URI-style %encoding on downgrade
[16:22:36] <pguenther> message/delivery-status --> messages
[16:22:54] <pguenther> me: note that ORCPT value is xtext, so kind of double-encoding would occur
[16:23:02] <pguenther> arg
[16:23:13] <pguenther> message/delivery-status --> message/utf-8-delivery-status
[16:23:49] <pguenther> other option to use message/delivery-status; charset=utf-8
[16:24:05] <pguenther> but that hard to use in many architectures
[16:24:21] <pguenther> for content return:
[16:24:29] <pguenther> message/rfc822 vs message/utf-8
[16:24:53] <pguenther> leaning towards message/utf-8 due to interaction with IMAP BODYSTRUCTURE interaction
[16:25:37] <pguenther> if any unextended IMAP server hit a message/rfc822 with UTF-8 addresses, the returned BODYSTRUCTURE would probably give IMAP clients fits
[16:25:59] <pguenther> need localized & i-default error text
[16:26:12] <pguenther> - end-user sees DSNs, needs comprehensible reason string
[16:26:13] <Yangwoo Ko> What is "fits" ?
[16:27:01] <pguenther> reference to epileptic fit, I think
[16:28:35] <Yangwoo Ko> pguenther: thanks.
[16:28:49] <pguenther> me: how to know which language to return?
[16:28:52] <randy> "give clients fits" means clients would be confused, may crash or behave poorly
[16:29:34] <pguenther> chris: Alexey's draft has LANG command for session and a LANG parameter for MAIL command for the transaction
[16:29:47] <pguenther> Ted: this could have come up before EAI. Why didn't it?
[16:30:01] <pguenther> Chris: there has been SMTP LANG extensions floating around for years
[16:30:22] <pguenther> as a server vendor, have had requests for this
[16:31:11] <pguenther> primarily from Japanese customers
[16:31:15] --- tonyhansen has left
[16:31:44] <pguenther> no comments from the room
[16:31:51] <pguenther> (any from jabber?)
[16:31:58] <pguenther> -------
[16:32:05] <pguenther> header draft
[16:33:26] <pguenther> resolved issues:
[16:33:43] <pguenther> - marker on messages: "UTF8SMTP: UTF8" header field
[16:34:09] <pguenther> - "UTF8SMTP: downgrade" for downgraded messages
[16:34:35] <pguenther> - I18mail address *always* has angle brackets
[16:34:52] <pguenther> open issues:
[16:35:03] <pguenther> - alt-address representation
[16:35:10] <pguenther> - UTF-8 in MIME headers
[16:35:15] <pguenther> - others....?
[16:36:21] <pguenther> JohnK: when 1123 added <user@domain> sans leading phrase, some MUAs used a trick to parse these
[16:36:35] <pguenther> that trick will blow up on the proposed alt-addr representation
[16:36:49] <pguenther> chris: propose we take a hum on using the proposed rep
[16:37:43] <resnick> Can someone give me a quick explanation of why we want a UTF8SMTP header?
[16:37:55] <pguenther> ted: wonky headers inserted by virus checkers. Are there people in the room or on the list who know or are involved
[16:38:26] <marcos> pete: explicit marker. Redundant, but useful.
[16:38:30] <hardie@jabber.qualcomm.com> resnick: tells you whether it is utf8 or has been downgraded
[16:38:48] <pguenther> if so, could they check whether they already use the proposed syntax or do something with them
[16:38:51] <hardie@jabber.qualcomm.com> can tell you if it started ascii--as Harald said, complete to have such, though no use case springs to mind
[16:39:00] <resnick> It's redundant, but that means it might disagree with reality.
[16:41:22] <pguenther> randy: worried by syntax
[16:42:14] <pguenther> harald: takes hum for support of the syntax
[16:42:34] <pguenther> room in favor, to be taken to list
[16:43:04] <pguenther> johnk: another proposal for the marker header: use MIME-Version: 2.0
[16:43:41] <pguenther> pete: worried about why we have this header
[16:44:04] <pguenther> johnk: we've been here this before, so why not be here before with the old one
[16:45:24] <pguenther> chris: will anyone actually implement this as other than MUST generate, MUST ignore?
[16:46:00] <pguenther> harald: does anyone have a *use* for this marker?
[16:47:02] <pguenther> does anyone recall why that header was added?
[16:47:37] <pguenther> randy: useful strictly for debugging
[16:48:06] <pguenther> tony: optimization for UTF8 case?
[16:48:06] <arnt> if useful for debugging, it should be a REceived feature so we'd see _who_ did the UIGO conversion
[16:48:13] <pguenther> don't have to scan everyhting
[16:48:17] <arnt> RECEIVED header, I meant
[16:48:39] <arnt> UTF8 in
[16:48:47] <resnick> heh
[16:49:36] <pguenther> me: new received: via type? Received: via UTF8SMTP ?
[16:49:40] <pguenther> randy: likes it
[16:49:44] <pguenther> johnk: like it too
[16:49:46] <pguenther> but
[16:50:45] <pguenther> harald: so, change SMTP doc to register UTF8SMTP via type?
[16:51:07] <pguenther> ted: but this was inserted by MUA?
[16:51:40] <hardie@jabber.qualcomm.com> Sorry, I didn't use my name at the mic; apologies
[16:52:04] <pguenther> randy: not a problem, because MUA uses UTF8SMTP to submit
[16:52:25] <randy> I also apologize for not saying my name
[16:52:29] <pguenther> alexey: recall that chris registered ESMTPA/ESMTPS/ESMTPSA/... via types
[16:52:52] <pguenther> do we have to spray you with water or smack you on the nose with a rolled up newspaper?
[16:53:07] <pguenther> harald offers choices:
[16:53:14] <pguenther> 1) leave UTF8SMTP header field in
[16:53:44] <pguenther> one vote
[16:53:55] <pguenther> 2) take it out
[16:54:00] <pguenther> 10 votes
[16:54:06] <pguenther> 3) mime-version 2.0
[16:54:06] <pguenther> none
[16:54:11] <pguenther> 4) can't decide
[16:54:12] <pguenther> 5
[16:54:44] <pguenther> harald: will take proposal to list to take it out
[16:55:04] <pguenther> next open issue:
[16:55:10] <pguenther> UTF-8 in MIME headers
[16:55:11] <randy> (Instead of Mime-Version: 2.0, why not Mime-Version 10? Or X?)
[16:55:45] <pguenther> chris: we have real mess with filenames in mime headers (content-disposition)
[16:55:45] <hardie@jabber.qualcomm.com> Mime-Version: UTF8
[16:55:55] * resnick cringes
[16:56:12] <pguenther> would be real good if we deprecated the existing coding methods and replaced them with unencoded UTF-8
[16:57:09] <pguenther> pete: non-controversial to say we want that, but what's the downgrade? deprecate 2231 and use 2047?
[16:57:11] <pguenther> chris: yep
[16:57:30] --- edmon has joined
[16:57:40] <pguenther> pete: worried about _us_ (EAI WG) deprecating 2231
[16:57:58] <pguenther> William Leibzon: what about other MIME using groups?
[16:58:48] <pguenther> someone else whose name I missed: makes downgrade much harder; have to walk MIME structure, go to 2231
[16:59:03] <pguenther> allow in mime-version: 2.0 ?
[16:59:19] <yone> someone->kazunori fujiwara
[16:59:28] <pguenther> thank you
[17:00:03] <pguenther> straw poll: most people don't know whether we should do this
[17:01:15] <pguenther> straw poll #2: 2231 vs 2047 vs don't know? Answer: don't know
[17:02:05] <alexeymelnikov> Excuse my ignorance: Is UTF8SMTP header field is the same as Header-Type in draft-ietf-eai-utf8headers-02.txt?
[17:02:35] <pguenther> johnk: or we could jsut drop the filename parameter when it contains non-ASCII
[17:02:49] <pguenther> downgrade doc
[17:03:14] <pguenther> resolved: conversion, not encapsulation: target is ASCII mail users
[17:03:19] <pguenther> open issues:
[17:03:38] <pguenther> - downgrade: header fields for storage of prev-converted data
[17:03:40] <JeffYeh> Alex: yes, but a little bit change
[17:03:45] <hardie@jabber.qualcomm.com> Aside: does anyone use form-data in content dispositions in email?
[17:03:53] <pguenther> - representation of utf8 address after conversiom?
[17:04:08] <resnick> Alexey: Yes, it just didn't get fixed in a few places.
[17:04:12] <pguenther> - bounce vs leave out when addresses in header donm't have alt-address
[17:04:17] <alexeymelnikov> JeffYeh: Thanks!
[17:04:24] <pguenther> - headling of 2047/2231 in header when already present
[17:04:28] <pguenther> - MIME body part headers
[17:04:30] <pguenther> - other?
[17:04:46] <pguenther> anyone have other issues on jabber?
[17:05:29] <pguenther> chris: should be selective about data for which we preserve the pre-conversion form
[17:05:58] <pguenther> thinks we should preserve original addresses and leave out everything else
[17:06:21] <pguenther> chris: don't need to preserve which header had the utf8 form
[17:07:07] <randy> Chris says we need to preserve the mapping of ut8-address to ascii-address
[17:07:28] <pguenther> i.e., don't need to record that a given utf8 address appeared in the 'to' header but just that a given ascii address was the alt of particular utf8 address
[17:07:51] <pguenther> pete: worried when stuff it isn't perfectly reversible
[17:08:06] <alexeymelnikov> +1 on Pete's concern
[17:08:17] <pguenther> pete: only stuff we can't downconvert are addresses
[17:08:41] <pguenther> pete: so, use 2047/2231 for others and downgrade header for addresses only
[17:09:09] <pguenther> william: prefer encapsulation
[17:09:14] <pguenther> harald: rejected by list
[17:10:32] <pguenther> harald: DKIM is problem; so don't go there?
[17:11:06] <pguenther> pete, please repeat your comment here
[17:11:37] <resnick> DKIM is just like any signing/encrypting situation:
[17:11:54] <pguenther> harald: consensus on keeping address original forms but not other headers
[17:12:00] <resnick> The only choice is to encapsulate and you won't be able to verify anything outside of the encapsulation.
[17:12:14] <resnick> That means DKIM can't verify at the server level. Bummer, but that's what you get.
[17:12:32] <pguenther> downgrade everything at gateway before signing...?
[17:13:41] <randy> Include two DKIM hashes: one on original values and one on downgraded ones?
[17:14:11] <resnick> My comment applied to downgrade that might want to happen *after* signing.
[17:15:05] <randy> So maybe the signer should include a DKIM signature on a downgraded version?
[17:15:41] <pguenther> harald: what to do with header address w/o alt-address? drop address or bounce?
[17:16:00] <pguenther> johnk: uncomfortable with anything but bounce
[17:16:05] <pguenther> less so with leaving a comment
[17:16:30] <pguenther> barry: how is this different from messages to N people where M bounce?
[17:16:40] <pguenther> johnk: change to header
[17:17:55] <pguenther> daveC: this is effort to enhance mail system, not replace it, right? Dropping addresses/headers seems like crossing of fine-line into having two email systems that are being gatewayed
[17:18:44] <pguenther> pete: really think deleting headers is Wrong Thing. Violation of envelope/header separation?
[17:18:58] <pguenther> randy: agrees with john+pete
[17:19:27] <pguenther> randy: bouncing important during upgrade, so that people know how to fix things
[17:20:23] <pguenther> barry: sender doesn't care or screwed up, or address _has_ no equiv; no way to reply, loss is a given; sender didn't provide alternate, would still prefer to deliver
[17:20:30] <marcos> Is there any precedence case of header deletion in the specs?
[17:21:35] <pguenther> Yao: prefer bounce; alternative sends useless message
[17:21:50] <arnt> he seemed to say a lot mroe than that? ;)
[17:22:02] * pguenther glowers
[17:23:01] <pguenther> barry: bouncing may put sender in odd situation where they may need to pull address and resend, no?
[17:23:10] <pguenther> ned freed: deja vu all over again
[17:23:26] <pguenther> downgrading in the 8bit mime case similar
[17:23:44] <pguenther> bouncing is problematic: blowback spam (aka joe jobs)
[17:24:08] <pguenther> confidence in anti-spam required?
[17:24:30] <pguenther> randy: do we really have another choice?
[17:24:50] <pguenther> randy: proposals for better bounces exist
[17:25:11] <pguenther> randy: deleting header or address is worst case, 'cause neither end sees the change
[17:25:22] <pguenther> ned: so annotate the removal in the message
[17:26:28] <pguenther> Yao: bouncing lets sender improve the situation; retry with ascii address, etc
[17:26:31] <Yangwoo Ko> Is it impossible to bounce and forward-to-others without deleting headers?
[17:27:00] <pguenther> bounce doesn't require deleting
[17:27:15] <pguenther> Ted: "learning experience for the user" is _not_ a good thing
[17:27:20] <pguenther> very expensive
[17:27:59] <pguenther> ted: very rare that people will have control of stuff in the middle, or even be aware of it
[17:28:41] <pguenther> ted: suggest that WG make it task to find a third solution
[17:29:19] <pguenther> randy: DSN extensions provide tools for recognizing bounces
[17:29:36] <pguenther> tie DSN support into UTF8SMTP support?
[17:30:34] <pguenther> chris: the model for email is that envelope is transport, header is "commentary", not related to transport
[17:30:49] <pguenther> is bouncing based on content a violation of the model?
[17:30:53] --- Glenn Parsons has left
[17:31:20] * resnick now agrees with Chris on this
[17:31:54] <pguenther> given address books, bouncing based on headers may make it impossible to send a message to mixed EAI and non-EAI users
[17:33:28] <pguenther> william: bounce is best of bad choices so far; drafts for each alternative?
[17:34:18] <pguenther> harald: strong opinion in room that dropping header is bad
[17:34:29] <pguenther> pete: dropping includes downgrade header?
[17:34:39] <pguenther> harald: doesn't matter, strong against either way
[17:34:39] <resnick> So long as you get the Downgraded header, I think deleting the original and not bouncing is fine with me.
[17:34:52] <pguenther> harald: bouncing has problems
[17:35:04] <pguenther> harald: <need magic here>
[17:35:48] <pguenther> barry: require BATV?
[17:35:55] <pguenther> moving on
[17:36:00] <Lisa> Ignorant question: What's BATV?
[17:36:03] <pguenther> end-system docs:
[17:36:06] <arnt> if it were possible to ask a recipient's MX for the old address given the new, would this entire problem go away?
[17:36:32] <pguenther> arnt: that implies always have mapping, no?
[17:36:34] <cnewman@jabber.org> How about this alternative: To: "International Address =?encoded-utf8@utf8?=" :;
[17:36:42] <randy> Having only a downgraded header may result in more user confusion, since it may not be clear that the message wasn't delivered to some recipients
[17:36:45] <arnt> yes
[17:37:02] <pguenther> POP3: no open issues
[17:37:44] <pguenther> IMAP: waiting on IMAP ENABLE draft
[17:37:46] <pguenther> ?
[17:38:00] <resnick> IMAP waiting on downgrade and DSN
[17:38:16] <pguenther> mailing lists: randy taking on this draft
[17:38:40] <resnick> Cyrus: Contributing a draft on a "UTF8 IMAP".
[17:38:46] <pguenther> has open issues, randy given free reign for now
[17:38:54] <pguenther> <insert evil laugh>
[17:39:02] <pguenther> pete: thank you
[17:39:03] <resnick> (I think Cyrus's draft might be equivalent to the ENABLE idea.)
[17:39:04] <hardie@jabber.qualcomm.com> this fan out issues for mailing lists will be not so much fun
[17:39:11] <pguenther> other docs
[17:39:13] <Lisa> Sorry, I can't quite picture Randy laughing evilly.
[17:39:26] <pguenther> forward as attachment in scope?
[17:39:49] <resnick> I can picture Randy wringing his hands with an evil smile. :)
[17:39:55] <pguenther> encapsulation: needed for DSN content return; adopt as WG doc?
[17:40:05] <pguenther> pete: +1
[17:40:23] <pguenther> mailto: URI
[17:40:30] <pguenther> wait until core set published?
[17:41:00] <hardie@jabber.qualcomm.com> unless you are skiiing and it is a biathalon
[17:41:03] <pguenther> scenarios doc: polish and publish?
[17:42:13] <randy> Do we need encapsulation for DSN content return if we use a new Content Type such as Message/utf-8-delivery-status, as Chris suggested?
[17:42:40] <pguenther> ted: volunteers for action item, but needs help: lots of other IETF stuff thinks it knows what an email address looks like
[17:43:48] <cyrus_daboo> Ted: vCard/iCalendar both use email addresses in various ways.
[17:44:35] <hardie@jabber.qualcomm.com> Lisa had mentioned vCard as well. Netnews is also out there
[17:45:01] <marcos> xmpp
[17:45:30] <randy> Isn't xmpp already utf8 clean?
[17:45:48] <cyrus_daboo> Will sieve want to have separate tests for the utf8 and ascii addresses?
[17:45:49] <marcos> dunno. Thus for Ted's list.
[17:46:03] <pguenther> DNS records (SOA)
[17:46:35] <pguenther> johnk: clarification on the instructions to him: what should he do for items that are "resolution uncertain"
[17:46:40] <marcos> Not only SOA, RP Record, too
[17:46:56] <pguenther> yeah, but SOAs are used...
[17:47:03] <pguenther> ;)
[17:47:58] <Barry Leiba> Lisa: just saw your question... BATV is Bounce Address Tag Validation -- blocks bounce blowback.
[17:48:04] <pguenther> harald: make sure you're happy with the resolutions that exist; john to move as expediently as reasonable
[17:48:14] <Barry Leiba> It was a proposal of Dave Crocker's.
[17:48:18] <aaronstone> Cyrus: do comparators give us the necessary address tests?
[17:48:26] <pguenther> aaron: no
[17:48:45] <pguenther> you have to test the parts separately
[17:48:48] <cnewman@jabber.org> Does LDAP need a matching rule for UTF-8 email addresses?
[17:49:14] <pguenther> chris: yes
[17:50:02] --- asullivan has left
[17:50:26] <pguenther> doug Otis: problems with munging of downgraded but not original address?
[17:50:27] --- doug.otis@gmail.com has left
[17:50:30] <pguenther> johnk: read drafts
[17:50:37] --- alexeymelnikov has left
[17:50:49] --- aaronstone has left
[17:50:51] --- Barry Leiba has left
[17:50:51] --- Barry Leiba has joined
[17:50:55] --- Barry Leiba has left: Logging off
[17:51:04] --- arnt has left
[17:51:09] --- randy has left
[17:51:12] --- hardie@jabber.qualcomm.com has left
[17:51:18] --- JeffYeh has left
[17:51:55] --- yone has left
[17:52:29] --- cnewman@jabber.org has left
[17:52:31] <pguenther> meeting over
[17:52:34] --- pguenther has left
[17:56:26] --- Yangwoo Ko has left
[18:03:05] --- xiaodong has left
[18:04:59] --- resnick has left
[18:06:46] --- kmurchison has left
[18:11:26] --- marcos has left
[18:17:31] --- cyrus_daboo has left
[18:25:27] --- healthyao has left
[18:26:25] --- healthyao has joined
[18:37:48] --- Lisa has left
[18:39:26] --- healthyao has left
[18:50:56] --- fujiwara has left
[21:49:44] --- healthyao has joined
[23:07:10] --- healthyao has left