Well, you probably never heard that tune before on the harp. Good morning, everybody. A happy hello and welcome to another fabulous Sunday here at First Unitarian Society. We're independent thinkers, gather in a safe, nurturing environment to explore issues of cultural, spiritual, and ethical significance as we try to make a difference in this world. I'm Steve Goldberg, a proud but incurably shy member of this congregation. And I'd like to extend an extra special welcome to any guests, visitors, or newcomers. If this is your first time at First Unitarian Society, I think you'll find that it's a very special place. And if you'd like to learn more about our special buildings, we offer a guided tour after today's service. Just gather over here by the windows, following the service, and we'll take good care of you. And speaking of taking good care of each other, I'd like to offer a quid pro quo this morning. If you, if you silence your pesky electronic devices, we promise to deliver a service that will touch your heart, stir your spirit, and trigger one or two new thoughts. We're glad you're here. It is my pleasure and honor to welcome our pulpit guests this morning. This morning we have the Reverend Vale Weller in our pulpit. She is the Congregational Giving Director at the Unitarian Universalist Association. Before that, since 1998, she has been one of our parish ministers and a lifelong Unitarian Universalist. She lives currently in San Mateo, California with her husband, two children, and a lovely big dog. So Vale is inspiring and really helps us think about stewardship as a spiritual practice. Vale, we are so happy you are here, and we look forward to your words today. I invite us into a few moments, about 30 seconds or so, of sinning silence to bring ourselves fully present into this place. You are welcome in that silence to offer a meditation or a prayer or to just be for a few moments. May we together enter into a time of quiet. May that place of deep-centered silence and awareness of our breath lead us into this time of worship. James Baldwin writes, For nothing is fixed, forever, forever, forever it is not fixed. The earth is always shifting, the light is always changing, the sea does not cease to grind down rock. Generations do not cease to be born and we are responsible to them because we are the only witnesses they have. I invite us to rise as we continue with James Baldwin's words. As the lighting of our chalice, the words are printed in your order of service. Here we say, The sea rises, the light fails, lovers cling to each other, and children cling to us. The moment we cease to hold each other, the moment we break faith with each other, the sea engulfs us and the light goes out. In that spirit of light, may we join our voices together in hymn number 347, Gather the Spirit. And while you're still standing, I invite you to turn towards each other and offer a friendly greeting. Let's check in afterward to see if you still feel that way. Let's go into the story now. Okay. Do you call them up? Do I call them up? I call them up now. Well, good morning.  Super close. Super close and cozy. Well, I'm kidding. We don't have to get that close.  In any case, I want to let you know what's going to happen. We're going to be eavesdropping into a family argument this morning. So first I just want to say, in case you were wondering, every family has arguments. It's normal. All families have arguments.  Yes. Okay. Just chat. One brave person, by the way, raised her hand. Okay. So all families have arguments. We're just eavesdropping into a bit of an argument today that takes place in this story. And the character who's speaking is an 11-year-old girl, and her family calls her mountain girl, just so you know. She has called a family meeting. Do you have family meetings sometimes? Well, Mountain Girl called a family meeting to talk about money because she feels very strongly that her family doesn't have enough and that her parents aren't taking this concern very seriously. So she calls the meeting, and so we're picking up the conversation at that point. Can you believe that my father is sitting here looking me straight in the eye and saying, but Mountain Girl, I thought you knew how rich we are? I say, we can't get very far in this discussion if you won't even admit that we're poor. I'll prove it to you right now, he says. Let's make a list of the money we earn in a year. How much is that? I'll write it down. But he says, not so fast. We have a lot of things to think about before we add up that number. What kinds of things, I ask? My mother says, we don't take our pay just in cash, you know. We have a special plan, so we get paid in sunsets too, and in having time to hike around the canyons and look for eagles' nests. But I say, can't you just give me a single number to write down on the piece of paper? You know how parents are. So we start with $20,000. That's a lot of dollars. That's how much my father says it's worth to him to work outdoors, where he can see sky all day and feel the wind and smell rain an hour before it's really raining. He says it's worth that much to be where if he feels like singing, he can sing out loud and no one will mind. I have just written $20,000 down when my mother says, you better make that $30,000, because it's worth at least another $10,000 to hear coyotes howling back in the hills. So I write $30,000. Then she remembers that they like to see long distances and far away mountains that change color about 10 times a day. That's worth another $5,000 to me, Mom says. I'm not surprised, because my mother claims to be an expert on mountain shadows in the desert. She says she can tell time by the way those colors change from dawn to dark. I scratch out what I had and I write $35,000. It is a lot. My father thinks of something else. When a cactus blooms, you should be there to watch it, because it might be a color you won't ever see again any other day of your life. How much would you say that color would be worth? 50 cents, my brother asks, but they decide on another $5,000. So now I write $40,000. But I'd forgotten how much my father likes to make bird sounds, so of course he has to add another $10,000 for having both day birds and night birds around us. I cross out what I had and I write $50,000. Now my mother says, let's see what our mountain girl is worth to us. I'm beginning to catch on to their kind of thinking. So I suggest I'm worth $10,000, even though my little brother has begun to laugh. Don't underestimate yourself, my father says. They end up deciding I'm worth about a million dollars. I say I don't think I am, but I write it down anyway. In fact, it turns out that every one of us is worth a million. So we have $4,050,000. Then I realize I want to add $5,000 myself. For the pleasure I have wandering in open country, free as a lizard, not following trails, not having a plan, just turning whatever way the winds turn me. They say that's certainly worth $5,000. So that makes $4,055,000. Finally my brother says to put down $7 more for all the nights we get to sleep outside under the stars. He'll say $7 doesn't sound like enough, so we talk him into making it $5,000. Now my paper says $4,060,000 and we haven't actually started counting the cash. To tell the truth, the cash part doesn't seem to matter anymore. I suggest it shouldn't be on a list even of our kind of riches. So the meeting is over. The rest of them have gone outside to see the new sliver of moon, but I'm still sitting here at our nice handmade kitchen table with one cookie left on my mother's good blue-flowered plate and I'm writing this book about us. I kind of pat the table and I'm glad it's ours. In fact I think I'll call this story the table where rich people sit. Thank you so much for being here and listening and maybe you can talk about that story more when you get home. We're going to sing a song now to sing the children out that really expresses that beautiful cycle of generosity. From you I receive, to you I give. Number 402, let's sing it through three times. Yes, Rizas, we do. From you I receive, to you and from this we one more time. You may be seated. In preparation for time of reflection, I offer a reading from Unitarian Universalist Minister Teresa Soto entitled The Magic of an Empty Palm. The magic of your palm is that though empty, it can be filled. But look at it, one of the planes of creation with which your body is equipped, lines sweeping out to fingers and the marvels of opposable thumbs, that single leap toward grasping. And do not fear if you do not have hands. We know that you too create. And together we take up what it means to hold a value and make it come alive. More than only thought and feeling rather being, doing and becoming a sculpted expression colorful an embodiment of why we are what we do and what we will yet become. Here ends the reading. Love to have a conversation, a brief conversation with my dear personal friend, Steve. Come on up and grab the microphone. He has no idea what's about to happen just so you know. He's just a good sport in case you hadn't known that about him. Just a quick little chat to illustrate a point. So Steve, can you tell me, is that on? All right, we'll figure it out. Can you tell me what's your favorite ice cream flavor? There you go. Ben and Jerry's Carmel Sutra. Oh, that's a good one. Good choice. What's the latest book that you read? Agent Running in the Field by Jean Le Carré. Interesting. What's your favorite color? Does that have meaning around here? Special local meaning? Okay. All right. I think I might get it. And where were you born? Chicago. And how much money do you make? That's all right. You don't have to answer that. Thank you. Almost enough. You've illustrated my point. So thank you very much. That is, there's something about that question, even the subject that sort of tends to raise anxiety, I notice. It's like an immediate conversation killer. Thank you for being willing to illustrate how much that is true. So why is it that we're so deeply uncomfortable with that particular line of questioning? I mean, I feel myself moving into that fight or flight kind of sensibility internally. My hackles go up and psychologists remind us that if a reaction is out of proportion to the matter at hand, it's a sure sign that there's something larger going on. So let's think about that together a bit this morning. I could imagine that some of you were thinking, how dare you? That's so inappropriate to ask. We just don't talk about that. Why don't we? What is it about this particular subject that is so inherently taboo? I ran across an article recently that got me thinking about this and it was written by Lisa Kressman, who is an Episcopal priest and she runs an online community for preachers called Backstory Preachers. And here are some of the things that she highlighted. According to Lizzie Post of the Emily Post Etiquette Dynasty, the ranking of topics from easiest to most difficult to talk about is as follows. Weather, entertainment, food, hobbies, sports, politics, religion, relationships, sex, and then money. Another study in London revealed that people were seven times more likely to talk with a stranger about sex, affairs that they have had, or medical conditions that they are dealing with, more so than their salaries. Close to three-quarters of Americans think that talking about money is rude. So thank you so much for inviting me into your pulpit this morning, Reverend Doug Watkins, to speak about money, no pressure. I do feel that there are two things going on which inform our reaction to this topic. Put in religious terms, there's been a severing of something sacred. And there's also a cultural wound that's in need of healing. Let's begin with the cultural. It's a very middle-class value and, further, a very white privileged value to not talk about money. So Lisa Kressman, again, helped me to do some digging about this subject. And she reminds me, in England, the wealth of others was easily estimated based on the amount of land one owned and all it required to build up and maintain it. A person's wealth and the status, power, and prestige that it implied was self-evident. People who had money didn't need to talk about it. Therefore, the people who talked about money were the ones who didn't have it. And thus, the discussion of money was associated with those in a lower class. To oversimplify hundreds of years of social development to be classy, meaning to be polite, genteel, respectable, meant not talking about money. And so, this social norm was established, in that cultural context, at least. Well, you know what happened. The early American colonizers from England brought this cultural value with them. And these values have taken hold in our larger culture and within Unitarian Universalism. However, we all probably know that there are cultural perspectives about money and about giving and about that sacred cycle of generosity that do not emanate from the colonizer's perspective. There have been elaborate rituals throughout time in cultures all across the globe in which gifts are abundantly given and received. Only the best is what is given away and to hoard results in being cursed. We know that there are lots of other options for how to deal with money and generosity, but I think most of us feel pretty trapped by the cultural context in which we are in. So what are we to do? Well, I have good news. We're all here together and congregations like FUS exist in order to support us in making difficult changes in the direction of spiritual health. There is power to considering a topic in a deep place of discernment together in community and then making decisions about a different way of living together. There's a different kind of accountability and power. We come together on Sunday mornings or Saturday late afternoons as the case may be not only to experience a pause from the routine daily grind or a pause from the pain or boredom or loneliness of our lives, but also hopefully for inspiration and encouragement. Please note that courage is embedded in encouragement, encouragement to express our highest values through the very living of our lives. And we need to make this decision over and over and over again because we are humans and as humans again and again we fall short of our highest ideals. The culture of white privilege that we move within, and I'm going to pause because sometimes when that phrase is mentioned people go away.  The culture of white privilege that is pervasive in our society at large and therefore influences all of the institutions that we interact with including this one. The culture of white privilege that we move within distorts our perspective which serves the larger purpose of keeping us separate, disconnected from one another. White centered culture also perpetuates this sense of shame around money and we are therefore so much more likely to avoid discussing it at all. We are far more comfortable discussing all of those other things, even sex, thanks to our whole lives, the comprehensive sexuality education curriculum that I'm sure your congregation has used. We're far more comfortable discussing any of those other subjects more so than we are discussing money. I've had conversations with many congregational leaders about asking members to give a certain percentage of their income to support the congregation just in conversation as kind of stewardship consulting with congregational leaders and as an aside five percent is what we recommend congregations invite people to contribute and further we recommend that people who have been part of a congregation for more than 10 years increase to a 10 percent contribution and there's a little easy way to think about that which is 10 by 10. So I just invite you to file that away in your mind as something to let settle in and consider. However whenever this is brought up the concern that is always expressed is for the members that are deemed unable to pledge at that level. What if people can't afford to give like that we don't want to exclude and we don't want to offend and I agree we don't want to exclude and we don't want to offend. However there's a lot of stuff going on here so I'm gonna just unpack it a little bit. So first of all statistically individuals with a lower income consistently contribute a higher percentage of their income to charity than those with a higher income do. So by way of involving you in this question if you were to guess which state had the highest contribution percentage to charity average what would you guess that state might be. Okay I'm hearing a lot of good interesting guesses and somewhere out there I heard the right one which was Utah. So the thing with Utah yes right so the thing about Utah is our friends who are Mormon are asked invited expected to give 10 percent of their income to support their beloved religious tradition. From that 10 percent if they are moved to contribute to other causes they do that on top of. So in the state of Utah the average contribution to charity is 10.6 percent of income. The next most generous states are Mississippi, Alabama, Tennessee and South Carolina where between six and seven percent of income average is given to charity. Who are we actually protecting when we express concern about asking for a percentage of income as a contribution to our congregations. I worry that we're actually trying subconsciously and I do believe it is subconscious to protect people with a higher income. A couple of things I invite you to do a quick calculation when you get home to figure out what your average contribution is to charity generally just so you have that information just so you know that's information for you to to look at and think about. I feel strongly that we need not be afraid to ask our own dedicated members and friends to give to support their own religious home. This congregation, your congregation, is very worthy of that support. These values, your values, are worthy of support even sacrifice. There are so many things about this community that you have to be proud of and one of the first that always comes up when I speak with folks from your congregation is your beautiful and historic building. The building which is a beautiful campus that hosts all kinds of engagement in the larger community. It's the building that is, it's not the building itself although it is stunningly historically important and beautiful but it's what the building makes possible that I know you're most proud of. There are so many things about this congregation that I know you have to be proud of.  FUS is one of the founding members of the Dane Sanctuary Coalition and voted to host someone in sanctuary if that becomes necessary. Your small group ministry program journey circles is thriving connecting people to monthly themes. The lay ministry program supported over 200 members last year with visits and meals and caring presence in times of despair and you have a sustainability series this year helping to bring the values of care for this planet to life. The congregation has long been a lover of arts and music and has been providing a ministry to the larger community making it possible for others to come and experience that beauty. So there's so much, so much that you bring to life here, so much to be proud of and so much to support. When it comes to our relationship with money the other thing that's at work is spiritual. When we forget that we are all connected we labor under the illusion that money belongs to us rather than understanding that money is simply a form of energy that can be used not only to meet our basic needs but also to transform the world in service of the values of love. We may work to earn money but that amount of money does not in any way inform our worth as beings. We may work to earn money but that amount of money in no way informs our worth as beings. It is not our money that defines us. Our culture tries to convince us otherwise by portraying the accumulation of wealth as the ultimate point in living and then dividing us into strict class groups which sever our connections with one another. The separations between us are a part of the sickness of our time and another is the illusion of consumerism as the true religion. In our hearts we know better, we know better but this is the water in which we swim. Nothing at all truly belongs to us. Any wealth that we do accumulate is with us only temporarily and when we cross the threshold out of this life we only take with us the love that we have nourished while here. But I have another piece of good news and that is that there is a way to be reminded that money can work magic. There is a path that leads to re-enchantment and that is the re-prioritization of the common good and our own beloved Unitarian Universalist values in our understanding of giving. I predict that you will look forward to giving generously when you know that it is a way for you to enrich that larger sense of common good, something larger than our own lives, to express interdependence with others and to strengthen Unitarian Universalism whose values, may I add, are sorely needed in this time, desperately needed. All of this has the potential to re-enchant your relationship with money. So I have a proposition for you to consider. I want to encourage you to create an IRA. Now I'm not talking about an IRA that will provide you with retirement funds, that's a different kind of IRA. This is an IRA that's an integrity resource alignment. If you were asked by your best friend or your child or your co-worker what your highest values are, really what would you say? I don't believe that you'd say that your highest value is the accumulation of stuff.   I don't believe you'd say any of those things. Instead I'm guessing that if your child or your grandmother or your best friend asked you your highest values you might talk about your belief in using your gifts to make the world a better place, the inherent worth and dignity of every person, the interconnectedness of all life, spiritual growth. You might talk about working for justice, equity and compassion in human relations. You might talk about your belief in freedom for all people. You might lift up love as the most important value. These are Unitarian Universalist values, values that I am guessing are at the very heart of your life. Only you can answer the question of if these values are at the very heart of your giving. So I invite you to consider that deeply, personally with your family members and with your other compatriots here at FUS and then I invite you to align your resources with your highest values by contributing a noticeable share of your financial energy to FUS, your spiritual home, which is at work in the world to address the challenges of our time. When I say noticeable share, I mean giving an amount that you actually feel and notice in your daily life, an amount that centers your commitment to this place and its principles as a way of practicing your faith. This is what makes it a spiritual practice. It means not wavering from this commitment and allowing your discretionary income to come after this commitment. I predict that if you experiment with this, you will not find that your lifestyle is compromised. Try it and report back how you feel to your friends and compatriots here. So just to pull a number out of thin air, you could begin with contributing 5 percent, which is half of 10 percent, which is what our friends who are Mormons contribute and then some. And I have nothing but respect for people who are in other phase following their conscience, but I feel a little bit resentful, I guess, that we don't fund our values to the same degree. I think they are worthy of that support. So this is a lot of heavy stuff that I get to fly in from away to say to you and then fly home again. So I just want to say, if there's anything that you do take away from this, let it be this next little exercise that I'm going to ask you to participate in. So simply just take your hands, just do what I do, and you can trust me that it won't be painful. Just take your hands and outstretch them if you would and then squeeze them as hard as you physically can until you feel it and then release. Let's just try it again one more time and release. Just notice the difference in how it feels in your body, but also in your spirit. Erwin Raphael McManus writes that generosity is about being free. The generous are free from the things of this world. While they may own possessions, their possessions do not own them. They are free from taking for their own benefit and are free to give, even when it results in personal sacrifice. Generosity, he concludes, is love in action and love is measured in giving, not taking. Although I would say that there is a time to receive. We aren't always the best at that either. So that's another sermon for another day, in any case. We believe in freedom for all people. We believe in religious freedom and democracy and all of the other kinds of freedom. I want you to be free in all ways also. I want us as Unitarian Universalists to be free from the illusion of separateness, free from the lie of consumerism and free from shame around money. I want you to be free to re-enchant your relationship with money, to have it feel magical again and know the good that it's doing. I want you to be free to give your best share to serve your highest values. I want you to be free to align your integrity and your resources. I want you to be free to be truly generous, to contribute more than you even thought was possible and to experience how healing that generosity can be. I want you to be free to give. May we each know what it really means to be free, to use our temporary resources to serve the greatest possible good and to invest a noticeable share of our income in this community which transforms lives and represents our highest values in the public square. It is in our hands. May it be so so that we may give love and generously and freely. Amen. Thank you, Veil, for that really inspiring and meaningful message, and it is appropriate that we move into the time of the giving and receiving of the offering, which is a weekly invitation to that re-enchantment of the deep alignment between the resources that we have in our integrity. May we experience this time as liberating and calling us to freedom. To remind us that this offering will go to support the many programs that First Unitarian Society offers to each other into the larger world, many of which Veil illuminated today, but also this week 50 percent of our offering will go to help veterans for peace. I hope you will take a moment, if you've not done so already, to look in the red floors to read more about their important mission in the world. May this be a time that brings us into powerful alignment and helps us be free. We will now give and receive the offering in a spirit of love and generosity. And so today we've been generous with our donations, we've been generous with our music, and now we get to talk about being generous with our volunteer time as we salute, embrace, and thank those who volunteer to make this service run smoothly. Starting with Tim Conroy, his maiden voyage running the sound system. I think he did a great job today, Tim. Thank you very much. Look at that. Let the record show that's the first time anybody's ever applauded the person running the sound system.  Brian Chanis, Marty Hollis, Michael Losey, and Ann Ostrom. It took four ushers to control you today. Hospitality and coffee are being lovingly prepared in the kitchen by Biss Nitschke, Mary Bergen, and Teresa Rademacher, and our tour guide as always is John Powell. Just one announcement, and that is art in the right place. Our annual art fair occurs in a couple weekends, November 23 and 24, and there is still plenty of room for volunteers. So thanks for those of you who have already volunteered, and that is the end of the announcements. And pretty soon you'll be able to reactivate your pesky electronic devices. Before we move on into our day, may we take a moment together in community to reflect. One of the greatest gifts is that, days and weeks into years, we come together week after week, and we bring all that is true in our lives, and we offer it here. So for a moment, reflectively, may we let our breath bring us into a place of awareness and mindfulness of this here and now. And from that grounded space, may we take just a moment to think about the week, to reflect in our own lives, in the lives of those that we know and love, and in the larger world what is true. May we be aware of the moments of joy, joy, celebration, wonder, in your life, in those that you love, the larger life, in what we do not yet know, for just a moment to hold it and honor it, and let its pulse and joy live in you, and a deep breath in, and release to connect it with all that is. And we also come to this space with difficulties, and loss, and sadness, and frustration. May we hold that as well, our own, the difficulties in the lives of people that we know and love, the large or pain of the world. We hold that in this space too. Bringing our great compassion, our call to do what we each can in healing, justice, love. We know that by doing this practice week after week, we call ourselves into greater relationship, deeper relationship with ourselves, with each other, with the great mystery. For this and more, may we always be grateful and attentive. We hope and pray in the name of love. Amen, and blessed be. May we rise in the ways that we do, and join in him number 151. I wish I knew how it would feel to be free. As we sing this song may we access that deep longing for freedom and connection with the writers of this song. Love in my heart, keep us apart, could know what it means, everyone. Then you'd see and agree, for everyone should be. I wish I could give all I'm long, advice I'm long, could do all the things I can do, though I might be stuck. I wish I could be like a bird in the sky. How sweet if I found the sun and looked down to the sea. Then I'd sing because I know how it feels to be. As the chalice is extinguished and we move out into the rest of our day, as you go, may you feel the embrace of this community, the calling of the spirit, and the purpose of your living. May you go in peace and with great joy. Amen. I invite us to take our seat and receive one more gift of music before we move on into our day.


