On Tue, 2 Jun 2020 at 20:23, Sam Ruby <ru...@intertwingly.net> wrote:
>
> On Tue, Jun 2, 2020 at 3:16 PM Craig Russell <apache....@gmail.com> wrote:
> >
> > > On Jun 2, 2020, at 11:27 AM, sebb <seb...@gmail.com> wrote:
> > >
> > > On Tue, 2 Jun 2020 at 19:01, Craig Russell <apache....@gmail.com 
> > > <mailto:apache....@gmail.com>> wrote:
> > >>
> > >>
> > >>
> > >>> On Jun 2, 2020, at 9:06 AM, Sam Ruby <ru...@intertwingly.net 
> > >>> <mailto:ru...@intertwingly.net>> wrote:
> > >>>
> > >>> On Tue, Jun 2, 2020 at 10:49 AM Craig Russell <apache....@gmail.com 
> > >>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com 
> > >>> <mailto:apache....@gmail.com>>> wrote:
> > >>>>
> > >>>>> On Jun 2, 2020, at 6:35 AM, Sam Ruby <ru...@intertwingly.net 
> > >>>>> <mailto:ru...@intertwingly.net> <mailto:ru...@intertwingly.net 
> > >>>>> <mailto:ru...@intertwingly.net>>> wrote:
> > >>>>>
> > >>>>> On Mon, Jun 1, 2020 at 8:50 PM Craig Russell <apache....@gmail.com 
> > >>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com 
> > >>>>> <mailto:apache....@gmail.com>> <mailto:apache....@gmail.com 
> > >>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com 
> > >>>>> <mailto:apache....@gmail.com>>>> wrote:
> > >>>>>>
> > >>>>>>> On Jun 1, 2020, at 4:58 PM, sebb <seb...@gmail.com 
> > >>>>>>> <mailto:seb...@gmail.com>> wrote:
> > >>>>>>>
> > >>>>>>> On Mon, 1 Jun 2020 at 23:20, Craig Russell <apache....@gmail.com 
> > >>>>>>> <mailto:apache....@gmail.com>> wrote:
> > >>>>>>>>
> > >>>>>>>>> On Jun 1, 2020, at 2:42 PM, sebb <seb...@gmail.com 
> > >>>>>>>>> <mailto:seb...@gmail.com>> wrote:
> > >>>>>>>>>
> > >>>>>>>>> On Mon, 1 Jun 2020 at 22:30, Craig Russell <apache....@gmail.com 
> > >>>>>>>>> <mailto:apache....@gmail.com> <mailto:apache....@gmail.com 
> > >>>>>>>>> <mailto:apache....@gmail.com>>> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>> OK.
> > >>>>>>>>>>
> > >>>>>>>>>> How about this proposal:
> > >>>>>>>>>>
> > >>>>>>>>>> New directory documents/Emeritus with these directories:
> > >>>>>>>>>> emeritus for accepted requests
> > >>>>>>>>>> emeritus-requests-received for received requests
> > >>>>>>>>>> emeritus-requests-rescinded for rescinded requests
> > >>>>>>>>>> emeritus-reinstated for original requests from reinstated Members
> > >>>>>>>>>
> > >>>>>>>>> This will mean changes to Whimsy code, and could result in 
> > >>>>>>>>> temporary
> > >>>>>>>>> breakage as well as needing extra testing.
> > >>>>>>>>
> > >>>>>>>> The only Whimsy code that needs to change is secretary workbench 
> > >>>>>>>> which currently stores requests in 
> > >>>>>>>> documents/emeritus-requests-received. All other code is the stuff 
> > >>>>>>>> I'm working on.
> > >>>>>>>
> > >>>>>>> Changes to the locations of emeritus directories means changes to
> > >>>>>>> whimsy library code as well.
> > >>>>>>> The committer roster relies on this for showing emeritus member 
> > >>>>>>> docs.
> > >>>>>>> And there are scripts to check emeritus files.
> > >>>>>>>
> > >>>>>>> Introduction of an extra Emeritus parent is going to mean changes to
> > >>>>>>> shared code, so lots of testing needed.
> > >>>>>>
> > >>>>>> Ok. I really don't care if we add two more directories if it means 
> > >>>>>> less work for everyone else.
> > >>>>>>
> > >>>>>> Anyone else with a strong opinion here? Sam?
> > >>>>>
> > >>>>> I, too, feel that the current structure is haphazard and disorderly,
> > >>>>> and that the proposal would be an improvement.  Minor quibble: the
> > >>>>> redundancy of Emeritus/emeritus-* bothers me.
> > >>>>
> > >>>> I'm open to other ideas that avoid duplication of names.
> > >>>>>
> > >>>>> That being said, my bigger concern is twofold:
> > >>>>
> > >>>> This is in line with what Sebb has been saying, if I can read between 
> > >>>> the lines.
> > >>>>>
> > >>>>> 1) Effectively, the only documentation for the current structure is
> > >>>>> contained within the whimsy code.  Effectively, instead of the
> > >>>>> secretary saying "this is where the data belongs", we make decisions
> > >>>>> based on where a given tool places data and where other tools look for
> > >>>>> data.  There is no architecture.  Ultimately, this is a failure of the
> > >>>>> secretary.  I say that as a former-secretary who both inherited this
> > >>>>> mess and mostly left it to my successors.
> > >>>>
> > >>>> Well, way back in 2018 while I was secretary we started using the 
> > >>>> emeritus-requests-received directory with no real tool support. We did 
> > >>>> not architect this but just decided it was better than leaving the 
> > >>>> request in the workbench queue for later processing.
> > >>>>>
> > >>>>> 2) The code is unnecessarily tightly bound to the location of the
> > >>>>> data, making changes more difficult.  Once upon a time, code would
> > >>>>> call ASF:SVN['foobar'] or perhaps ASF::SVN.find('foobar') to locate
> > >>>>> directories, and that library routine would consult things like
> > >>>>> ~/.whimsy.for local tailoring.  Over time, there seemed to be little
> > >>>>> interest in maintaining that mapping, and the current state is that if
> > >>>>> you place things in any location other than /srv, things may not work.
> > >>>>
> > >>>> The current tooling does have a mixture of styles. This is from 
> > >>>> memstat-json.rb:
> > >>>> # identify file to be updated
> > >>>> members_txt = File.join(ASF::SVN['foundation'], 'members.txt')
> > >>>>
> > >>>> So this says that somewhere there is a foundation directory that 
> > >>>> "someone else" knows the actual location. But it does hard code the 
> > >>>> name of the file, members.txt.
> > >>>>
> > >>>> Is that ideal from your perspective? Or should the name of the 
> > >>>> members.txt as well as its location be abstracted to the ASF::SVN 
> > >>>> metadata?
> > >>>>>
> > >>>>> Ideally, there would be a token or identifier for each of these
> > >>>>> directories, an ASF:SVN or some other place would be the only place
> > >>>>> that knows the mapping of this identifier to the URL as well as the
> > >>>>> location of where the local working copy associated with that URL
> > >>>>> would be.  I'd love to be in a position where the location and even
> > >>>>> the format of the files could be changed at will, and any impact to
> > >>>>> whimsy tooling would be contained.
> > >>>>
> > >>>> I'm really keen on trying to implement this. So if ASF::SVN is the 
> > >>>> canonical location for the emeritus directories, what would you 
> > >>>> suggest we use as labels? If we follow the members.txt example, we 
> > >>>> would have a single ASF::SVN['emeritus-directory'] that the code 
> > >>>> didn't know the location of, but the code would still have to know the 
> > >>>> names of the directories it contained. The svn move command would use 
> > >>>> the temp directory to do this
> > >>>> 'svn update emeritus-requests-received/<filename>;
> > >>>> svn move emeritus-requests-received/<filename> emeritus'
> > >>>> And then the commit would commit both the members.txt and the tmp 
> > >>>> directory with the move commands.
> > >>>>
> > >>>> Or perhaps ASF::SVN['emeritus-requests-received'] would be a pointer 
> > >>>> to that directory. And now we have the question of how the svn move 
> > >>>> from emeritus-requests-received to emeritus would be done.
> > >>>>
> > >>>> Would it help to track down all of the scripts and tooling that 
> > >>>> currently know the location of the emeritus directories?
> > >>>
> > >>> You asked a lot of questions. :-)
> > >>>
> > >>> Let me make a concrete suggestion.  Start with the following file:
> > >>>
> > >>> https://github.com/apache/whimsy/blob/master/repository.yml 
> > >>> <https://github.com/apache/whimsy/blob/master/repository.yml> 
> > >>> <https://github.com/apache/whimsy/blob/master/repository.yml 
> > >>> <https://github.com/apache/whimsy/blob/master/repository.yml>>
> > >>>
> > >>> Let's take a specific example:
> > >>>
> > >>> https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92
> > >>>  
> > >>> <https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92><https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92
> > >>>  
> > >>> <https://github.com/apache/whimsy/blob/28c2df1c46090ef504a2fa0227ee5bed94429abc/repository.yml#L92>>
> > >>>
> > >>> These two lines (92 and 93) associate an identifier
> > >>> (emeritus-requests-received) with a url
> > >>> (private/documents/emeritus-requests-received), and contains other
> > >>> meta data used by the ASF::SVN module.
> > >>>
> > >>> In an ideal world, the secretary should be able to change that URL and
> > >>> the ONLY thing that would need to be updated is that one line in that
> > >>> one file and all whimsy tools would operate properly using the new
> > >>> location.  Everything that depends on this information should use
> > >>> ASF::SVN['emeritus-requests-received'}.
> > >>
> > >> Still unanswered: If we have multiple entries (one entry for each of the 
> > >> four emeritus* directories) can we have svn move commands that move 
> > >> files from one directory to another?
> > >
> > > Yes, both svn and svnmucc can rename files directly within the 
> > > repositories.
> > > However only svnmucc can do multiple remote renames in a single commit.
> > >
> > >> I understand how to do it if we have a single 
> > >> ASF::SVN['documents-emeritus'] and the code knows the names of the four 
> > >> sub-directories. I don't know how to handle the svn mv command if we 
> > >> have checked out four temp directories without necessarily knowing the 
> > >> names of the directories. Can we somehow annotate the repository.yml 
> > >> with the names of the subdirectories?
> > >
> > > I don't think it's possible to do an svn rename across different 
> > > workspaces.
> > >
> > > AFAIK you have to have a single workspace which includes a common parent.
> > > If you checkout the full subtree from that parent, then you can
> > > definitely use the svn client to do multiple renames, mkdir and
> > > deletes locally.
> > > A checking will then commit everything or nothing.
> > > However that is likely to be a big/slow checkout.
> > >
> > > I think the workspace does not have to be a full checkout, but
> > > obviously has to include the relevant files, and possibly the full
> > > directories of source and destination.
> > > This is tricky to set up, which is why I suggested svnmucc.
> >
> > I think we are in agreement that big/slow is not an option.
>
> Three options which do not require a full checkout:
>
> https://gist.github.com/rubys/d65a1d0ac7e168d0a9deebc86efcc43a
>
> > So using MultiUpdate, how do we construct the extra svn move commands from 
> > the ASF::SVN directory names for the emeritus directories?
>
> ASF::SVN has this information, but currently only makes it available
> if there is a full checkout.  A new method could be added.

