Moderated By: mikelutz

Hello all, it’s time for the weekly migration initiative meeting. The meeting will take place in slack in various threads

This meeting:
➤ Is for core migrate maintainers and developers and anybody else in the community with an interest in migrations
➤ Usually happens every Thursday and alternates between 1400 and 2100 UTC.
➤ Is done over chat.
➤ Happens in threads, which you can follow to be notified of new replies even if you don’t comment in the thread. You may also join the meeting later and participate asynchronously!
➤ Has a public agenda anyone can add to: `#3067311: [meeting] Migrate Meeting 2019-07-11`
➤*Transcript will be exported and posted* to the agenda issue. For anonymous comments, start with a :bust_in_silhouette: emoji. To take a comment or thread off the record, start with a :no_entry_sign: emoji.

1️⃣ Introduce yourself. Tell us who you are and why you are here.

mikelutz Michael Lutz- Migration sub-system maintainer.
benjifisher Benji Fisher - developer
alison Alison "Cornell DrupalCamp is 9/26-9/27" McCauley -- migrater, lurker, community member, developer, user of too many words
benjifisher I would like to discuss two issues:
- #2958672: Use migration lookup on text fields
- #2809433: Migrate support for deleting items no longer in the incoming data
benjifisher I guess I should post those on the :2: thread.
Gabor Hojtsy (he/him) Gábor, core committer
phenaproxima (he/him) Adam, Boston, lapsed Migrate maintainer but mostly lurking
heddn heddn, migrate maintainer
andypost Andy, contributor
Joshua Turton (srjosh) Joshua Turton (srjosh) Phase 2 senior developer and migration specialist
woodseowl Eric, developer, migration user, curious lurker

2️⃣ Topics for discussion. Post topics here for discussion in the meeting

benjifisher #2809433: Migrate support for deleting items no longer in the incoming data
benjifisher #2958672: Use migration lookup on text fields
Gabor Hojtsy (he/him) backport of #2936365: Migrate UI - allow modules to declare the state of their migrations (potentially)
alison If migrate_plus is on the table, I'd love to get a feel for whether some "narrow down the source" plugins are appealing to maintainers.

I have arguments in favor ready to go :)

Example plugins:
#3057685: Plugin to only migrate users with certain roles
#3064016: Allow menu_link source plugin to filter menu links by menu name(s)
#3063778: Source plugin to only pull in certain URL aliases

andypost deprecation of migrations, faced again in #3022401: Remove useless config action.settings.recursion_limit

3️⃣ Split iterable part of SourcePluginBase into a trait.

mikelutz #3048413: Split iterable part of SourcePluginBase into a trait
mikelutz I’m still not convinced this is necessary. I don’t see why you would make your own source that doesn’t extend the base, but still need the iterator stuff. The base plugin doesn’t make any assumptions that can’t easily be overridden.
mikelutz @marvil07
mikelutz I’m +1 for closed - won’t fix.
phenaproxima (he/him) I am also not in favor of this.
phenaproxima (he/him) What would be more worthwhile, IMHO, is to force source plugins to become \Traversable, not \Iterator, and let them be iterable in any way they please. This would also open up a path for us to adopt generators.
benjifisher Let me look up a related issue ...
benjifisher #3054167: The getMessageIterator() method does not return an instance of Iterator
heddn I’m also of the opinion of closing
mikelutz Alright, marked as closed - won’t fix
benjifisher No objection. I will tell Marco about the decision.
marvil07 Well, I guess it is decided now :disappointed:
I have created a related ticket following what @phenaproxima (he/him) suggested
marvil07 BTW a detailed reasoning may be what I wrote on "On the implicit dependency on SourcePluginBase" at

4️⃣ Remove deprecated MigrateUpgradeTestBase

mikelutz #3051142: Remove deprecated MigrateUpgradeTestBase
phenaproxima (he/him) +1 for removing deprecated shit!
heddn if deprecated, we might need to keep it for contrib as it was a base class. are we triggering any deprecation errors?
mikelutz It’s a test base class, so we don’t generally trigger deprecation errors on them or guarantee them.
mikelutz We are free to remove it, and honestly if any contrib were using it, it would be commerce_migrate, so if @quietone is pushing to remove it, it’s fine.
mikelutz imho*
andypost contrib does not use it
mikelutz Okay, RTBC

5️⃣ Ensure language is not Null in translation source queries

mikelutz #3030937: Ensure language is not Null in translation source queries
mikelutz I’m moving this to NW as there are some questions in the thread that need to be answered.

6️⃣ Migrate D7 i18n menu links

