<div dir="ltr">It would be great if SLEPc can be merged into PETSc. Just like what we did for TAO. Then we do not have all these issues at all.<div><br></div><div>Any particular reason we can not merge SLEPc into PETSc?</div><div><br></div><div>Fande,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 26, 2019 at 11:22 AM Jed Brown via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> writes:<br>
<br>
> On Wed, Jun 26, 2019 at 1:05 PM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
><br>
>> Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> writes:<br>
>><br>
>> > On Wed, Jun 26, 2019 at 12:45 PM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
>> ><br>
>> >> Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> writes:<br>
>> >><br>
>> >> >> You can implement and register a PC in SLEPc (it would go in<br>
>> >> libslepc.so).<br>
>> >> >><br>
>> >> ><br>
>> >> > I think this is the bad workflow solution. What Barry suggested will<br>
>> work<br>
>> >> > and be MUCH easier for a developer. Isn't<br>
>> >> > the point of our tools to make our lives easier, not to enforce rules<br>
>> >> that<br>
>> >> > make them harder?<br>
>> >><br>
>> >> Circular dependencies with a special build process is an enormous<br>
>> >> development and distribution tax.<br>
>> >><br>
>> ><br>
>> > The difference in the arguments here is that there are very specific<br>
>> > problems with the "right" way,<br>
>> > namely that I need to deal with two different repos, two testing systems,<br>
>> > release schedules, etc.<br>
>> > Whereas the taxes above are currently theoretical.<br>
>><br>
>> It isn't remotely theoretical.<br>
>><br>
>> You could propose merging SLEPc into the PETSc repository (similar to<br>
>> what we did with TAO a while back) if you think "PETSc" code will<br>
>> frequently need to depend on SLEPc, but creating a circular dependency<br>
>> between separate packages is worse than having code in Vec that depends<br>
>> on DM.<br>
>><br>
><br>
> I think there will be very frequent dependencies. I would say this is<br>
> a very convenient stopgap that is preferable to making anyone work in<br>
> both places at once. That is a very real development nightmare.<br>
<br>
As a concrete issue unrelated from packaging/distribution (which is very<br>
important), what happens when a PETSc interface used by SLEPc changes in<br>
a branch? If the repositories are separate and you have this circular<br>
dependency, the PETSc build and tests fail until SLEPc updates to the<br>
new interface and that lands in 'master' where PETSc can use it. But<br>
the SLEPc updates can't land until the branch with this new change is<br>
merged in PETSc, so you have to do custom testing and synchronize these<br>
merges. Stop-the-world disruption is not okay, full stop.<br>
<br>
I think it's up to Jose whether closer integration is desirable.<br>
</blockquote></div>