ASF::SVN.svnurl() already exists

> > I don't see how to do it without the application (emeritus.json.rb) knowing 
> > the directory names.

It does not need directory names, because the renames are done
directly in the repo.

There is no need for a checkout.

See other thread for info on getting the URLs.

> >
> > Craig
>
> - Sam Ruby
>
> > >> Craig
> > >>>
> > >>> So the thing to track down is all of the scripts and tooling that do
> > >>> not use ASF::SVN and the identifier specified in repository.yml to
> > >>> access this information.
> > >>>
> > >>>> Craig
> > >>>
> > >>> - Sam Ruby
> > >>>
> > >>>>> But ultimately, we need people to take ownership of this decision, and
> > >>>>> a part of that would be a willingness to make the necessary changes to
> > >>>>> make it work.
> > >>>>>
> > >>>>>> Craig
> > >>>>>
> > >>>>> - Sam Ruby
> > >>>>>
> > >>>>>>>>>
> > >>>>>>>>> Is it really necessary to have a common parent?
> > >>>>>>>>
> > >>>>>>>> If we don't, then we would have documents/emeritus and 
> > >>>>>>>> documents/emeritus-requests-received and 
> > >>>>>>>> documents/Emeritus/emeritus-requests-rescinded and 
> > >>>>>>>> documents/Emeritus/emeritus-reinstated. I just think that this 
> > >>>>>>>> would be awkward.
> > >>>>>>>
> > >>>>>>> I agree that would be awkward, but that's not what I meant.
> > >>>>>>> I am suggesting leaving them all under documents/
> > >>>>>>
> > >>>>>> Craig L Russell
> > >>>>>> c...@apache.org
> > >>>>
> > >>>> Craig L Russell
> > >>>> c...@apache.org
> > >>
> > >> Craig L Russell
> > >> c...@apache.org
> >
> > Craig L Russell
> > c...@apache.org
> >

Reply via email to