mikelutz #3008028: Migrate D7 i18n menu links
Gabor Hojtsy (he/him) posted a review at just now
mikelutz Thanks! FYI, Vicky mentioned why this didn’t make it into the fixture in comment #30. Leaving NW for the rest of it.
Gabor Hojtsy (he/him) there are still a LOT OF stuff that I am not sure we need in the fixture
mikelutz Looking at the size, that’s probably true.
Gabor Hojtsy (he/him) a few menu items for testing (based on the test) should not need a 700k patch :smile:

7️⃣ Migrating to Date-only field does not drop time value

mikelutz #3007102: Migrating to Date-only field does not drop time value
mikelutz @damienmckenna
damienmckenna Oh, sweet!
heddn @damienmckenna if you would try out that patch, I think we have test coverage. Just need confirmation its fixed
damienmckenna Will do.

8️⃣ Add option to content entity destinations for validation

mikelutz #2745797: Add option to content entity destinations for validation
alison Awesome concept, love it. What's the need at this point, need more reviews, or?
heddn posted feedback to ^
mikelutz Set to NW per @heddn’s feedback.

9️⃣ Migrate translations for D7 i18n taxonomy ‘localized’ terms

mikelutz #2979964: Migrate translations for D7 i18n taxonomy 'localized' terms

1️⃣ 0️⃣ Use the lock service for migration locks

mikelutz #3066277: Use the lock service for migration locks
mikelutz @chx (he/him) @vijaycs85
chx (he/him) yes this is a lovely issue
mikelutz I have concerns about the approach.
mikelutz The migration status is used for a lot more than just locking, and that information seems to be thrown away in this patch.

1️⃣ 1️⃣ Backport of `Migrate UI - allow modules to declare the state of their migrations` to 8.7.x

mikelutz #2936365: Migrate UI - allow modules to declare the state of their migrations
Gabor Hojtsy (he/him) @webchick felt strong that backporting would be really useful so contribs can provide the yml and also actually get some value by providing it :slightly_smiling_face:
Gabor Hojtsy (he/him) on the other hand release managers had questions about disruption possibilities which are not described in the issue or the change notice
heddn i’m ambivalent. if someone does the CR updates and backports it, then go ahead.
Gabor Hojtsy (he/him) IMHO collecting all the changes it makes to a running site would be best, ie. what behaves differently if the yml file is not in place
Gabor Hojtsy (he/him) not worth the backport before a go-ahead from release managers
mikelutz Again I feel it’s not as important to backport. Contrib can provide the yml now, they don’t have to wait. Given everything else going on, I won’t have time to do all the work needed to convince the RMs that it is backportable.
Gabor Hojtsy (he/him) maybe @damienmckenna is interested to collect that info since he asked about the backport?
damienmckenna The available time I have to work on things like this is going to be limited for a little while (moving! and too much billable work), but I'll try to get back to it soon (if someone doesn't beat me to it).
Gabor Hojtsy (he/him) I added #3067333: Expose migration status on releases (and through drupal.org's API) for exposure on

1️⃣ 2️⃣ (migrate_tools) Migrate support for deleting items no longer in the incoming data

mikelutz #2809433: Migrate support for deleting items no longer in the incoming data
benjifisher There is a working patch on the issue. @marvil07 and @quietone have worked on it; I have only tested and done not-picky reviews. (That is, I did not consider the big picture.) @heddn thinks there is a simpler approach.
benjifisher Lucas wrote,
> When this flag is set, it triggers the executable to loop over each source and destination ...
How do you loop over the source (all items, without resetting it) unless there is a method on the source that gives you all items? A method to do that is included in the new interface, and implemented in the trait.
heddn if we have to clone source/destination or make things messy to get it so we don’t have to tack an interface on things, that is the ideal approach
alison I kinda skipped to the end of the thread, feel free to say "the answer is in the thread, read it" --

This functionality *feels* to me like it would get us a bit closer to something that folks could use instead of Feeds -- is that true, or totally ~left~ right-field here, or?