Welcome everyone, it's another morning in Debconf and for the first talk today I'll be talking to you about what we have been doing in in BMW for the testing of embedded devices and what parts of that I will try to bring into Debian so that other people that are developing hardware can benefit from whatever we are developing in-house and can try to use the tooling that we have and hopefully contribute to it as well. First about me, just a bit, so I'm Igar Smachinos and I've been a Debian developer for a long, long, long time and I've been a Python developer for almost as long and so for the last 12 years I've only developed in Python. In my previous work history I worked some time for Nokia doing testing for them and then was doing some testing for the UVU setup box for the BBC so that was another part of embedded hardware that I was helping to test to bring to market and after Debconf 15 I joined BMW CarIT which is like a sister company of the BMW Group where all the software talent is concentrated and grouped together so that we can bring the best of IT area knowledge to BMW processes and since then I've been busy testing the next generation head unit for the BMW. So let me recap a bit more a bit from my last year's talk where I was talking about what kind of computers are in the cars. I can be slightly more specific this time because finally the software that we have been developing is actually in cars that are going into release now and the interfaces have been shown in public so when you get into a car right now a modern car you will be basically surrounded by screens. You can see some of them here you can see a screen in the central console with the with the map you can see a screen just behind the steering wheel with all kinds of indicators and maybe even a map if it's the car is new enough you can see a screen on a heads up display with another set of indicators you can see a screen for the climate control in your cars you can see even a screen on your on your lock on your remote and behind each of those screens there's a computer which is running software and most of those screens nowadays are strong enough computers behind them that they can just run almost regular kind of linux with applications running on top of them but that is just the tip of the iceberg because there are far more computers inside every car and there will be plenty more a modern car can have up to 80 different computers in it most of them are really small specialized units like the ones that are controlling the abs or the ones that are responsible for communicating with the with the mobile network so like a small modem with a built-in firewall and all kinds of security protections that then gives communications interfaces to the rest of the car there is a movement in the automotive industry to consolidate these 80 computers into something into a smaller number but as soon as you consolidate you bring up the complexity and the more complexity you have the more you need testing to bring to make sure that your complexity doesn't break functionality another big impact for the especially the car market is the longevity of our releases for example if we would start development of new software for a car right now if we freeze the version of every package that is going into a car right now optimistically that software will be actually released to the first cars in approximately two years after that it will take another probably four to five years for that new software to be extended to the whole range of BMW cars after that it will take another couple of years for that software to be released to all range of mini cars which are using basically the same software and another couple of years for that software to be released to a whole range of Rolls Royce cars and after that has been done you actually need to support that software that has been released for up to 25 years so yeah as soon as we free software now we need to do support at least in the sense of security updates for between 25 and maybe even 35 years when you looking at these kind of timescales you can no longer rely on people developing software now even being around at the end of this support cycle some of them they will be they will they will go on to other things other software probably other companies maybe even entirely different career paths so to do the updates of 20 year old software successfully you need to have a lot of testing infrastructure in place a lot of automated testing infrastructure in place that will continue running and continue providing you information if the functionality in your cars is still working after you've updated some library with the new security patch this brings me to what we do for testing in the project called MGU so the media graphics unit that's the computer that is behind the central console the navigation screen where we have the navigation the multimedia and configuration of your car all that kind of stuff so in that in that software project we have 194 git repositories where people work on the on the on the software we have 60 64 SVN repositories we use those to do like binary releases so some parts of the some parts of the software is so hard to build that we don't usually build it fully from source every time we actually build a binary release committed to SVN and then in the whole build process we check it out from the SVN again we have 62 meta repositories that's representative of like domains like navigation domain multimedia domain security domain those they are working in their own in their own silos and then the 62 meta repositories get integrated into one base repository as sub modules which then represents the whole software release and it contains around 11 000 packages that's that's quite a lot for such a relatively simple device as what we have on the on the central console in the car we have an image there's more than a gigabyte we have a 12 gigabytes of extra packages mostly that's debugging information and extra information that is required or extra code and tooling that is required for testing four hardware variants and 30 different partitions across these variants so each of those variations actually needs to be tested and we do three testing levels so uh so there's a there's a functional level inside the inside the specific domain so navigation domain for example they have like tens of thousands of unit tests and their domain level tests that that they do and once those pass that goes into a meta repository and does integration level testing and once the integration level testing passes we gather changes from all the meta repositories into one place and do a release level testing and when that passes we actually create a new release that development continues on from there from there on at each level the software needs to be built images for all the variants need to be created and build acceptance tests for every variant needs to be run and pass on both virtual and real hardware for the changes to be promoted up next so every day we do this this whole process for five up to five release candidates for up to two branches so for example there are cars that will be going into production this autumn so there's a branch that is targeting those cars and then there are cars that will be going into production next spring and they will have slightly different feature set so there's a separate branch tracking those changes so we have to do around 800 system builds every every week and 2400 component builds approximately every week there are there are more than 2400 tests executed on each each each time build is completed so every week more than a million three hundred three hundred thousand tests are executed there is a lot of hardware doing that so hundreds of machines thousands of cores terabytes of ram hundreds of terabytes of storage being used for for all of that and when all that is completed we can create a new release and that's that's new and shiny and then the real testing begins because when the release is completed we run run it through way longer testing scenarios that can take up to a week to complete so like a question being for example if you power on the car and leave it running for for two hours does it go into a low power mode when it's supposed to does the target reboot start from new if you if you leave a car for for several days it's supposed to power down completely so it doesn't drain the battery and then when you come back it's supposed to power up really fast so we do that kind of testing after the release is complete and a lot of other kind of tests because after after my group is done with the software it gets shipped to several dozen other groups around the world who then flash the software to real physical cars and go through testing scenarios by driving those cars so if there is something critically wrong with that software they would have wasted a lot of time and a lot of money if we if we pass that software on to them so to do that kind of stuff we've developed a bunch of testing tooling in house and what what I want to do is to get at least the commonly useful parts of that tooling out into the public and get it integrated into debian so that every developer who does any kind of embedded development tasks can either use that directly or look at that for for inspiration for their work this is how the end product looks like this so this is the the the screens that will be going out now in the new bmw x5 and the eight series and yeah so it's both both the central console and the so-called combi or the the instrument cluster that is just behind the steering wheel they're both using the same the same applications the same graphical toolkits to to to produce their results so let me step back back in history and talk to you about autosar and genivy so sometime ago automotive developers recognized that they've been all building very very similar boxes that do very very similar stuff but every one of them has been reinventing the wheel in terms of how these boxes are built how they talk to each other what exactly every box is doing so how how the work is divided between the boxes so they came together and creating the autosar consortium where they started to unify standards on how the devices in cars should be should be constructed what should be the overall framework the overall architecture how devices should be talking to each other and how the devices should be developed there is a lot of a lot of lot of paperwork a lot of all kinds of standards and some of them are even useful so i'm going to talk to you about one of them so dlt is a diagnostic login trace that's the interface defined in autosar to help development of embedded hardware it's a way of getting diagnostic logging and tracing information out of the hardware the actual implementation so the autosar only does like specification standards it doesn't do any any actual software the actual software for all of this is being developed by another industry group an association called genivy and in this case genivy developed a set of set of tools to working with the with the dlt it's focused on what's happening with the device during its development during its debugging when the software is released most of those features usually are turned off so the idea is that the dot is a demon and that's running on the device that is collecting information from a bunch of sources including system log including adapters that would feed all kinds of useful diagnostic information into the demon by default the demon is supposed to store the information in ram not actually write it anywhere on the disk so that it doesn't doesn't disturb the device being tested as much and then when you connect to the demon with a with a dlt client it will dump all the information that it has to this client so you can get the log from the very startup of the device as soon as you connect to it and from there on you get the incremental logging from what what what has been happening since then it by when you've connected it you are getting the basically streaming stream of the logs from the device in near real time there's there's a bunch of tooling to get the different priority levels so one of the key points of structure of the dlt log is that every provider of information declares their application ID and the context into which they're logging so there's two small textual IDs and each of those IDs can have different logging level defined so you can say okay I've connected now to the to the device I want the syslog to be only and show show me only errors from syslog but this application that I'm running that's specifically made to be dumping a lots of information into the log I want debug level information from that so the client that is connecting to the to the dlt demon can actually control which messages at which debugging level it will receive and then you can you can filter down what what you see by the application ID and context ID easily you can log not only textual data but also binary data because the log messages are defined as a set of variables which with types so you can actually efficiently transfer binary data out of out of the device it's time stamped on the device it's time stamped with uptime and a dlt receiver timestamps when it received every message and as this is an automotive thing it's not about just the devices that can actually run linux or complex hardware or software it's also for smaller devices so smaller embedded chips that do not run a full operating system can still produce dlt logs and there exist specific hardware devices intended to be connected to the like like a car network and receive dlt logs from dozens of devices at the same time and writing it all down onto like his and his dcard so you can use such a logger on a drive and collect all the information from all the devices with synchronized timestamps the logs like if you're transmitting a binary information from the from the device you can have the binary information in the logs and that is useful when you want to get core dumps for example and that is one of the things that is quite used so when your application crashes you get a core dump and sometimes the device does not really want to store a couple hundred megabytes of a core dump that will be disruptive so what the tooling around the dlt does it takes this core dump and transmits it through the log and erases it from the file system so it doesn't burden the device anymore and a client can yeah can also inject lines into into the log which is used in testing for example to indicate through this log in a time-synchronized manner when a test a particular test case starts and stops which is then useful in analysis we use the dlt logging a lot on our devices so we can often see the cases where there's thousands of messages going out every second and a test run can produce gigabytes of logs naturally when you have thousands of messages per second and gigabytes of logs you're not going to read it as a human being you need some tooling to help you with that and thankfully there's some tooling provided on a basic level if you actually want to just read stuff and actually see what's in the log there is the tool called dlt viewer that is provided by by jennivy it's a GUI tool to to open the log file to see what what are the messages to filter the messages by all kinds of criteria and look into the actual like binary data for example but yeah if you have if you have if you want to have more automation out of that that is not going to help you much so for that inside bmw we've written a tool that we call dltilize it's a framework for analyzing dlt traces it's a python-based tool where you feed a stream of dlt log messages through a bunch of plugins and each plugin is responsible for extracting whatever useful information it can find in this dlt log there is it uses libdlt which is which comes from jennivy and a python adapter for this libdlt which was also written in bmw to parse the logs in c and have the business logic in python so we can have the best of both worlds i can say right now about the licenses the jennivy tooling both jennivy tooling and the bmw tooling for this is released under mozilla public license version 2 plus and that's how it's going to be published in debian as well so the plugins initially declare what application id context id they're interested in so that allows efficient filtering so not every plugin gets fed like tens of millions of messages and they get informed when the device starts up when it shuts down when the testing cycle actually ends so that they can report stuff when it's done and when we do analysis the plugins take some information from the logs and produce output files like ccv files that i'll show in an example next and when we do testing using using this tooling we have a way of the for the for the plugins to produce test results in the j unit format so that you can report pass fail you can say from a plugin why exactly you failed and that way you can actually write tests on this basis so that again scales up to to the scales that we're working on so thousands of messages per second and with hundreds of plugins running and because it's using using a separate file to store intermediate data it doesn't it doesn't block the logging process so here's an example the code is there'll be a second slide with the code the idea of this plugin is to take information about memory usage so we're assuming that on a device there is some kind of tool that periodically logs into the into dlt the system memory information so mem available mem total buffers cache shared and it's just just logging that into into the dlt log like once a second for example so the plugin here is for in its initialization is just opening a csv file that will be the output for the plugin and sets all the all the class variables to to their initial values then when devices started we see in the in the dlt log that device has been brought up we save the lifecycle id so by lifecycle we mean okay how many times this this device has been booted up so that's the lifecycle within test lifecycle zero the first time it's up and then call is the the main function which gets called every time there is a message that is map matching the filter that we have defined before as app id and context id so this receives the actual message saying oh there's so much memory in this in the system so we take that we parse it out split by values and just write into the csv file whatever values we we found so this this particular plugin doesn't doesn't do any processing or analysis on the actual data it's just taking the data and dumping it but you can see how you can do more calculations in this in this context and at the end the report just just closes the csv file and it does a test so we've been during this the execution we've been storing minimal memory available so what's the what's the minimum during the whole test run the memory available has been and if that is less than a gigabyte then we add a failure test case to to to the result if it's if it's fine then then it's a success by default and and there is an error message that will show up if you if you run this kind of thing in a Jenkins you'll you'll have a result html xml file so it will show up as a test failure and on the right you can see the output of this of the script so on the top you can see the the basically the csv file that was produced you can have you see the uptime time you can see the values for all the all the memory values and on the bottom I just took it and open office calc and created a graph so we can see that the memory available stabilizes soon after the boot up so that's good we don't have any major memory leaks in that which is kind of the point point of this particular test exercise on top of that what so that was about the DLT lyce tooling about analyzing DLT logs on top of that we want to also release a test run environment so that is a bunch of tooling based on on on on top of knows for executing tests the idea is being that you define a class that controls all the aspects of your hardware device so how do you actually power up your hardware device what kind of modes does it have how do you run a command on this hardware device and then this this tooling around it does a full cycle of testing on a device so it sets up the test environment starts dumping all the relevant log log files it prepares the target so it's actually it switches it to a flashing state flashes the software switches the back to normal running state verifies that it actually came up and make sure that the like the DLT log is started and puts into DLT a message saying setup is done all good let's start tests it gathers tests so we have hundreds of development teams so we we actually need to gather tests to be run on a device from hundreds of folders which also define what type of test every test is with the meta information written on top of the test but sometimes we don't want to fully trust that because we want to have more control over which test is actually considered in build acceptance criteria so we have separate file that is under control of the release team that defines okay these tests are actually build acceptance tests and these are not and okay this test this particular one test it has been flaky lately so we still run it but we do not consider it's failure to be a fatal for a fatal error for the build acceptance criteria and all that kind of filtering and additional information is what is happening inside this XTE framework test collection suite that is added on top on top of those in addition of course there's on the retrying of fail tests if that is useful in some cases and XTE also marks inside the DLT log okay now we've started this test case then you can see what's happening with the device during the test case and here we ended the test case in case the target has been well damaged by the test in some way if there's a crash for example what it does it makes sure that we have fully received the crash dump from the target and then we usually restart the target reboot the target so that we bring it back to a known good state before we execute the next test otherwise you could have like one test doing a crash and then 20 tests right after it failing because they cannot connect to the target because it's down and the logic specific to a target to a device it's encapsulated into into python classes and we use the hierarchy of python classes to define common behavior related devices related variants of devices so we currently are using this in three different projects inside BMW and during the extension from one project using this to three projects using this we have now defined a common core of the XTE that is useful to all of them and we are still we're still in process of reviewing what exactly from that is useful for people outside BMW so it's not fully ready for open source release yet I was hoping it will be ready by this talk but it's it took longer than expected and and when that is done then that will also be released as open source and packaged for debut and for for other people to use there are other things in this this this framework that define how it's how it's how it's working so this objects that are not that are like a global level a single ton object so the target is one of those so you can have a you can have an object and code inside of it that encapsulates all the communication with the target encapsulates all the information about the target such as which exactly mode it has been booted on last like take a screenshot so you can have a function on that level to have to do that and there is a DOT monitor thing that it's a it's a class that is running in a separate thread that is looking through all the DOT messages coming from the target and manipulating state machines on the test host side to to indicate to tests in what state the target is so is it like oh everything is fine all the systems are running all the services have been started or we are actually recovering from the crash right now and every test can do do things like okay we we've started monitoring of the of the of the DOT log then we do some kind of action and instead of trying to figure out if the reaction of the target is good from like screenshots we can actually make the software on the target log into DOT information about its current state and then we can in the test see if that state has been reached from the DOT log so that makes the automation of the testing much easier and in parallel to test execution what xt also does is it runs the DOT lice on the DOT file so that you get the live analysis of whatever logs you get from the target so as soon as the execution is over you already have the results from that as well here is a example target setup that we have so we have a target device and a test host the idea is that target device is fully isolated from the rest of the world it only communicates with the test host through ethernet can serial whatever whatever else is there and then the test host decides if he wants to forward whatever request the device does so in that way you can if your device for example connects to a service to get information about updates you can intercept that from tests and provide fake fake update information to test that that kind of functionality and for power control we use Arduino with very simple software inside of it power relay so we can just switch off power of the device we also use that that particular setup with the Arduino and the relay to trigger buttons on devices to connect and disconnect usb devices so we just have a like a usb plug which has a couple of things soldered onto it soldered onto it so if we bridge them then usb devices live and we disconnect them it's offline it's disconnected so that way we can control these things from from software and then this whole this whole structure runs and it produces you a set of reports of what is the what is the state of the of the of the target right now what i what i what i wanted to do with this is to get as much interesting value from inside the debian inside inside the bmw into debian into the wider open source community like like in every company there is naturally a bunch of a bunch of code a bunch of software that is like really specific to what we do and some of it that people are not even proud of being written but it had to be written but then there are things that are useful and that will also be useful to others i think this is one of them and i think there are more of them hidden inside bmw hidden inside other companies and so i've gotten the permissions to release this this software with the idea that maybe other other companies other people will be will be using this and if it's good and useful maybe they'll also start contributing back some changes to it and if that that particular avenue is successful then it will be far easier for me to convince management to release other parts of tooling that might be useful to others therefore the my request to you is just to look at this to figure out maybe it's something that could be useful for you maybe not only in embedded devices you could try seeing if this could be useful to test like cloud server instances or other types of systems and see how that goes as i do not have a full running setup right now to to to show you as a hardware setup i will be writing a set of blog posts later on also aggregated on planet debian to show exactly how how to create an example uh test setup using something like a raspberry pi as a target device and that will that will be the thing that that will show you more step by step how to use this thing eventually my goal is to have this fully packaged in debian so that you could just take a debian system install a couple of packages and have a an environment to be able to test your hardware so that is it and any questions now microphones in front of that yep just keep going hi thanks for your talk i'm curious to get about um you uh maintain the packages and uh i mean you freeze the package and then try to release the packages right if there is a something like security issue and then you have to update your package so uh how do you define your testing coverage to make sure it is not too big or too small yeah thank you yeah it's a it's a big and philosophical problem on uh so when you do especially it's like security release how how much do you test and what's what's happening with the with the packages there um basically we when we do a release of software it goes through all the testing that that we have and both automated and manual testing in actual testing cars so that does mean that uh releasing something as security release would would take a while if there is a critical problem there are ways to disable functionality in cars really fast so there's coding on the cars that determines what functions are enabled at disabled and that can be rolled out really fast to disable a function and then later on maybe in a couple of weeks you can release a an update that makes that function fixed and then re-enables it so there are there are ways to do that but it also depends on the on the on the security on the software update functionality actually working fine which has not been the case before in the cars has not been real focus for the cars okay thank you more questions no i'll then show you something so here is a it's this way here's a duty viewer it's currently connected to my laptop so my laptop is well it's a buntu but yeah kind of kind of the bianish but the idea is that we have a dlt demon running on this laptop that gets some information from it with the default tools that are included and is logging a bunch of information into the dlt log um we have and says journal we actually have information about from from system from system log from system d and so every message that gets logged there will also be transmitted to the to the to the dlt log there's a that's a separate plugin which with a bunch of configuration to it so what information you're putting into there under what app id context id and all that that kind of settings and here as proc there's a tool called uh dpl kpi so key performance indicators and it's logging all kinds of information from proc about uh load of the system what processes are running how much cpu time and memory have these processes been using in the last second so that's dumping a lot of performance related information into the dlt log which you can then again pick up and analyze with uh with dlt lies to figure out what's what's happening on your device during test and currently in dlt lies release there are no plugins to analyze these particular bits of information because we internally have a different tool that does similar things but uh that's one of the things that i also intend to write so that you can have a useful analysis of this default process logging as well to figure out that's it i have a general question so suppose i want to buy a car with a like a free software operating system and which one would be the best in the market a car system that can be hackable unfortunately i do not think that will be ever a thing yes the problem is that in many jurisdictions it's actually prohibited by law to sell cars to customers with uh modifiable software uh it's required uh that the software on the car that the whole components of the car including the software are actually pass uh pass verification pass certification by the government authorities and the certification parts of certification require that no uncertified software can be installed so yes unfortunately that's the the way it's it's forced the idea is so that the cars on the road do not cause trouble for other people on the same roads so it's not about you being harmed by the car that you've hacked what about other people being harmed by the car you've hacked for yourself yeah we are basically out of time unfortunately so uh i'll be i'll be around to answer all your questions in the in the hallways and so far thank you


President Mohamed Abu Hari has assured the Manufacturers Association of Nigeria man that the federal government will take appropriate measures to improve access to foreign exchange for importation of raw materials and machines that are not available locally. The president spoke on Wednesday at the presidential villa Abuja during an advocacy visit of the leadership of the man. He told the executives of man that the relevant ministry will visit their concerns about the increase in excess duties on the identified products and other tariff-related matters. President Buhari also assured the man that Nigeria will take steps to fully maximize the benefits of the African continental free trade area.