#10963: More functorial constructions
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  stumpc5
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.1
      Component:  categories         |   Resolution:
       Keywords:  days54             |    Merged in:
        Authors:  Nicolas M. Thiéry  |    Reviewers:  Simon King, Frédéric
Report Upstream:  N/A                |  Chapoton
         Branch:                     |  Work issues:
  public/ticket/10963                |       Commit:
   Dependencies:  #11224, #8327,     |  eb7b486c6fecac296052f980788e15e2ad1b59e4
  #10193, #12895, #14516, #14722,    |     Stopgaps:
  #13589, #14471, #15069, #15094,    |
  #11688, #13394, #15150, #15506     |
-------------------------------------+-------------------------------------

Comment (by nthiery):

 Replying to [comment:419 vbraun]:
 > Nicolas, I like you and your contribution but I don't think you
 > understood what I'm saying.

 I did. The discussion was honestly going out of topic, and I asked
 concretely "what else?" had to be done now. Thanks for the second part
 of your message elaborating on that question.

 > So let me be completely blunt: This
 > ticket is nowhere near ready to be merged, and I'm totally opposed
 > to giving it positive review at this point. We really should have
 > had this discussion before the first line was written. You failed to
 > seek any external input when drafting it. There is no post to
 > sage-devel about this.

 Let's see:

 - I have been mentioning this ticket over and over on sage-devel, not
   counting sage-combinat-devel. Here is a sample among those:

   https://groups.google.com/forum/?fromgroups#!searchin/sage-devel/10963
 /sage-devel/1lZAr60N-8w/vHr6nOWrsfcJ
   https://groups.google.com/forum/?fromgroups#!searchin/sage-devel/10963
 /sage-devel/chC1qH455Qs/NDiN3IOPLBgJ

 - I have made presentations about it in at least four Sage days.

 - Throughout the whole design process, I have had countless long
   e-mail/trac/oral discussions with some of those that care most about
   categories, in particular Florent Hivert and Simon King. Simon even
   came to Orsay twice in good part to discuss about this.

 - The code has been publicly available all time through, with an easy
   way to install it, try it, and see non trivial use cases
   (sage -combinat install).

 - The code has been used by quite a few people.

 With that, I believed that everybody interested in the category
 infrastructure was aware that non trivial changes were coming. I would
 have been happy to expand on the details if anyone had just asked.

 Granted: there was no framed official request for comments. Point
 taken for next time.

 > We even have a formal RFC process (SEP) for foundational changes
 > which you did not pursue either.

 Where is it formalized? How many time has it been used?

 I certainly can see the point of formalizing certain processes. Yet, I
 believe that this also has its limits. The point is that, if I had
 presented a draft of the current design two-three years ago, the
 reactions would have been: "that's just all crazy overdesign", "what's
 the point?", or "it can't be made to work reasonably". And that would
 have been perfectly fair: I was asking myself the very same question,
 and there indeed were some non trivial hurdles to overcome (e.g. the
 C3 business).

 For such an infrastructure to be convincing, I think it has to be
 seriously battlefield tested, for otherwise it only leads to never
 ending unsupported-by-facts discussions (I have seen sooo many of
 those). The main point is how it feels in practice to write code using
 the infrastructure, and in particular how it scales. Not counting: can
 Sage start if we actually refactor the internals?  are there
 performance issues? Can we get to all doctests passing? More than
 that: you need (at least *I* need) several iterations of battlefield
 testing (three complete rewrites in the case at hand) before
 converging to a proper design; at least one that convinces me.


 That being said, let's move to the interesting part.


 > IMHO we have to at least get rid of the open-ended list of blessed
 adjectives that have special hidden/surprising meaning. This includes all
 cases where substrings of class names are matched. We can change the
 implementation details later, but whatever programming interface we fix
 now will be exceedingly difficult to change once this is merged. Its hard
 enough to communicate a design paradigm to the wider developer community,
 it would be entirely confusing to change it in a year.
 >
 > Anything else, including the implementation (but not the programming
 interface for specifying) relations could be left for later, I agree. But
 without having a reasonable idea of what kind of relations we want to
 support we can't devise a suitable programming interface. In particular, I
 think your current interface of specifying a list of
 `extra_super_categories()` is fundamentally flawed for the reasons that I
 stated.

 Very well. I appreciate your suggestions, but so far none of them
 convinced me. Well no, that's not right: I found the idiom
 {{{F(axiom.Finite, axiom.Commutative)}} very interesting though it
 does not buy the rest. In each case, either I see fine points where
 they are likely to be unimplementable within the desired features, or
 I believe that they will make category code less nice to write.  I'd
 be happy to be proven wrong, but it does not make any sense for me
 implementing something I don't not believe in a priori. Alternatively,
 we can spend a couple days discussing step by step the details.

 No, as you have proven repeatedly, in particular with the git
 transition, you are a man of action. If you are convinced some change
 is right and easy, prove me wrong by implementing a convincing
 prototype, say in a review branch. No need to be perfect. I am happy
 polishing the details.

 As for the ``fundamentally flawed extra_super_categories()
 interface''. It's not about relations in an algebra. It's about a
 completion computation in a lattice. And in this context I believe
 it's correct. Shall I write a formal proof of the algorithm? At least
 I would have the feeling to be investing my time for the day I would
 write a paper on the topic.

 Best,
                                  Nicolas

--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:420>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to