heddn i also sense I’m being a little too picky about this. and hate that. but I also really don’t see why we need an interface for an 80% solution. and just adding a flag on the migration to make it syncable without having to add an interface in all kinds of places seems like a high bar for novice users
heddn @alison agreed. it is very feeds like. and I want the feature. I just don’t like all the hacks folks need to do to make it work for out of the box sources and destinations.
benjifisher @heddn: Would you like to add a comment to the issue suggesting that approach, or shall I do it?
marvil07 @heddn Please notice that:
• it was decided to move the issue out of core into migrate_tools 4 months ago, suggesting complexity.
• the approach in the latest patch I posted is trying to work-around not being able to modify the `MigrateExecutable` base class.
marvil07 So maybe we want to move back to the in-core approach?
marvil07 I may me missunderstanding the hints, so please let me know.
heddn @marvil07 there's a migrate tools `MigrateExecutable`. hack at it as much as you want :slightly_smiling_face:
marvil07 @heddn the problem is that if not in core, we cannot do it without using custom sources from migrate_tools `MigrateExecutable`, which is the current approach.
If we go back to the in-core approach, we can skip the problem of needing custom sources.
heddn I seem to be missing something, for which I apologize :disappointed:
heddn From my review though, it seemed very possible to loop over the entire source and destination, find things that aren't in either and delete them.
heddn we could do that in migrate tools executable in a post import step. somewhere... anywhere
heddn @marvil07 can't migrate tools' executable do any of this? post import?
marvil07 @heddn I did not get into that approach, since it was suggested after my last patch, and would involve possibly many changes; so I am not sure if it is possible yet. I guess the next person trying to help that issue would want to try the suggested approach.
heddn @marvil07 we have lots more flexibility in contrib and the goal of not altering source/destination is so enticing... I really want to see it happen that way. it will make feeds and any other use cases much more trivial
heddn yes, we'll have an occasional one-off source and destination we need to optimize due to large data volume so we can do queries more efficiently, but for many of these syncs... we're talking 100 records. no need for a sledge hammer in that case
marvil07 @heddn You are suggesting the following constrains:
(c1) do not do it on core, i.e. do not modify the MigrateExeutable; and
(c2) do it in a way that does not need to modify the source plugins.
I think c1 and c2 are incompatible, but I may be wrong.
c2 from migrate_tools is harder-than(if-possible) from core in the current approach.
I guess the next person trying to help in that ticket may try the new suggested approach.
marvil07 @heddn Also, in my experience 100 records is low, but I may be biased.
heddn @marvil07 do not modify core. do modify migrate tools’ migrate executable

1️⃣ 3️⃣ (migrate_plus) Use migration lookup on text fields

mikelutz #2958672: Use migration lookup on text fields
benjifisher The code here is all reviewed. The only remaining issue is whether to be more consistent with a related plugin in how the configuration parameters are named. Depending on which plugin we change, this may involve a change to something released in 8.x-4.2, so we have to deal with BC.
heddn @benjifisher migrate_plus 4.x is receiving minimal support at this point. it has deprecations against D9, so I don’t plan to put a lot of effort into it. 5.x is the wave of the future
benjifisher So BC is not a deal breaker. I am also willing to add code so that either parameter name is accepted, and declare one of them as deprecated. Just let me know which way to go.
heddn target 5.x. i’ll release a stable once this lands
heddn is my suggestion
benjifisher I am still not clear on what that means. The patch is compatible with either branch. Does "target 5.x" mean that I should go ahead and change the existing plugin (released in 4.2) to use `xpath` instead of `expression` as the parameter name?
benjifisher @heddn ^
marvil07 @benjifisher On the choosing of the parameter name I pased it on `DOMXPath::query()` first parameter name, so we may want to keep it. I am not opposed to change it to `xpath`, but I think it is a good idea to follow php, since we are using the dom php extension
heddn @benjifisher sorry for the un-clarity. 5.x is compatible w/ D9, as stated. Since it is a major version, we can do BC breaks. Including renaming xpath and expression. Instead of making things BC, let's just fix it in 5.x and release 5.0 instead
heddn so, target 5.0 with any BC breaks. if there's enough clamor from the community we could backport those things to 4.x, but I don't plan to put a lot of effort into a 4.3 release. I'd much prefer only focusing on 5.0, 5.1, etc
benjifisher Thanks, that is clear.

1️⃣ 4️⃣ (migrate_plus) source plugins with options to narrow down

mikelutz #3057685: Plugin to only migrate users with certain roles
mikelutz #3064016: Allow menu_link source plugin to filter menu links by menu name(s)
mikelutz #3063778: Source plugin to only pull in certain URL aliases
alison Thanks! So --

These kinds of optional configs at the source level make things like `migrate-status` and `migrate-messages` more informative / better representations of what I'm doing. ~(I find it especially frustrating to have to sift through hundreds of migration messages that just say "thing not migrated b/c skipped on empty" (sic).)~ (EDIT: blerg, i got mixed up, i take back the mmsg part of what I'm saying, it was not accurate at all)

