Okay. Thank you for coming to philosophy three light. I hope you got the handout. There's one going around. Does anyone not have a handout? Phil doesn't have a handout. Is that a hand raise? Yeah. Here's one for you and one for you. This is my voice being amplified. Yeah. But I don't want that. Sorry. Who else needs one? Okay. Here you go in the back. So while I'm passing these around, a few announcements for Tuesday next week, read Frank Jackson's article, Epiphenomenal Aqualia. Thankfully, John will be back next week and he'll tell us about that. So that's an announcement for all of you guys. So these are important. Listen up. An announcement just for my students. Maybe you noticed Halloween falls on a Thursday, so we'll be here for lecture and I will be curating the third annual Austin Andrews Philosophy Halloween costume contest. So sorry. I mean, Jackson, Jackson, he may want to do this as well, but it's a lot of fun. So on Thursday of the Halloween, if you would like to participate, come in costume, I will be costume myself and then we'll meet after outside lecture and there'll be some judging and then there'll be prizes awarded sometime later. So anyways, those are the only announcements that there are for today. Okay. Settle down. Philosophy time. So we are doing this mini unit on what you might call the science of consciousness. So last time, Jackson presented one such proposal, a proposal for a scientific understanding of consciousness, and we looked at that in some detail. And so what we're going to do today is going to piggyback off of Jackson's discussion and what he said last time is going to set us up nicely for the discussion that we are going to have today, but to work up to where Jackson left off, it's going to take us a little bit of time. So bear with me, but you'll see where we're going. So suppose that we had this big list. We had on the one hand a bunch of facts about what's going on in your brain, and then on the other side of the list, a bunch of facts about what's going on in your conscious mind. And suppose this list showed us exactly what's going on in your brain when you're having any conscious experience in particular. So it tells you exactly what's going on in your brain when you're seeing a house.  So we have this huge list of exactly what's going on in your brain when such and such a thing is going on in your conscious mind. That would be a pretty big accomplishment, but you might have two attitudes toward this list that are listed on the handout. So the first attitude that I'm calling natalism is the following. It says, look, neuroscience and psychology in particular can't give us an account of the nature of consciousness. So on this attitude, that list really doesn't tell us anything interesting beyond, yeah, that stuff's going on when we're conscious. But it doesn't tell us anything interesting about what the nature of consciousness is. So that would be sort of Nagel's perspective from the BAT paper. Or you might have a totally different perspective, one that was sort of exhibited in the article from those guys we read last time, namely, that this list actually tells us what consciousness is. Once we've got this big list of exactly what's going on in the brain when you're having all of these experiences, that's it. We've explained consciousness. And so you can kind of sort of construe what we've been doing in this class the whole semester as trying to decide between those two sorts of attitudes to this big list. So you can think about that in terms of the mind-body problem. Like, have we really given an account of the nature of consciousness by learning all this stuff about brains? So you can sort of understand, yeah, what we've been doing in this course with respect to taking one of these two competing attitudes towards this big list. But what I want to do today is not to try to sort of figure out which of these is the right attitude to take, because as I said, that's sort of what we've been doing all along, and something that we're going to continue to do. I want to ask you a different question about consciousness. I want to say, look, how would we even go about getting that list in the first place? So bracketing what that list shows us about this interesting philosophical question about the nature of consciousness and how it relates to physical reality, let's just put that to one side for a moment. That's what we've been talking about. But let's just sort of a methodological question. Like, how could we even go about getting that list? What are the sort of the experiments and the scientific methodology? What's that going to look like to try to get that list? And so that's the question that we're going to be looking at today. So as we'll see, there's something very peculiar about the science of consciousness that makes it very different from pretty much the science of anything else. There's something very peculiar about consciousness, which seems to make the scientific study of it at the least problematic. But you might think maybe even impossible. So we've got this big list. We've got brain stuff on this side, B1 through Bn. And then we've got the consciousness stuff on this side. So we've got experience of red, experience of grandma, and so on and so forth down to whatever. We've got this whole big list. So call this list a list of the neural correlates of consciousness. So we've got a list of what neural events inside the head correlate with what experiences that are going on in your conscious mental life. So call that big list a list of the neural correlates of consciousness. So the question I want to discuss with you guys today is, what is the methodology going to look like for finding the neural correlates of consciousness? How would we even go about trying to get that list? Never mind what it actually shows us about the nature of consciousness. So are people, that makes sense, the different kind of question that we're asking about this list, how to get it and not what it shows? Yeah, nodding? OK.  OK, so that's what we're going to be looking at today, sort of how we could go about getting this list. I mean, in the first instance, we should say a few more things about what is meant by a neural correlate of consciousness. So the guy that did the anthology for our class, David Chalmers, he's really active in this area. He writes a lot about neural correlates from a philosophical point of view. So I pulled a quote from a paper that we have here on the handout. So we're at the bottom of page one. So here's Chalmers' initial definition. He says, a neural correlate of consciousness is the neural system or systems primarily associated with conscious experience. But that's not super helpful. What do mean by primarily associated? So we need to make a few distinctions to get a better understanding of really what we're looking for on this side of the list. So for those of you who waited through the block essay that I assigned to you guys, you'll know that he makes a distinction between what he calls a total neural correlate and versus a core neural correlate. He actually uses the term neural basis, but they come to the same thing. And so the total neural correlate is just everything that is going on in your brain at the time you're having that particular conscious experience. So for example, I'm looking at the wall. It's just brown.  That would be the total neural correlate of that conscious experience. So it's everything that's going on in your brain. But you might think that when it comes to this list, we would want to be more discerning than that, right? You might think, well, there's all kinds of stuff that's going on in my brain that probably has nothing to do with my experience of the brownness of the wall. For example, there's going to be stuff going on in my brain that's going to be processing proprioceptive information, so information about the layout of my body and space and how close I am to the wall. So if we're interested in what's going on neurologically with respect to my visual experience of the brownness of the wall, we're going to be looking for something more specific than just all the stuff that's going on in my brain when I look at the wall, because there's lots of other stuff going on consciously or unconsciously in the brain. So we want to figure out the core neural correlate of that experience. So that's the bit of the total neural correlate which is relevant to that particular experience. So to give you another example, suppose we wanted to figure out what the physiological basis of digestion is, what the processes are in the body that carry out digestion. And suppose we just took a snapshot of all the physiological processes that are going on in your body. That's not going to help us understand digestion. What we need to know are the particular processes which are relevant to digestion. So we want to do the same thing here. We want to figure out of this big mess of neural activity, which subset of that neural activity is the activity that's really relevant to that particular experience, rather to all the other stuff that's going on. So on this list, what we really want is a list of what we're calling the core neural correlates of conscious experience. So that's what we're looking for. So now that we've got those distinctions in hand between the total and the core, we can sort of set out in a very sort of general and sketchy way how you might go about looking for or rather how you go about constructing this list. So it would seem like really easy, maybe. You go, well, look, we figure out that so and so is experiencing red. And then we scan their brain, and we figure out that this is going on in their brain, and then we do some tricky science stuff and figure out that this B2 here, that's the core neural basis of that experience. And then we just keep reiterating that process for all the different experiences, and then we have the list. It seems like really easy. So for example, you do the same thing if you wanted to investigate the relationship between the rate at which water flows through a river and the rate at which the banks of that river are eroded. You just take measurements of the one thing, the rate of water flow, then you would take measurements of the other thing, the erosion, and then you would have some sort of chart that correlated the two, and then you could understand the relationship between those two things. So it seems like this problem of getting this list is no more difficult than all these other sort of humdrum scientific endeavors, like understanding erosion. So what is the big deal? Why is consciousness this super difficult thing to approach scientifically? So here's the big deal. Think of it this way. So with the example of the erosion and the rate of the water flow, those are two things we can measure and observe directly. So I don't know how exactly you'd do it. Throw a rubber ducky into the river and time how fast it takes to get from this part of the river down to the next one. That's the rate of speed. And then you'd have to do something more complicated with the rate of erosion. But I mean, you can do it. These are quantities that you can just directly observe. But it seems like with consciousness, we're dealing with something completely different with respect to its ability to be observed directly. So the idea is something like this. Look, we can observe this stuff on this side of the chart directly, the stuff that's going on your brain. We've got instruments that can do that. We have ways of quantifying those things.  And so we can get this side of the thing. But when it comes to this other side, it seems like that's precisely what we can't do. I cannot just observe your experience. It's not like I can sort of take your experience and plot it down on the table here and go, aha, it's correlated with this process in your brain. Experiences just aren't the kind of things that you can directly observe, at least not the experiences of others. Maybe in some sense, although I think it's probably not true. But in some sense, maybe you can yourself sort of directly experience your own experiences, maybe. But at least in the case of the experiences of others, there's just some of the kinds of things that you can observe directly. So that leads us to a huge problem. Well, how are we going to do this then? If we can't directly observe one of the two variables that we're interested in relating, how are we going to go about getting this chart? So really, that's the question that I want to post to you guys and investigate for the next hour or whatever. So let me pause now just for questions about what I've said so far and whether that seems right to you guys, whether there is sort of this problem that's sort of specific to consciousness that doesn't arise in a geology or microbiology or something like that. Any questions or points, people that want to resist? Yeah. So this is fine. Now I get to talk to you guys that aren't my students that ask questions all the time. Yeah. Sorry. Absolutely. Yeah, that's exactly right. And we're going to actually look at that as a proposal for one of the sort of indirect ways you might determine the presence of conscious experience in somebody. But the important point is that it's indirect, right? It's not like in the case of the door and the trash can, I can sort of just directly observe that one, directly observe that one, go, yeah, they're both here. But when it comes to brain processes and conscious experiences in you, sorry, your name? In Kira, I can only directly look at one of those. It's not like the door and the waste basket where I can just take them both at once directly. And so as you say, yeah, maybe there are ways of getting around this problem. And we're going to look at different ways of doing that. One of the options is going to be the thing that you said. But the point I'm stressing is that we need some such indirect route because we can't directly take in the experiences of others. Yeah, that's the point. Does that make that school with everybody? Yeah, maybe? OK. So where are we on the handout? A peculiar variable. Right, so I've got here, while we can directly observe, and the directly is doing a lot of work here, while we can directly observe the neuronal processes, we cannot directly observe the conscious experience. And then I go on to say, look, this shows that we need some indirect method of measuring consciousness. But the question is, well, what method? What should we say? And so Kira, your first suggestion was the one that we've got on the handout here under verbal report. Before we get to that, well, actually, no, let's just get to that. The other stuff isn't really important. So yeah, that's a good idea, right? So suppose we're wondering whether Austin is experiencing like the blackboard or whatever. It seems like a really clear indication that he is, is his saying, I'm seeing the blackboard, doctor. That seems pretty good, right? So we have it going this way. If you have report, then you're going to have conscious experience. And it seems like it goes the other way around, too, right? So if we have conscious experience, then we're able to say as much. Bless you. So this indirect method seems really good. It's going to be something which seems to be, when it's present, consciousness is present. And when consciousness is present, it's present. And so that's exactly the kind of thing that we want. We want something that's there when and only when consciousness is, such that we can do experiments and only need to look for this. Because any time it's there, consciousness is going to be there. Any time consciousness is there, it's going to be there. Yeah. Yeah, on this, that would be the result, right? So there are a couple of ways of taking what you say. So in the first instance, this seems a little bizarre, because it's not like in order to be conscious of the world around me, I have to be constantly reporting about it, right? So I don't have to go around muttering floor, wall, so on and children, so on and so forth, right? So that's number one. That seems bad. Because remember, we're talking about actual report. Actual report. And the other thing that maybe buried in your comment was maybe just experience is sort of so, the tapestry of experience is so rich. It sort of outstrips our ability to sort of put it into language. Yeah, maybe there's something to that idea as well. So yeah, those are two big problems for the poor thing. I think the first one is sort of a really damning one, right? It's just obvious that you can be having a conscious experience which you're not currently reporting, like witness your silence, but you're being presumably conscious. Yeah, so that doesn't seem very good.  And we've sort of left that in the dust a long time ago. So the next move would be something like, well, how about not actual report, but sort of like availability for report? Surely if you're conscious of something, you don't need to be actually talking about it, but you have to be able to talk about it. So if people are able to talk about it, then that shows you that they were conscious of it. And also, when people are conscious of things, though they may not be actually reporting, at least they're generally able to, Phil, and then yes. Yeah, that's a good question. So none of this opposes that we can't be wrong about our own experiences. I think the idea would try to design the experimental situation such that it really sort of guards against people being mistaken. So you put people in good viewing conditions. They're not intoxicated. Maybe you pick subjects who are particularly good at introspection or whatever. And so you want to try to control so much, so far as you can, for things that might cause people to make erroneous judgments about what's going on in their conscious mental life, something like that. Yeah. Yeah. Yeah. Yeah, NCC, Neurocorrelative Consciousness. Yeah, and that's exactly the kind of thing that experimenters will do. So actually, I think I might have left it behind. But somewhere on the handout, there are examples of the kinds of experimental paradigms that researchers use to try to determine the neural correlates of consciousness. And the ones I had in the handout are sort of most specifically geared toward trying to sort of figure out which part of the total neural correlate, sorry, trying to sort of get this out of the total neural correlate. Yeah. Yeah, good. So maybe, so what would we say about that? Look, so you're saying something like, look, we don't need a indirect principle here, because it's just 100% obvious that if you put a normal observer, eyes open, looking at just one point of red against a homogeneously black background that they're experiencing. They're sitting on the same chair in the room with the same temperature. Yeah. Yeah. So what you're doing, you are doing something indirect there. You're making an inference from facts about the case that aren't about consciousness, so facts about eyes wide open, facts about good viewing conditions, facts about in the same chair, and so on and so forth. And you're saying, because that so, we should infer that they're having this conscious experience.  Don't you guys see? So you're right that you may not need something like report in those sorts of cases, but the idea is you always need something to get the inference going, because you don't see their experience directly. And so sometimes, and researchers do this, they use different principles depending on the sort of different experimental conditions that they're engaged with. So maybe if you're dealing with subjects who are presented with a sort of teaming scene of some urban street scene or something like that, you'd want something more solid like report to figure out what exactly they're conscious of. Whereas if you have something much, much more controlled, you could get away with using indirect methods like talking about the position of their eyes relative to the stimulus or something like that. But the idea is, in all cases, we do need some indirect method. That's the idea. Yeah. OK, any other questions? OK. OK, so what about this idea that, no, it's not actual report. How about it's sort of like availability for report? And the problem with that is that it rules out all non-linguistic creatures from being conscious. So your dog, your cat, your, I don't know, what other pets do people have? Your whatever other kinds of pets, those things have no conscious life. They are zombie automata, if we go with availability for a verbal report. And that seems pretty bad. And also, I mean, if you just look at the wealth of investigation into the neural basis of consciousness, most of it is gleaned from experiments on non-human animals. And so clearly this is not the thing that's being used in NCC research. And so this leads us finally to sort of catching up with where Jackson left off. So the next indirect method is what I have on the hand called availability for global control. So if you think about it, we've been talking about control this whole time. Report is a kind of control. It's a kind of use to which information can be put, right? But control isn't limited just to speech production, right? So for example, suppose I saw a tomato, I could tell you. I saw a tomato. I could draw you a tomato. I could sort of like try to like pantomime tomato. I could, what else do I have on the hand that I could do? I could do other things involving the tomato, right? So the idea is that piece of information that there is a tomato that can be put to lots of different kinds of uses, that information can be controlled in lots of different ways, not just verbal report. And so the idea is something like this. Well, look, we're conscious of a particular piece of information, for example, that the wall is brown, just in case that information that the wall is brown is available for global control. That is a configure not only just into report, but into all other sorts of functions that the organism is able to engage in, like locomotion, or speech, or drawing, or all these sorts of things. Like think about the extent to which you use perceptual information to act in the world around you. The idea is that information is going to be conscious just when it can figure into that sort of global control, yeah? And so that's what those people, as Jackson said, that's what those people believe, right? That's what they were saying the whole time. They go, look, what it is for something to be conscious is for it to be in this global workspace. Oh, well, what does that mean? It means that the information is able to be consumed by all of these different kinds of systems. So that's just a fancy way of saying, look, what it is for something to be conscious is for you to be able to talk about it and have it to inform your actions. And this thing's conscious, so I'm able to reach out and touch it, but I can talk about it too. I can say, oh, there it is, and so on and so forth. So that's the idea, and it's great because it gets away from the emphasis on report. And so it's able to allow for non-linguistic creatures to be conscious because they can put information to uses other than report. And so maybe this is it. Maybe we found the kind of indirect condition that we were looking for. Now we're equating consciousness with what I've been calling global availability. So this double arrow just means it goes both of these ways. So you get this when and only when you get that. That's the claim, and that's what those people were saying. So our question now, and this is finally we're getting to exactly where we want to be. That's great. Is that right? Is this right?  We shot them all down. So the question is, what about this one? Does this one have problems too? And so really what we're asking, remember, when we objected to all these other ones, we thought, oh, well, look, no, you can have consciousness without report, right? And same here, you could have this without that. So we want to know, basically, can these two things be dissociated? Can you have one without the other? And if that's right, then this isn't going to be a sure sign. This isn't going to be the thing that we want. So our question really is, can you have consciousness without global availability? And so that should be familiar to you guys as the topic of Ned Block's paper. He was really asking the question, and he put it in slightly different terms, which I'll introduce. He said, look, can you have what he calls phenomenal consciousness without cognitive access? So to put it in Block's, we ask phenomenal consciousness cognitive access. But this shouldn't frighten you that we're changing the terminology. For our purposes, it all comes to exactly the same thing. So I'm going to say that these two things are just equivalent. And so this claim here is being advanced by those neuroscience people and is going to be rejected by Block. But the thing that's really interesting, and this is why I chose this article for us to read, is that it's extremely difficult on the face of it to see how you would ever try to show that these two things are dissociable. So that's what Block calls the methodological puzzle, which we're going to get on to next. But let me just pause now for questions about all the large amount of ground that we've covered so far. Yeah. OK, yeah. No problem. So I'll put it this way. We can say that report is a kind of control. That's saying that it's one way that you can put information to use. So you've got this information that there's this guy up here talking about stuff. And you can use that information in different ways. So you can talk about it. So you could say, there's this guy up there talking about stuff. So that's one kind of control or use that you've put that information to. But you can put it to lots of other types of use too. So for example, you can use it in reasoning. So you can say, well, look, I know that there's this guy up here saying the stuff. I know that usually when there's this guy up here saying the stuff, I'm not supposed to be up there saying this stuff. So I'm going to sit here and not say any of the stuff. So you can use it not only to report things, to make noises, but you can also use it in reasoning. And you can also use it to inform how you act and locomote around. So for example, if suddenly the fire alarm went off and I was standing right here, that information's available to you in the sense that you can use it to plan how you're going to move around me. Yeah, maybe not exactly that way. But yeah, so the idea is that when we talk about global availability, we mean that a piece of information is sort of poised to be used in any number of these different ways. So it's not like when you're conscious of something, like when you're seeing me, that you can only talk about it. You can use it for all kinds of different purposes. And the idea is like something's conscious just in case it can be used for any of those purposes, not just report. That's the idea. Yeah, Kira? I like it. Yeah. Yeah, that's not exactly how I would put it. But Block makes the sort of rather remarkable claim that no, there are cases where you're conscious of things which you cannot talk about, think about, know about, or in any other way access. Yeah, that's a good example, although it's difficult in that case because there's a temptation to think that we're dealing with sort of like more than one sort of center of consciousness. So you might talk about it that way. But if you think for some reason, contra nagle, that no, we're actually dealing with just one conscious dude here, then yeah, that would be a case where they're conscious of the stuff on the left side, but they don't have access to it in that they can't talk about it or act on it. Yeah. Sorry, in the back, yeah. OK, good. Yeah, so we're going to work up to that. So what Block's going to do is he's going to argue for this dissociation on the basis of examples. He's going to say, look, the best way to make sense of what's going on in these cases is to suppose that these folks are phenomenally conscious of stuff which they cannot access. So we'll get exactly to those cases. So it's the spurling and the landman experiments which he thinks show that there's this dissociation. Yeah, Justin? Yeah, I've actually tried to find out more about that. I figured that there would be some sort of like name for that phenomenon. And I thought it would be interesting from sort of like an information processing point of view and like with an eye to understanding consciousness. But I don't know about that case in particular. But so just remember, so from the Nagel thing, right, he was talking about phenomenal consciousness. We've been talking about phenomenal consciousness the whole time. So I have some equation on here, some formula. I have, yeah, right. So I say something like, phenomenal consciousness is page four is a property of mental states. And a state is phenomenally conscious, if and only if there is something it is like to be in that state. So that's a familiar thing for us. So we talked about qualia. We were talking about states which are phenomenally conscious. So to say that a state is phenomenally conscious is to say that it's got qualia. And what Bloch says about cognitive access is this. He says a state is cognitively accessible if and only if that state can be reported, used in motor control, thought about, or utilized in other functions and tasks. Or maybe I say that and not Bloch. I don't remember, but that's what it means. And right, so the question is, can those two things come apart? Can there be something that it's like for you at this moment to be experiencing the brownness of the wall, but it also be the case that you have no access to that, that you can't talk about it, that you can't think about it, that you can't, well I already said talk about it. Yeah, that it can't inform your behavior and so on and so forth. That's his question. And so to see why that would matter, suppose as Bloch thinks that we do get this dissociation, that you can have phenomenal consciousness without cognitive access, that just shows you that the thing which Jackson presented, that just can't be right. They say what it is for something to be conscious is for it to be globally available, encoded in the workspace, all this stuff. But if this is right, then that's just not true. Because there can be stuff which is not in the workspace, but which is nevertheless conscious. And that actually marks a huge rift in sort of like the cognitive neuroscience of consciousness. There are sort of people in line with the stuff that we looked at that think that, really what it takes for something to be conscious is for it to be attended to and so to be accessible. And there's people who think, no, you don't need attention for consciousness. That stuff can go on all on its own without attention. And so I think that's sort of one of the major disagreements in this area of the science of consciousness. And so Bloch is on one side and those other guys are on the other side, but... Okay. Right, so it seems bizarre for the reasons that some of you guys have mentioned there could be things that we are genuinely conscious of. There's something it's like for us to see that, to hear it, to touch it, to think about it as well. But which we have no cognitive access to. That's bizarre. And maybe, as was pointed out by somebody, I forget who, that's something which is sort of unintelligible to us that crops up in the case of the split brain patients. Surely they're conscious of these things, but they have no access to that. Like, what is that like? How could we make sense of that? What would that be like? And so what Bloch is saying is, no, that's going on with you too. There are things that you are consciously aware of in the robust sense of phenomenal consciousness, but which you have no access to. At least that happens. Maybe it's not this pervasive thing, but it happens. Okay, so it would be weird, but many true things are weird, yeah. Good. Yeah, then it pushes you back to like, okay, well what do you mean by aware? But I don't know that we should take the time to do this, but I think if you sort of really have a fix on what we've been meaning by phenomenal consciousness over these past weeks or whatever, it really is admittedly a strange one, but an open question as to whether or not that always comes along with access or not. Could there be some, could I be in some mental state such that that mental state feels some way to me, but I just can't access that. It doesn't seem like, just the mere fact that it sort of feels some way to me just shows you or entails or guarantees that it's gonna be accessible. There just seem to be some sort of at least conceptual room between the two, but it for sure seems bizarre. But what Bloch's gonna say is, and we should get on to this argument after we take your question. Yeah, that's where we're going next. Okay, very good, okay. And everyone else is on board? Okay, very good. So here's, so let me just set up the puzzle about why it seems like we could never actually figure out whether these two things could be dissociable. Here's what you would do. You would go, okay, look. Well, all we need to do is find a case where we've got consciousness, but we've got no access. And if we can find such a case, then that shows that they're dissociable. And if we can't, then that gives us reason to suppose that they're not. And suppose we reiterate these, we find every time that there's consciousness, there's always a disability, that will give us overwhelming reason to presume that they always just go together and indeed that they're the same thing. But think about it, how would you do, how would you find this? Right? Especially how would you find this? Through cognitive access. How would you find out that someone is conscious of a particular thing? Well, by them reporting about it, or by them behaving in some way, using that information in some way, which is explicable in terms of their being conscious. So any behavioral evidence, be it report or they're able to use that information in action, that's just going to be a form of cognitive access. And so any sort of case where you're confident that there's consciousness there, that's because you have cognitive access. And so it seems like it's just going to be impossible to find out whether there could be consciousness without access because of this fact about consciousness, namely that it always requires this indirect method of determining its presence. So it seems like this question, it's just not one that we have to even address. It's like one that we sort of have to just lay down before we do the consciousness science. It's not something that we can figure out experimentally. Yeah, so this is really important that everyone is on board with this. So if you're not, please raise your hand, yeah. Yeah, that's another question. So the question is can you get a double dissociation? And so, no, to prove that if and only if you need to prove the conditionals both ways, right? And so just getting one of them isn't going to get you the other one. Yeah, yeah, definitely, yeah. And you might think that argument might come a bit cheaper. Well, it's hard because of this word cognitive, but you might run the following argument. Go look, think about our old friend Blockhead. Information is rampantly globally available in Blockhead. You know, it can use information to move around and to say ow and to do all this stuff. But as Block points out, there's no, it's not phenomenally conscious at all. And so we show that these things are obviously dissociable by just looking at Blockhead.  But the issue is, well, are we talking about cognitive accessibility or are we talking about just sort of accessibility of information? If it's the latter, then Blockhead's got that in heaps. But no, what we really cared about was cognitive access. And Blockhead isn't even properly speaking cognitive to begin with. It's not in that line of business. But so you're totally right in that you can object to this by conditional by showing that it doesn't go this way. But Block's focus is on showing that it doesn't go that way. Yeah. OK, right. So do people see how this could seem totally intractable? How you could never figure out if you could have one without the other? That is to say, if you could have consciousness without access? Because to determine whether you've got consciousness, you just rely on cognitive accessibility. That's the point. Yeah? OK, good. But Block says, no, actually, we can solve this problem experimentally. It's not just an article of faith, it's not just some sort of presupposition. There is data, or sorry, there are data, which shows you that these two things can come apart. And that's what we're going to look at right now. So for those who have been following along, we're now on page five on the handout. And making good time, too. So I forget. No, in this paper, he just talks about the Landman experiments. Although, does he mention the Sperling? Probably not. Do you know what that is, Dutch? Oh, is this Dutch? OK, yeah, I was discussing that with my colleagues in the graduate lounge. We weren't sure what language this was, but is it Dutch? That's what I thought, but no one could confirm this. Does anyone else? Anyways, I think it's Dutch. But no, Sperling was English? Anyone? No? It happened in 1960. I know that. So let me just explain the experiment to you guys, because this wasn't presented in the reading, so I'll just go through it somewhat quickly. But Sperling was interested in this thing, which was a bit different than the issues that we're discussing. He was interested in consciousness. He was interested in the capacity of visual memory, how many things we can hold in memory on the basis of vision. So what Sperling did, as you can see on the handout, was present people quickly. I think the presentation was maybe 500 milliseconds, maybe a bit longer, of a matrix of alphabetical characters. So this one we've got here is a 3 by 4 matrix, so what is that, 12? Yeah, and so what happened was you flashed the thing briefly, like I said, around 500 milliseconds. Then it goes away. And then you ask subjects to report as many of the letters and positions as they could. So you actually had to get it in the right row and so on and so forth. And what Sperling found was that people could do about four. I could only do about three. Four of letters of the right identity in the right position. That's right. Yeah. Now, in a sort of interesting variation of the experiment, Sperling did the following. So again, the whole matrix was flashed. Then after that, after it went away, a tone was played. And the subjects were instructed as follows. So if the tone was high, they were to report the top row. If the tone was low, they would report the bottom row. And if the tone was intermediate, they would report the middle row. That's what they were told to do. And so here's what Sperling found. Sperling found that for any of the three rows, if queued, subjects could report all of the letters on that row. So where before, they could only do four, now they could, in some sense, do all 12 if they were queued to the right row. So does that make sense to everybody, just the way the experiment is set up? Yeah? Yeah? The tone after you flashed? Yes. Yeah. So it goes away. So if you're looking at letters? Yeah. Good. And so explaining how subjects are able to perform that is going to be part of why Block thinks we should accept this dissociation between phenomenal consciousness and cognitive access. What he basically says is, we were conscious of all 12 of the letters, but we can only access four of them, though we can be told which of the 12 to access, sort of which row. And so the idea there is that while we were finally conscious of all the letters, their positions and their alphabetical identity, we could only access four of those. And so what we experience is much bigger than what we're able to access. Yeah? OK, cool. So actually, yeah, so that's the explanation. So just again to make sure people got it, so we've got the chalk. OK. Oh, right. Oh, I can get a good one. So we have, here's how it goes. There's the letters, so F, R, T, S, X, Z, Y, B, Q, R, A, C. Then there is a blank screen, and a tone is played, either high, low, or just right. And so subjects are told, look, if you hear the high tone, and they tell them, here's the high tone. Here's the low tone. Here's the middle tone. They tell them, look, if you hear this one, report the top. If you hear this one, report the bottom. If you hear this one, middle. And they're able to do it, which is remarkable given their prior performance when you just flashed them the whole thing and they could only do four. So in some sense of able, they're able to do all 12 if cute. And so here's what Block is saying. He goes, look, what's going on? Oh, sorry. I've left a key thing out. Here's another key thing. Apparently, it's been a while since I've looked at it, but I looked at the original Spurling paper, and there wasn't much discussion of what subjects their subjective reports were about whether they saw the whole thing. But according to Block, when subjects do this, they claim to have seen, to experience, all the letters. And not only all the letters, but exactly which letters were where, but that they just couldn't remember. That's what people were saying. And so that's exactly Block's point. He goes, look, what that report shows that these folks said, no, I saw them all. I just can't remember them all. Together with the fact that, when cued, they can pull out any four, here's what Block says. That's exactly what's going on. We were conscious of all of that stuff, but we can't remember it. We can't access it. And so what we experience, what we are phenomenally conscious of, is a larger bit of stuff than what we have access to. That's what he says this experiment shows. So the one that he goes through in the paper is slightly different. Actually, so here, let me just read you. This is from a different paper of Block's, but here's him commenting on this Berlin case. So this is from another paper just about this topic. So this is on page six of the handout Block goes to say, an attractive picture of what's going on here, and one that I think makes the most sense of the data, is that although one can distinctly see all or almost all of the 9 to 12 objects in the array, the processes that allow one to conceptualize and identify the specific shapes, oh, sorry, this is put in letters instead of shapes, and identify the specific letters are limited by the capacity of working memory, allowing reports of only about four of them. That is, the subject has experiences as of specific alphanumeric shapes, the letters, but cannot bring very many of them under specific shape or alphanumeric concepts of the sort required to report or make comparisons. One does in fact phenomenally register many more items than are, in a sense, accessible. That's what Block says, yeah. Yeah. Yeah. You know, I don't know off the top of my head what the results would be like, but I would assume that their performance would decay significantly, and Block's going to be committed to that for reasons that we'll see, but yeah, why is that important? Yeah. OK, yeah, sorry, yeah, yeah, very good, yeah, yeah. Yeah, that's right. Yeah, yeah, yeah, that's fine. But what Block is saying is that, so while that representation is persisting, and it's important for him that it's conscious, that representation of the whole thing, while it, sorry, go ahead. Yeah, that's right, and that's fine though, because his point is, look, in those two or three seconds, I'm phenomenally conscious of all of these things, but I can't access all of them. That's what the first experiment shows. So the idea is, look, no, in those two or three seconds, I do experience all of them, but I don't access them. So I think if you want to press Block in this point, where you want to do it, here's where you want to do it. So everyone, all parties to the disagreement or to the issue have to agree that the information, that information encoding the identity of these letters is in the brain somewhere, because otherwise, their subsequent ability to report any of the lines, that would just be utterly inexplicable. And so the question is this, is that information conscious or not? That's Block's real issue. So if you want to press him and say, no, no, what we're phenomenally conscious of is just what we have access to, you want to say that, look, this information of all of these is not conscious. So you want to say, good, so in some sense, so consider the difference between the first case and the second case with the tone, right? So in the first case, I think everyone would agree that in any sense of access that's relevant, you have access to only four. That's just what the data shows. Now in the second sense, what he wants to say is, yeah, there is some very weak sense in which I have access to all 12 in the sense that if you had queued this one, then I would have accessed those four, or if you had queued this one, then I would have accessed those four. So in some sort of very weak sense of accessibility, maybe there's a way in which all of them are accessible. But what Block wants to say is that on any particular trial, you're only able to access four. And so like you say, if you go, okay, well then what about the middle row? It's gonna be gone, yeah. And so, and I sort of skipped over this because it gets pretty tricky, and for sort of our purposes, I don't think it matters very much, but there's sort of lots of different notions of accessibility that we might be talking about. And also in the case of the stuff that Jackson was talking about, whether something is accessible if it's actually in the workspace, or whether it's accessible only if it sort of could have been in the workspace, and there's lots of notions of accessibility that are relevant here, but what Block is saying is just that, look, we're phenomenally conscious of all of them, and in some sense of access, we can only access four of them when queued. And so in this case, as it goes, phenomenal consciousness overflows cognitive access in that you're phenomenally conscious of much more than you can access. That's what's going on. Okay, so maybe we should do the landman thing, and then for people who have been on Facebook, because I'm not a real professor, there'll be some movies in a little bit, so you might want to tune in for that. Okay, so a slightly different experiment, but Block thinks it comes to the same thing. So now we're on page seven of the handout. So this was in the paper, so you guys should be familiar with this. So I always, when it says like, it says like landman, and then there's like the Latin that comes after it, which stands for what, four and others, is that right? At all? I always like to think of it as like so-and-so and buddies, but okay, so here's what Block says about this. So just to give you the setup again, similar to this one, we've got a display, and this time instead of it being a bunch of letters, there are various rectangles at different orientations. Yeah, so you can see on the handout there, rectangles, different orientations. So what goes on is that's flash for 500 milliseconds, then there's a blank screen in between, and then the same array is flashed, and one of the rectangles is cute by a little line. And what your job is to say whether or not that rectangle has changed its orientation. That's your job. So it's very similar to the spurling thing, right? You're supposed to say what the letters were, and the idea is to see how much you can retain. What happened in the first one, similar to the spurling, folks were at about four, so that's trial A. Now in trial B, something different happened. And when the first array is flashed, one of the rectangles is cute, and you're going to be asked whether that rectangle was, is the same or different orientation after the thing is flashed again. And not surprisingly, people are able to do it every time. So they have a capacity of eight. For anyone UQ, they're able to say whether that thing changed or didn't change. And so here comes the interesting manipulation that Block thinks is telling vis a vis the relationship between these things that we've been yammering on about. Here's what happens. You flash the array with no Q, then comes the gray screen with a Q.  And what happens is that subjects are not exactly as good as they were on the second trial, but very close to as good as they were on the second trial. So they're about at a capacity of eight. So you could have put the Q anywhere, Q'd any of the rectangles during the blank in subjects. Basically would have been 100% accurate in telling you whether or not the rectangle has changed. So people understand the three variations on this. And it's called change blindness and I'll give you some more examples of this because the idea is that you're shown something, then there's a blank and then you're showing it again and you're supposed to figure out whether or not something has changed. I mean, as we'll see, it's actually very hard to do that. So Block does the same thing with this as he does with the sprawling. He goes, look, first of all, when asked, subjects say, yeah, yeah, so this isn't the first trial. They go, yeah, yeah, I saw all the rectangles and how they're oriented and stuff. I just can't remember how that one's oriented. Now I saw them all, but it's just hard. There were so many and now I just can't remember. And they say that in all of the A, B, and C, they say, look, I saw all of the rectangles and in these other cases, they're much better at accurately determining which one had changed. And so here's kind of what's going on and this picks up on your comments about there sort of like being an image or something that the sort of tone points to or that the cue sort of like is superimposed on. And that's, I think, actually a really nice way to think about what Block is doing here. So the idea is something like this. You've got this sort of a conscious mental image of the rectangles and all the way. And in the third trial, C, what's going on is that that image persists to the point where when you get the cue, the cue is superimposed over that image and so you're able to go, okay, I'm gonna keep track of that one. Then you get the array again and you're able to say, oh, that one changed or does it change in this one? Yeah, it changes in this one. And so the idea is that you have a conscious experience which persists over which the cue is able to be superimposed and then you're able to say. And so what Block thinks is going on is that in the first case, you have that persistence. So you've got the mental image, but that mental image, that conscious mental image just degrades before the cue in the third frame can be superimposed over it. And so in that case, we're phenomenally conscious of much more than we can access. We're phenomenally conscious of each rectangle and its orientation, but as this first trial shows, we can't access all of them. There'll be lots of them for which they're cued and we say, I don't know. So that's Block's take on these experiments. And that's how he breaks into this puzzle. Before we thought it was just totally intractable. We thought, well, look, anytime we wanna know if there's consciousness or not, we're always gonna have to rely on some sort of access. And so we'll just never be able to get a case where we're confident that there's consciousness but without access.  We can be confident, for example, in the first trial of this Landman thing, that you're phenomenally conscious of all of the rectangles and their precise orientations, but can't access all that information. Ditto in this burling. You're conscious of every single one of these letters, their alphabetical identity and their position in the matrix, but you can't report them all. You can't bring them to bear in any kind of use of control. And so you're phenomenally conscious of more than you can access. And so the guys from Tuesday are wrong. Yeah, yeah, good. So right, the notion of iconic memories, I think I'm actually pretty sure that's the terminology that Spurling used in his own paper. But no, I mean, there's been lots of study about the capacity of various memory systems and the extent to which we might wonder, well, is there just one memory system for all perception or is there one for hearing and one for vision and so on and so forth? There's been lots of work about those sorts of things, but for example, so Bloch's discussion of these experiments and the relevance to this question is actually something quite new. So I think that paper was in brain and behavioral sciences in like 2001, something like that. And that's like the premier venue for cognitive science. So this is not something that has sort of been, that the story has been told and decided on, yeah. Okay, so now, actually, so what do you guys think about that? Is that right? We have no, we have another no, any other people. The movie's coming soon, people in the back just hang in. Yeah, okay, so you're thinking that all this stuff is related to the relationship between memory and accessibility, not consciousness and accessibility, something like that. Yeah, I mean, that is one thing that you might say. So it's sort of, when I was first reading about this stuff, I had kind of a similar reaction because it's sort of bizarre, like if you are shown one of these arrays, right, quickly, what Block is really saying to you is that in this sort of interim where you take there to be just a blank, you are phenomenally conscious of these things still. Yeah, the latter thing, that's important. So everyone's going to agree that you sort of were phenomenally conscious that there were like a bunch of rectangles arranged around, but what Block is committed to, and of course, you're able to access that. You go, yeah, of course, there was like a bunch of rectangles, all right, so you can admit that, but still think that accessibility and consciousness go together, but what Block says is something much stronger, he goes, no, not only are you aware that there are a bunch of rectangles kind of grouped around, you're aware that this rectangle was pointing that way and it was next to this one, which was pointing up and it was next to that one, which was pointing down for all of them.  And yeah, there is something bizarre about that, right? It doesn't, the idea that in some sense in sort of the interim, I am having a conscious visual experience of the array, but that's exactly Block's point. He goes, look, and you don't have access to that. Okay, other comments, yeah. Yeah, exactly, I think this goes with the question that you were pressing earlier about, well, in some sense, aren't they able to access all of them? And I'm in full agreement with both of you guys on that question, let me just finish and then I'll get to you. But the idea is that, and maybe this is sort of not super satisfactory, but the idea would be something like this, look, compare the just the first case of the spurling where you could say just about four. That's a clear case where you are unable to access all of them. Like, does that seem right? And he goes, well, look, actually, this case where you play the tone is relevantly like that one in the following sense. I can only say the four that you cue me. So it's true that if you had cued me, I would have said these other four, but on any particular trial I'm only able to access four, namely the ones that you cue me to access. And so in some sense of accessibility, I'm not able to access all of them. For example, I couldn't just say them all to you right now. It's true that if you had cued me in the middle, I would have said those. If you had cued me in the bottom, I would have said those in some derivative sense. They're all accessible to me, but he still wants to say, look, in there is still a robust sense in which you can't access them all, namely the following.  But I agree with you. There is some kind of access that we're sort of using to make this attribution of the consciousness of all of these. I totally agree with you. Yeah. What's that? It's not precise, sorry. What he's doing is using a method that's, yeah, used in science all the time, just inference to the best explanation. He goes, look, here's a bunch of data about subjects, reports, what they're able to do. What's the best explanation of this data? And that's the form of his argument. He goes, look, the best explanation of this data is that they're phenomenally conscious of all of these, but could only access four. And he goes, so, and there's a bit in the paper where he sort of considers alternative hypotheses and sort of brushes them to the side. So I mean, it's really just like, yeah, classic scientific reasoning. He goes, look, here's the data. What are the available hypotheses and which is the best explanation, which hypothesis best explains the data? That's the style of argument. We should do the videos. Okay, so this goes along with this other discussion in Block's paper between the so-called rich view of consciousness and the sparse view. The rich view is the view that, look, we experience a whole bunch of things all at once, all of the time our conscious lives are this sort of rich, technicolored tapestry of things and stuff. We experience, we take in sort of the whole world at once, at least the vicinity of the world that's right here. The sparse view that says, no, you're wrong. You actually only experience like four things at once at any given time. So that's weird. Why would you think that? Let me show you. So let's do this one first. Okay, if you've seen any of these, please do not ruin them. Okay, so just please watch this. Yeah, don't ruin it. Don't even whisper, because someone else might hear you. Okay, are you guys watching it? Okay, just watch it. Okay, who's watching it? You guys are all watching it, good, very good. Did you guys enjoy the film? It's a movie. Yeah. Okay, who thought? Okay, very good. Yeah, nobody's thought. So, okay, so look at the floor. So I'll move this. Yeah, people on the back. Okay, yeah, so this phenomenon is called change blindness. So this is an instance of slow change blindness. And so what this suggests is that it's actually an illusion that we see as much as we think we do, that our experience includes as much as we think we do. Because if, so the thought goes, if we were genuinely experiencing this change, we would notice. And so really, if you think about it, that's this view. This is the sparse view. That what we experience is really what we have access to, what we attend to, and that's very few things at any given time. And that's what these sorts of things are supposed to demonstrate. If you really were taking in all this stuff at once, and you had this sort of rich, conscious life, then you would have noticed like 25% of this image changing color. So the sparse view sounds pretty bizarre when you think about it. It's like, no, we don't, it's not like we're looking at the world through like a cardboard tube or whatever. But these sorts of results really suggest that, no, we're conscious of much less than we actually think that we are. So let me give you guys another example of something similar. Yes, so what we're gonna use is block as a comeback to this. So the block style comeback would be, well, what's actually going on is you were conscious of the change, you just couldn't access it. So consciousness is rich. You just don't have access to a lot of its richness. So let me find you, here, so if you read the block paper, you will know this one. So for those of you, so yeah, this would be a good test to see who did the reading. So when you see it, raise your hand and I'm watching everyone. So ready? Okay, go. Okay, so three people read the paper. Four. That's pretty bad to you guys, yeah. Okay, keep your hands raised. Okay, in the interest of time, look under the airplane wing. Okay, who sees it now? Everyone should raise their hands. Under the airplane wing. See the engine? How it's disappearing? Yeah, indeed. Okay. So there it is. There's a scene right before your eyes, which presumably, like you were saying earlier, if it's right before your eyes, surely you're conscious of it, but you don't notice this ginormous change. So one more. Actually, no, I wanna find, okay, I wanna show you guys, I'll show you guys one more and then we can call it a day if this works. Well, in the meantime, while I'm fumbling with that, you guys can, oh, I like this one better, this is, okay, what about this one? So raise your hand when you see it. Okay, yeah, this is a pretty easy one. So, look at the railing behind the people dining. Yeah. Okay, so again, there's this incredibly large scale change in the scene before you, which you have absolutely no clue about. And so according to these sorts of people, these sorts of people that really suggest that consciousness is sparse in the relevant sense. So anyways, that's all for today, but think about how you would use, what, what? All right, fine, yeah. Everyone can leave, but for those who wanna say, but think about how you would use the block thing to try to argue against the sparse view. Yo. I do, I think, yeah. Ah, sorry. Okay, there's one more really good, there's one more really good one if people wanna stay. We still have four minutes. It's the shadow. Well, global availability. Oh, with the arrow, yeah, yeah, yeah. Beautiful graphic design. Okay, sorry. Don't, whoever said that, don't do that. Oh yeah, sorry, these are from this guy's website and it's said to refer to him to, so there he is. Okay, okay. Yeah, here it is. Okay, don't ruin it. Is that better? Okay, turn the lights off. Over there. Okay. Oh no. No. No, that's not the screen. Ah, no, this is not good. How do I, okay, well this'll have to work. Okay, I'll try again. No, it's not good. Okay, this is gonna have to suffice, so gather around class. Okay, okay, so this is important. Test. So that's your job. Oh, well, I was gonna ask you guys, but who got 13? Okay, I counted 11, but okay. All right, and then here's the next part. Okay, who saw the moonwalking bear? Who did not see the moonwalking bear? So when I first watched this, I saw no such thing. So who didn't see it? Okay, yeah, I didn't see it on my first time either. So yeah, so watch. So now, forget the passes, just watch for the bear. Oh, sorry, I should turn this thing off.