alison I actually think the users one might be the best example, esp since `MenuLink` already defaults to only including custom menu items (i.e. it won't migrate the entire development/management/admin menus, it only migrates custom menus and custom(ized) menu links in non-custom menus) -- for users, if your site lets "anyone" create an account, I think it'd be a common use case to want to *not* migrate users in the authenticated role.

That said, these source plugin concepts seem small and simple and helpful, to me. I don't see a downside -- y'know, as someone who isn't a migrate_plus maintainer :wink:

heddn I have no objections here. Keep bringing these ideas into the queue
alison Cool beans, thank you! Appreciate the feedback!
benjifisher I agree with the arguments for modifying the source plugin instead of skipping during the process phase. Did you mention that it can be a lot faster?
benjifisher IMO the only question is whether to add options to existing source plugins or to create new ones. If the base plugins are in core, then adding options is not an option. (sorry) I have not looked at the examples above, but I wonder if we should consider (for example) a user-source-with-more-options source plugin instead of the proposed user-with-role-restriction plugin that is proposed.
alison I didn't, great poinit!

The base plugins are indeed from core. Great idea re: user-source-with-more-options

alison (as mentioned elsewhere -- fyi @xurizaemon @chriscalip )
xurizaemon Awesome @alison :slightly_smiling_face: coming in late, are you thinking you'll make those optional filters for the existing sources, or new sources (as currently proposed by patches, at least last I saw)
alison Thanks! They'll be new source plugins b/c the base plugins are core, not MP (as explained by Benji a couple comments up)
xurizaemon Ah, got it. That's a pity (am I right to presume api stability is why it's not an option @benjifisher?) - but no biggie!
xurizaemon (a pity you wouldn't get it into core, and great news that it'll be available for others! thx alison)
benjifisher I think the policy is that core only includes functionality needed for the migrations defined in core.

1️⃣ 5️⃣ Deprecation of migrations

mikelutz #3022401: Remove useless config action.settings.recursion_limit
mikelutz #3039240: Create a way to declare a plugin as deprecated
mikelutz We recently created a way to declare a library as deprecated in a yml file, and I feel that that is the correct approach here, but there are some technical differences. The biggest problem being that all migrations are loaded at once, so it’s tricky to figure out where to throw the error.
Gabor Hojtsy (he/him) I don’t know where that is exactly but #3064017: Create a means to mark an asset library as deprecated in a *.libraries.yml file should show previous way to do it that already landed.
Gabor Hojtsy (he/him) c lol like @mikelutz said

1️⃣ 6️⃣ We are coming up on our time. What did we miss? What can we improve for next week?

mikelutz One topic per NR issue makes for a lot of topics, but we haven’t cleared the queue in a couple weeks, hopefully we won’t have as many next week.
Gabor Hojtsy (he/him) yeah focusing on less would be better :smile:
mikelutz I didn’t think we’d end up with this many topics, we usually just triage the issue queue at these meetings, but with this format we had a LOT more participation than usual (which is a very good thing)
benjifisher Maybe remove the "why you are here" question from the "introduce yourself" thread. Or am I the only one who sees that as an invitation to paste in issues to the wrong thread?
benjifisher FWIW my participation is not related to the format of the discussion.
alison I feel like it might just be me, but I'll say it in case it turns out other ppl think so, too... I read the agenda but then forgot that the idea was to review NR issues -- so like, in one thread, I asked "what's needed to move forward" and it turned out that was an unnecessary question? (or maybe it wasn't unnecessary, maybe the "what's needed" was in fact different per issue)

idk if that made any sense......

alison I like the "why you are here" concept b/c it helped me know who's who -- but maybe there's a different phrasing, if it's confusing for folks
mikelutz Good to know, my point was the hangouts often turned into just me and Lucas triaging the issue queue, so the extra participation here has been very welcome.
Gabor Hojtsy (he/him) HUGE +1 to threads per issue, the one thread meeting was *impossible* to follow/participate in (previously)
alison I'll echo what Benji said -- the format didn't / won't affect my participation, I was here today b/c I happened to be on Slack when the meeting time came around -- I didn't know the meeting existed before :slightly_smiling_face: I'll be putting it into my calendar going fwd, and join when I can.
mikelutz Yeah, I strongly agree, this format is way better. While the format may not have directly affected your participation, what it did do was get your attention in the way that the one line hangout link probably never did.
mikelutz Triaging the issue queue will be a part of this meeting, but if we as maintainers do a better job of that throughout the week, then it hopefully won’t be so overwhelming. There were issues in NR for 6 weeks we moved today.
heddn love the format. lots of topics. we could bundle some of the i18n/multi-lingual together
heddn I'm not sure that having that many topics is all that off-putting either. it just means we have a lot to discus

1️⃣ 7️⃣ Thank you all for participating! See you next week! Feel free to continue the discussions in the threads above.

Comments

mikelutz created an issue. See original summary.

mikelutz’s picture

mikelutz credited alison.

mikelutz’s picture

mikelutz’s picture

mikelutz’s picture

mikelutz credited heddn.

mikelutz’s picture

mikelutz credited andypost.

mikelutz’s picture

mikelutz credited srjosh.

mikelutz’s picture

mikelutz’s picture

mikelutz credited chx.

mikelutz’s picture

mikelutz’s picture

mikelutz credited mlhess.

mikelutz’s picture

mikelutz’s picture

Issue summary: View changes
mikelutz’s picture

Issue summary: View changes
Status: Active » Fixed
mikelutz’s picture

Issue summary: View changes
mikelutz’s picture

Issue summary: View changes

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.