talk about how we can detect API breakages in our libraries in Debian earlier and run those detections across wider range of libraries. Because individual packages and individual libraries and individual upstreams are using the ACC tool already, but I don't think enough people are using it and I would want to know what can I do to make sure that more people use it. There are a few ways how API can be broken in a library. The most common one, you change or remove symbols. For most of the packages, you should be using the package again symbols and check symbols files such that you can catch removal of, for example, C symbols from a library. But see if, for example, arguments on the particular function change, you will not notice that change in symbols files, but the ACC tool will notice that. And it will inform you that the API has been broken of how many parameters it has, what their sizes are, if the sizes of the structures change. For C++, symbols, they are more verbose because they do encode the return types and the types that you pass to functions. However, if you do changes to the templates, your symbols file will not tell you that the API has been broken, but ACC can detect changes in C++ templates. And if your symbols files are not that good or you don't specify tight enough version numbers and you break your API but your version dependencies are too wide, then you didn't help much because you can still install broken packages which failed to run that runtime. Here's a few tools that you can be using. I'm mostly going to be talking about ABI compliance checker, but there is ABI damper, there's spam and cheat checker, and there are other ways you can do this. So, for example, if you run out package test, that your binary starts and can print out text output, that means that it can open and find all the shared libraries and there was no ABI breaks, presumably, such that you can execute things at runtime, right? And typically how we find ABI breaks is that somebody uploads a new version of the library, somebody goes and does routine rebuilds, and then the rebuilds fails to build from source because the API changed and presumably the API changed at the same time and then people complain, which I think is a bit too late. We should be able to do this much earlier. And then once we detect that there wasn't library break, we need to upload a new library again, bump the ABI number, sometimes they've been specific if it was broken and taken only, and then rebuild everything and that's such that we get the correct dependencies. The ACC tool is quite useful because it can operate in multiple modes. Typically you pass it a shared library and it will scan all of its symbols and try to extract as much information from the shared library as it can. But you also can pass to headers and then it will scan all the structures, their sizes, what type of arguments you supposed to pass to each function and what are the return types, and then it can generate an extensive, basically structured, flat text file of everything you can find out about a particular combination of files. And that can generate your dump and you can then compare your next library revision against the dump. It also has a few other modes where you can generate a dump for a whole system to it. So for example, squeeze default installation or that we see default installation and then you can take your binary and test whether they will run against those truths without actually executing that binary, such that it will analyze if all the shared libraries are present and if all the symbols are present and if they're compatible. Which is useful if you're a third party vendor and you need to check that your compiled binary package does work against multiple distributions. A while back, I've added DH ACC helper add-on to the ABI compliance checker tool in David such that it would help you to generate the dump site build time and it will also compare the ABI of your new updated library at build time such that your builds will fail if suddenly your library becomes ABI incompatible. That's very good because if your builds fail that means it will never hit even unstable such that in even unstable you wouldn't see an ABI break. This is all kind of cool. You do bootstrap it slightly the same way how you bootstrap symbols file. You first add a description of your headers and your library and then you upload that. Once it builds once across all of the architectures in ABI you can fetch the depths themselves and then extract the ABI dump tarpaul from inside each architecture build and then if you commit those to your sources of your given source package your next upload will verify that you're still compatible with that old ABI and ABI dump. Does that make sense? Yeah. However, it's still quite manual, right? I'll show you slightly later and in the manual description you still end up having to list the libraries that you're testing and you have to specify the header files that you're testing and what ACC tool uncovers quite often is that not all headers are actually compilable and a lot of headers you cannot compile them by just including them. They sometimes need optional extra other includes or they depend on the include order or you define some extra variable to operate hence a lot of headers for most libraries you will hit that you have to exclude certain headers from being checked for ABI compliance and the default simple way to configure ABI compliance checkers to just pass it a list of headers or directories with headers and libraries which should work most of the time but once you need an exception you have to convert and write an XML description of things that you need to do and jumping from a flat list of files to an XML has proven to be not user friendly even though it's quite simple hence there has been very little uptake of DHECC so far that I've seen in the archive I can give you a real example of somebody who is actually using it as is in the archive today which is quite cryptic because they are using multi-arch and I didn't take multi-arch into account hence they pre-process their definition file first and then they run the actual DHECC tool and the description file that they specified is an XML which is very verbose and perfect in my opinion but they do specify the original version number that they took the dump off and tried to compare to all the time they specify where their headers are which headers to skip because presumably that header does not compile by itself and which libraries to check and they do substitute the multi-arch variable in there it might be and this is too verbose but it's not that bad I think most people would be able to write something like that for their old library the other bit which I didn't consider when I wrote DHECC I was thinking that people will take the dump from their build directory such that your path should have been current directory dot slash devian slash temp user, lib, blah blah blah in this case this person is running this tool actually as an outer package test such that it's running against installed libraries in the installed environment instead of the build time I'm not sure why they did that but that's how they did it and now I'm coming to a few more live open questions of how would you want the library dumps to be maintained who and where should be comparing the dumps for example should it be done should you commit all of those conflict files in your devian source package or should it be managed externally somewhere for example on a hosted service which goes and scans all of the devian archive and tries to compare the dumps of everything that it can find and things like that should it be run as an outer package test would you like it to be run as an outer package test I mean some people I've started talking to a few people and they use it quite differently so for example up upstream they run API compliance checker before releasing a new upstream as an upstream developer and they do so by installing the previous version on their system and then running the ACC from the build directory to compare the system library against the one that you just currently built but that's kind of a recursive build dependency if you actually try to upload it into the environment hence they don't upload it and do it on every build and there is a project related to the upstream developers they run upstream tracker.org where upstream developers are encouraged to add their own libraries and the descriptions of their libraries such that all versions are scanned and all versions are compared against each other to check for ABI breakages and hopefully if internet works I would be able to show you how those results look like that didn't work well now I don't want to shut down that's supposed to work, right? this is the most exciting part of the presentation retrieving files via HTTP is very complicated so it should have a difficult user interface right, so I've opened new TNLS upstream tracker where it tracks various version numbers which are cut off on the screen whoa! more practical solution right, so here they check this results that ECC generates in HTML if you provided a lot of version numbers as you can and you can see that 3.3.0 did break ABI and so did 3.2.12 hence there was 12.1 released straight after to resolve the ABI break which happened in the screen there so here's the full report for the ABI bunch of symbols but they have removed a bunch of symbols and if we jump there we can see that xssl.h header was removed and all of those symbols were gone and the shared library was gone as well presumably it moved somewhere else and maybe you would be able to still get it or maybe it's gone for good so this doesn't tell us what actually has changed but you could, it generates a lot of other information as well so for example it marks things so it gives you explanation of things that change so for example something changed to a constant pointer instead of the one that you can modify in practice it's a lot of severity because the type didn't change the position didn't change the size didn't change but the fact that it's now a constant pointer somebody may have realized that it isn't and somebody's GCC WOLW error compiles will start failing because of this change if somebody's not passing things right so that's the overview of the Indiana compliance checker tool and now it's the question why are you not using it or are you using it and if you are using it how are you using it or how would you like me to improve it it's using it shouldn't it I'd like to ask a really stupid question I don't understand is it using all the library or can it operate off it can operate on one or the other or it can operate on the other and then here are the files which tries to I think I'm done here and the functions and what you're supposed to pass to them separately it does the dump of the library where it extracts the symbols from the library itself so it's two separate dumps one is called binary the other one is headers only mode and the binary mode uses the so it's as comprehensive as the headers mode almost for most things so for C it's almost as comprehensive but it doesn't know the struct sizes for example because that's not included in the shared library I'm not sure if it checks that yet I've read the whole source code of the whole thing it's not very complicated it's a lot of pearl so the advantage of using only the binaries is that you don't have to worry about un-copilable headers and strange headers and previous headers and what but I don't see how much that is an improvement over just regular d-package symbols the binary only mode in that case we've got a limited amount of effort this needs to be automated can we automatically detect which headers are used can we, I don't know, grab them out of the debugging data I was thinking to do multi-pass of ACC tool such that if it finds un-copilable headers just remove them or have an option flag to automatically remove them and rerun it again until it runs with no errors usually you only need to remove a handful of header files such that you are ABI checking most of them if you can and then if I do automate it do I automate it and send a mass-back file of patches across all-day bin maintainers or am I running it separately as a fake-out-of-package test type of thing go on it doesn't require manual interface one of the issues that I started using is the bootstrapping stuff well, A, I don't want to ever look at XML and B I'll leave it in package and then you're comparing it across two versions and one of the things that I noticed up there you still have that web page handy where you can look at so one of the things I noticed in the... do I want to go back? yeah, the previous page showing the compatibility between versions it's not clear so it says 3.2.12 is incompatible it says <IP_ADDRESS> is compatible but it's not actually clear whether that means compatible with 3.2.12 or 3.2.11 right so are these actually all the same upstream or are all these all the same? N2P I guess they could improve that the SO names, it checks multiple libraries so it's a report for the collection of those whatever 5, 6 libraries but it will be different basically right is annoying well, the API dumps they are arch specific such that at the moment my tool does account for that in the helper such that you actually need to supply dump for each arch that you want to be checking the compliance on yeah, it is very annoying the other bit is that do we want to only check against one base or do we want to check against each version that ever was in the archive so for example, if LibFu had 3 versions in the archive when I upload the 4th upload shall I be checking against the last upload for all 3 previous which claim to be that SO name good question I think a responsible library maintainer will maintain it in such a way that the manifest for the most recent version should be sufficient considering you did it on each upload each time you didn't break it then it's fine and if you break it once you'll still notice it library maintainers are usually know what they're doing more than the average maintainer but it's still it's still tricky when you say library maintainer you mean upstream, not debut and developer I mean debbie maintainers oh, okay, okay because the debbie maintainers are going to have to make an manifest true so one other side point I was true this was an example of just 3rdly normally actually using this tool I would have done the DH exact type of thing myself I mean, presumably I could write something like that to run against the debbie archive but would it be useful or would you rather do it in the source package that your source package breaks I think you should think about the data flow you should think where should the manifest be kept are we going to implicitly regenerate the manifest from squeeze and compare it with what's in wheezy rather or are we going to manually maintain the manifest you need to think about how this will play out with derivatives add simbox to the shared libraries so I'm just going to trade off the derivatives we don't do something that means that derivatives get the benefit of this checking it also means that derivatives anything much less about this kind of stability than we do will unnecessarily trip over the built breakages when they change things well, I mean in Ubuntu for example there are a few core libraries that add additional symbols which are not upstream and are not in debian and ideally you would want to verify that those symbols are never dropped especially those available such drop given that they're Ubuntu specific and not even upstream or debian I mean I'm more worried I'm not very worried about that we do something that might or might not by default do the best thing for Ubuntu it's probably not very much work for Ubuntu to make it to update the dump and make it built it needs to be done we've got lots and lots of derivatives now and we should be making things work well for the people who don't have much effort right and XML even 7 lines is that's too high I wanted to make another comment about auto-pickage test it is possible to write auto-pickage tests that test packages other than the one that contains the tests and you could do such a thing and then you would have to teach you need a new slightly different invocation rules because now the package that is to be tested must be specified on the auto-pickage test command line in a slightly different way right test definition you could write tests that that do this thing do that kind of thing but I know whether that's useful or not for you but it's a thing I should mention I really like to do it at build time because packages are built for all architectures and I have no idea the password for this machine because Debin has a lot of architectures and auto-pickage tests currently are only run on AMD64 and i326 right that's a good reason for doing it at build time and doing it as much as possible based on information in the source package but that means patches and it can explode your source package by bit so for example a dump for a single architecture can be a megabyte compressed all of which ends up in the Debian disk yeah that's quite exciting and then people tell me well I gave you a turbo which is compressed and then people say well I'm committing it into git hence I don't want an ABI dump compressed I want the flat text file which is obviously larger well all the Debian packages are compressed during transport so compressing the file again when dumping it into the Debian directory is probably not helpful okay right I still don't want to see the slides again I hope you don't want to see the slides again or me it is not nothing very small maybe it was Depconf because she was typing F it's ability somebody ping Alice on IRC or maybe Docker did you Fubar excellent hello Matias would you like to track GCC ABI I'm not trolling do you mean have the package failed to build when the GCC is missing from it oh yeah yeah that bit because that would detect it because you see it checks it will tell you that would never I mean if you're not joking what what did you say was it generating an empty GCC1 package or did it not generate the package I think the package was there the library was not it was the special case of special so this tool very sophisticated can detect missing shared libraries if you forget to ship it which totally did not happen right ever so let's hear what you're saying all the reports right so it has support for templates whether the change inside your template will affect the ABI of the library which happens to use that template after it's rebuilt however to actually test that you need both the library that uses that template and the templates themselves which are often two separate projects like Boost and LepuPP as they're called and then it can check the ABI and it will tell you that the template has changed the template API has not changed but when you will rebuild it your library ABI does change so it has support to detect that but it's I haven't managed to actually construct the config file to detect it and actually give me a correct answer and I've detected this failure so I could work on it if there is a good example such that I could libabigale which exactly tries to track templates templates yes I was not aware of that one because the ones that I've listed have listed oh it's new because these are the tools that I've tested so they're sanity checker and ABI damper I was not aware of that one ideally you would integrate as many of them as possible to detect things okay so everybody will be happy when I send them a 10-bank patch against their package to commit in the source package how are you tracking ABI's? right you do it locally you don't make it public and it's not done on every build what do you want to? okay I mean if I set up a public server it will most likely track AMD64 and high 386 and maybe ARM if somebody donates me loads of ARM hardware can you do this checking in a cross way so I install a weird version of this tool on AMD64 and I can check all the architectures with throwing CPU at it I think yes yes that should work oh you did test it Q double to Q real Q double to Q real I ran all those checks on AMD64 it was horrible but that had nothing to do with it being cross did you do you need a cross-binitel available or anything you probably had one so I can't tell you and I probably just pointed it out my cross toolchain it did the thing and it did the problems I ran into with that had nothing to do with whether I was cross or not it was just the problem with all of the Q headers yeah and that was a problem unrelated to whether it was cross or not and that would bring us back to the thing that in Ubuntu I have cross toolchains to most arches that we care about and in Debian there are there are no cross toolchains for all arches from like AMD64 and it's quite a long one people are working on that I've heard that before probably at like last fconf are they available oh it's your machine hi you have cross toolchains to all arches I want that okay I've heard that every week checks on sources and patches them very lightly very lightly just a little bit of sprinkling actually why talk to him I can sponsor packages for you are there some patches missing for example patches this is not an accusation question what's the strange conversation most of the people in the world have no idea what's going on well this is this is kind of like playing mallards so that's why it's a package but it has been modified package reports differs from the cabal well the templates the templates with three multiple architectures and you get all these great strings yeah the problem that we change is the same set of problems this this thing finds more problems than the symbols and for example for example if you drop or change private symbols this thing will tell you that symbol has disappeared and symbol was changed you're EBA incompatible because your symbol is public and it is in the shared library it has no idea that it is somehow else how marked private in like API documentation that's a lot people say these are private symbols but then they stick it into the shared library so that it's accessible to anybody who links against it well that's not very private that's like a normal symbol so then this tool detects it and then you need to actually check if anybody else is using those symbols or relies on them and that's like the harder because you need it's checking all the dependencies it doesn't help much it finds more interesting things in C++ than the compiler dependent symbols so it actually finds C++ specific ABI breakages because deep package symbols it's mostly you know ALF based C type of mostly for C type of changes of ABI I have 10 minutes left in this session that's been quicker than I thought it would be so everybody would happy to see an external website and maybe not act upon it and then not many people would be happy with 10 megs committed to their Debian source package not really unless it's very important experience library like in the core would you want an ABI dump? see we effectively do this upstream and trust that upstream is not screwed up we don't actually ship a symbols file in the source package at all but the symbol versioning in GSMC upstream is correct I just repeat that all over again so well all the WGLT containers are also upstream developers as well we trust that we're doing these checks correctly upstream most of the time we're right and in our case because we use symbol versioning very very heavily in GSMC that allows us to auto generate our symbols files and they are generally should be correct now it's possible that Debian Patch could drop a symbol and maybe we would like to know that on the other hand we'd also like to think about that dump so like the massive however large that dump would be would be very very big I'm not sure if it's something we would care to have or maintain right for some of the smaller libraries I maintain like say LibArt has which I sort of fire and forget me that would actually be kind of handy I think to have an extra level of security well for me I would ideally would want to have this tool reliable enough to detect that the boost API stays stable such that when they release a new upstream version I don't need to repackage and rename ABI of every single library just some of them although that sounds scary a little bit the other thing like for example the recent ABI break which wasn't in ABI break was symbols conflicts such that we had NewTLS26 and we had NewTLS28 and both libraries had conflicting symbols such that when eventually enough people started using the new one but there were still users of the older one when a binary had both libraries linked against it transitively it would explode at runtime because the symbols were conflicting how can we detect that okay and I knew about it that was different from the last version but really I think a way of supplying to maintainers the information do you realise that the ABI changed and that means that this needs to be adequately reliable yeah and you need to work out as you say just against the last one or the last end or against stable or against testing exactly but if you can supply a useful a useful data feed that a maintainer would actually quite use for you and the version that was suggested shouldn't actually want and it holds the point several megabytes in their own package they might be able to use okay okay so that's the way you would never know I mean one of the libraries that I've maintained upstream has yet to release a new point release version update like micro point release update which does not break ABI so for me it was easy I was bumping the ABI by default but then I would like maybe I should stop doing it and then I would run the check and it's broken it's broken they change classes inheritance for no reason that breaks C++ ABI straight off the bat alright okay yeah do people care checking whether this binary still is executable in Weezy and Jesse and for example said without recompilation because you can take a dump of squeeze you can make a squeeze trute and take an ABI dump of that trute and then you can make a dump of unstable trute and then you take your binary that you've compiled and you can ask will my binary run against that system such that you check that you're still compatible across multiple systems so for example if I'm a third party vendor of games and I'm called not mouse but host I check that and then I can verify without executing the game actually that yes everything is compatible or no some library changes its ABI or package version numbers changes such that I need to do something to keep it running or like provide a compact library with my distribution method or do people who do this are not in this room or maybe a question is too confusing I'll write a blog post about it and about the session and notes and see how that goes okay I can look into it and fix them does see how David did not have retry but yeah okay you need to trigger it yeah anything else I'll write up a blog post and it will be on David planet and then the URL to the slides will be there and I'll try to submit them to summit as well such that if you browse in summit you should be able to find the slides as well and if you have any questions then ping me on rcxdocs or email xdocs at debin.org thanks a lot