I think everybody is in. We can start. Thank you all for coming. I'm a firm believer of open source and sharing not just knowledge about code, but also about how we can run our businesses better, how we can run our businesses more sustainable, how we can earn some good money. So we've been on a journey with open social for three, almost four years now, and I would love to share a little bit of our experience there. I'll try to jam all these years into 15 minutes in question, so please come see me afterwards if there's anything I haven't talked about. There will be a lot more. We have a booth downstairs. So for those who do not know me, my name is Taco. That's really my name, not a nickname. It's a Dutch name.  I'm co-founder of Golgorilla in 2008, and we started the open social project in 2016. I've been on the board of the Dutch Drupal Association, so many familiar faces here, so we're happy to see that. Since last night, we can announce we are winner of the International Special Awards. So if you think I look much better on the picture than in real life, that's because we had a really good night. I told my team I think that last bottle of wine was too much, and they said, well, actually, you got shot after that, which explains why I felt so bad this morning. But it was great, so yeah, we're happy to see the Special Awards now in 10 countries once we started it here in the Netherlands, so good stuff. So yeah, most of you know us as Golgorilla. We've been at 12 years active in the Drupal community under this name, and yesterday, if you've not seen the announcement, we announced that we're actually dropping the Golgorilla brand, and we're only being known as OpenSocial from now onwards. So it's very exciting for us to continue under this new name, and it also speaks for the success of the project that we do not work on any other Drupal project anymore other than OpenSocial projects. And I'll tell a little bit more about that journey, because it was quite a journey and still is. So every time I talk to investors or I talk to entrepreneurs, they always say moving to a product company is really, really difficult. And I'm like, yeah, yeah, if I had a euro for every time I heard that, I would be very rich by now. But, okay, why is it so hard? And I thought, you know, how hard can it be? And we've found the last three years and it will be quite challenging, so I think it's good to share those experiences so you guys can learn from it, and I'll try to drive home a few points that I think are very important and I wish somebody would, you know, stress me about when we started the whole thing. You know, it's a simplified presentation, so don't pin me down on this is not our only company goals, but for today this is the most important thing. So who of you have a Drupal shop or a Drupal agency doing hourly rates work? So yeah, and who is doing products already? A few? Well, yeah, if you're very successful in products, you don't need to come to the session. Who of you is doing services and do you want to make a product or is building a product? So pretty much everybody that has a service company wants to do products and that's also what we were doing. I gave some other talks about, you know, why we moved to this direction, so look at those, I'm not going into details, but again at the booth I'd love to talk more about it. You know, the service is you need to sell hours. So a client comes to you and says, look, we have this problem, fix it for me. You said, yes, we can fix anything, right? And the scope doesn't matter, you know, you just have a huge budget, we'll sell hours.  That's this very simple business model. But in a new model, you really need to do one thing and do one thing well, it's maximize recurring revenue. Every time I talk to investors, they want to see your KPIs, but this is the one they want to see, recurring revenue. They don't really care about your selling hours, you're doing a lot of development work, design work, it's all about maximizing recurring revenue. And that's a really different business model and it's really hard to get that right. And I'll show you a bit of data on how we're growing into that. So again, the business model is changing and also what is really tough in this is that your whole financial system is changing. So what I also didn't realize is that it's very comfortable to sell projects because we ask an upfront payment.  This is great, so you can pay your salaries and then you build a few months and then you either build a project and you get the money or usually now we do agile development so you sell the hours every month.  So you really get the work done and the payment upfront. But in a new situation, you're selling a product, you first need to build the product and then you start selling it. So you only get money after you build the product. So it's a complete different way. And that causes some problems.  So if you build a product and we're selling this for a thousand euro a month, this is really good but I only get a thousand euro from one client and another thousand and another thousand. And we can do this for 36 months or 48 months and in the end it's the same amount of money but I get it only in years later and this causes a lot of a problem because you need to bridge that gap. And if you're a service company, you don't even realize this, right? So you can start like us from our dormitory, you don't need to make big investments. But we do with products. Also, in my experience, marketing and sales is quite easy. You know, we do the marketing, people come to us with their problems, we offer all these great services and we start selling, you know, the dream. And the client loves your portfolio, you know, you don't need to show the work. You're like, okay, we can do it, we can do it on time, we can do it on budget and the client needs to trust you and that you can get the work done and usually they do because you have a great reputation. So your marketing and sales is quite cheap.  So you need to sell something, you cannot sell the dream, you actually need to sell the product and there's no way around saying, oh, we can add that or change that. No, the product is what you're selling in the moment and it's really expensive to get these clients. So usually for business to business size, one-year payment is like a good amount. That means if you ask a thousand-year-old a month, getting a client costs you about 12,000 euros. The marketing and sales expense and you pay this upfront, right? So every client you get, you pay first, marketing and sales, then the client starts paying a monthly fee and then maybe in the second year or in the third year, you start making some money. And this is really hard because that means you need a lot of money upfront and even if you're more successful onboarding, getting the clients onboard, you start paying more money. And this is something that we kind of knew but we didn't realize. So we at first invested a lot in the product and they're like, okay, now we need to sell it. Oh, okay, we need marketing campaigns and we need a sales team and we don't really have the money for that, so how are we going to do that? And that's really hard because then you're in this circle where it's very hard to get out of because you need to start selling the product more. Otherwise you cannot invest big in the product and it's hard to break this circle.  But in a new situation, maybe you have four clients, they all pay 4000 euros a month, which is great. You know, it's still good. But you only get 4000 and how do you pay your salaries and how do you pay your office cost? And this is like really something that is difficult and you need to think about this in France. So just driving at home, how do you invest in your building your products? Getting your core team out there.  But they're not doing any billable work for you. Still you need to pay the salaries. So how do you do that? Then again, spend a lot of money on marketing and sales. There's some really good examples of companies here like Acvia, Benzian, Platformer Sage. You know, you've seen their sales and marketing efforts and teams, right? That's really what they're good at. But they also need to do this in order to be successful. And then we need to balance this with a revenue that comes maybe years later. And usually when we talk about startups and the financials and it's very sexy to talk about the last period in this graph. Like, okay, you know, this company got 10 million investments and oh, they're doing great. And this is really good for news and it gets us all excited. But actually the first part of this graph, the value of death is where most companies 70, 80% never get out of. And why is that? And why is there so little focus on that?  You need to pay your office. Still keep doing this in the meantime. You need to get this marketing and sales on board. And also run your traditional service company at the same time. And that's why it's also called the value of death because most companies, they do not get out of it. Either they cannot get their product to market or they can get the product to market. But they've, you know, forgotten to invest in marketing and sales. People are not buying it and they have to switch back to the service model just to pay the bills. And this is a big danger and it's also something we had to do in the past because we couldn't pay the salaries. So we had to switch back to our old agency model in order to pay the bills and get some non-recurring revenue and do some different projects. And before you know it, you're back in doing agency work and you're stuck in that. So we did it a little bit different. We used 200,000 euro in crowdfunding. We have 115 investors, maybe some of them are here. We also spent about 300,000 euros that we already earned in the years leading up to the project. And with that we set a team apart to make sure we could build a product and use the entire year to fund that. But that only got us through 2016 and the product was in beta. And then, you know, how are you going to balance your agency work and then moving to the product phase? So this is pretty much what that looked like. So you can see the blue was 2016. We were doing agency work and then what we really want to do is drive that purple. You know, the purple is the recurring revenue. So you can see in 2016 we're starting to do a little bit. But we also were doing a lot of non-recurring revenue for OpenSocial. So our goal is always being to slowly turn the agency around. Like an oil tanker sometimes. And try to grow that recurring revenue. So that's the subscription model, the SAS fee, which is really the thing that you should be focusing on. But we also need the non-recurring revenue just to pay the bills, just to get everybody happy. And what we did was we used a lot of the non-recurring and OpenSocial revenue to funnel back into OpenSocial. So I'll show you a little bit about extensions that we built for the product. So what we tried to do was, okay, we can do some services for you, some extra development, but only if it is helping OpenSocial forward. So this year we are doing like one-third recurring, one-third non-recurring, and still one-third of goal gorilla. And early next year we will completely shutting down goal gorilla projects and only do OpenSocial projects. It's still exciting. So we have to really focus on driving the sales. But for us it's been really successful in order to funnel the work that we do for goal gorilla, funnel the service work for OpenSocial back into building OpenSocial and building this recurring revenue project. But that does mean you need to double your SAS sales every year and that's a lot of effort and that takes a lot of investment in marketing and sales. So we're talking to investors about speeding this up a little bit, but I cannot tell you more about that now. How are we on time? Yeah, pretty good. So I just want to drive some five points. What is really hard is to change your company DNA, but you have to change it because the whole mindset of us in a service company is the client is came, we want to sell ours, so everything that they come up with, you know, a new design, you know, a new feature, in the end we'll do it for them, a migration, an integration, and we do this very diverse. And we have to because, you know, we can build on these ours and it's good for us. But now you're selling a product, you know, so you need to stop thinking about, okay, how can I sell ours to the client and start really thinking how can I sell this product? And that's really hard for us as service companies because it's not in our mindset and it took us also three, four years to start changing this, not just for me, but also the whole developer team, for example, and the project managers. So this is the pricing point, the pricing page of OpenSocial. And we're really focusing now on this basic and pre-medium tiers. Basic is fully automated, so you can just install it, it takes a few minutes, and then you get an email, your OpenSocial installation is ready, you pay it by credit card, we have a Stripe integration. So this is really a SaaS product built on Drupal, fully automated deployments, fully automated updates, and you know, you can get up and running quite fast without any technical knowledge. And then we have a premium version, and that's the one that we can enable extensions with. So we have a very cool extension pages like e-learning, courses module, collaboration feature, office integration, single sign-on, but we only enable them in the premium package because the basic package should be, you know, you can get up and running fast, pay a very low monthly fee, but if you want a little bit more, if your project is successful, if you're ambitious, then please move to the premium package. So the premium is really our focus. It's not fully automated yet. We currently have to turn features on and off by hand. Next year we are investing in making sure that also the entire process of turning extensions on and off is automated. But that will be quite a big project still to do. And then we have the last tier that we call the enterprise tier that starts about six, seven thousand euro a month. And there we can do a little bit more in terms of integrations or migrations or customization, but even in that tier, that last one is really important to sometimes say no, because you're going to get requests that will try to pull you back into that agency work. Like, oh, we want to have open social integrated with e-commerce. And for us, it's not on our roadmap. It's very difficult to do. So we just have to sell no at that point. And even though it could be a great project. So you have to make sure that even in that last year, you don't move into the direction because the money seems good and easy. But if you do it, then you'll turn into an agency again. So we have to sell no in that tier. We just have like three clients that are pretty good pips with open social and they do a little bit more with complex integrations.  We want this extension or this customization. And your initial reaction is going to be, yes, we're going to do it because that's what you've been trained to do. Yes, we can help this client. We want to be very helpful. But we actually needed to learn to say no. Like first say no, I don't think we can do that. That should be your first response. And only if you know you've talked about with your team, you think this is really helpful for other clients. Then you can start doing it. And then we always try to make this into a separate extension for open social. So we have this extension page. Not all of these modules are open source. And this is something that we can then sell to other clients again. So for example, now we're building the Office 365 integration. That will be an extension for open social that we can resell to all the other open social clients driving your monthly, recurring revenue growth. So that's very different model than that we used to where we just use one-off projects for clients. But for us, it's really important now that every extension that we make is able to be turned off and on and can be used to drive this monthly, recurring revenue growth. And that often means that we invest a lot in the feature. So the client pays a little bit and we invest a lot ourselves to build the feature so we can then drive the recurring revenue growth. And that's also something that is a bit counterintuitive for us. This recurring revenue is a little bit of a fight sometimes with your clients, especially when you're in nonprofit or government agencies because they like to do projects and their budgets are project-based. So they have 100k for a project and they really don't want to sign a contract that says, you know, the initial cost is only 10k, but you're going to pay a thousand euro a month for the next years. They don't like it. It doesn't fit in their model. For profit businesses, they usually love it because, you know, it's not their problem. They can just move the cost ahead. But you really need to be careful with the nonprofits and governments and it doesn't really fit in their business model. But again, if you don't do it, your recurring revenue growth, which should be your main KPI for investors internally as well, is not growing fast enough. So we're actually fighting a lot more for this. Sometimes a bit of give and take, especially big organizations like United Nations, it's really hard to fit in there. Still, we can sometimes drive the recurring revenue when we offer additional services or something like that. So try fighting for that and try to limit these services, the development and the design. You should really try not to do that much, which is something that we have to learn the hard way. We built some sites in the early days of OpenSocial that were very customized for the clients. Clients were really happy and now it takes like 30-40 hours to do an update on these projects and they're not paying these 30-40 hours because we agreed on a fixed size fee, so we have to actually invest those hours ourselves, which is not very sustainable. Yeah, this is the graph I'm obsessed with. This is our recurring revenue growth. You know, this is all in spreadsheets still, but we're moving to a CRM tool. So early this year we were at 20K and we're growing to 50K and recurring revenue this year. And that's my main focus, just to drive that growth constantly and I'm obsessed about it and you should as well. And this is something in our previous days as an agency just looking at hosting revenues and support contracts. It wasn't even close to this. And this is nice because this money will come in in the years to come and there's not a lot of work that needs to be done. This is just updating, keeping the sites up and running. What we always wanted to do is build the product first, get the first clients, show that people are happy with the product and then talk to the investors. I think we should have done it earlier because the company's been stressed in the last years because we had to drive the revenue for the old business, get the clients for open social, which I'm showing you is really hard to invest in marketing and sales. So we've been trying to squeeze every euro where we could and we're very lucky that we have a team that believes in open social and that's also willing to invest their time and effort in it. But I think in hindsight, we should have come to investors earlier. So make an investment plan and start talking to them earlier. Even if they're saying no, they'll give you some advice how you should restructure your business or how you should focus on different KPIs. So probably even before you want to build your project, just go out to investors and if they all say no, then maybe there's something wrong with your business plan. But do keep in mind that this is a multi-stage investment. So if you're going to talk to investors and they're going to ask you if your company is going to be worth 1 billion in five years, the answer should be yes. And if they're like, well, I don't know, they're probably not going to invest. So you have to think big and be ready to go through all these steps. If you're going to go to VCs, you're going to ask for money that means you need to do it next round and then next and then next and then next one. Acqua is a really good example of this. You need to go through all the steps and you need to be prepared for that and your team needs to be prepared for that. We really have to change our marketing and sales approach. I use a model that's winning by design. It's a website that has really excellent books as well. And for us, changing the whole marketing flow and also changing sales teams and account management and building customer success teams was super important. So normally, when we work with project managers or account managers, but when our sites are up and running, we don't tend to care that much about our clients anymore. Why? Because, you know, they already paid the bills and maybe in three, four years, their project needs an update. But when you pay a SaaS fee and it's a monthly contract, you really need to make sure your client is happy all the time because otherwise they'll switch their contract. So 50% of your sales average should go to getting the clients and another 50% of your sales average should go to keeping the clients and making sure they're happy, making sure they can use more extensions so you can drive your MRR growth. So we're using this model and we're actually hiring now customer success managers and also market development representatives to make sure we do the demos correctly, we do the chat online. So a lot of effort is going into sales and marketing and that was a big learning for us because, yeah, I think in the agency work, traditionally, we're not that good in getting 10, 20 leads a day on our website.  We pictured it to take three years. We're now four years in and we asked a lot of patients and we asked a lot of investment from the team. And I think having an open conversation with them, making sure that they understand the risks is very important. So that was the last thing. I just want to say that we have a booth downstairs. Please come visit us. We'll give you a demo of the distribution or show you our SaaS product. And on Thursday, we have a summit which is free to visit. So you can go to lex.getopensocial.com and let's have this conversation and continue to learn from the journey that we have and hopefully you guys will do as well. Thank you for the time. Do I have time for one question? One question. Anyone? Okay, I guess we'll see you at the booth then. Okay, thanks.


about career issues or other challenges that they've had. And I think per your point, having a personal board of advisors, having a group of people that you could call through thick and thin is one of the best things that anyone could do to set themselves up. By the way, both professionally, but I would even say as well personally as well to have that group of people on a personal level too. What's up everybody and welcome to the show today. We drop great content each and every week and we wanna make sure that you guys get notified and in order to do that, you're gonna have to smash that subscribe button and hit that notification bell. And if you've gotten a lot of value out of this, make sure you give us a like and share our videos with your friends. Facing these challenges and having such a different experience at Investopedia, you talk about having your personal board of advisors that you would go to and mentors that helped shape this decision-making process for you. So could you share a little bit with our audience how you approach building that personal board of advisors and how you grow your network because you had some heavy hitters in there that really helped guide you and shape you in some of those major decisions you made. Thank you AJ. So mentorship is number one reason that I've been relatively successful from career standpoint is luck. But the second one after that is definitely the mentors that I've had along the way. Whether it's been people like Kevin Ryan who was the CEO of Double Click at the time, ultimately the person that acquired Meetup and the founder of MongoDB and the Guild Group and Business Insider and Zolan, all these other companies are David Rosenblatt who is now the CEO of First Ibs and on the board of IAC and on the board of Twitter. These are people who I've known for 25 years. Luckily, again, it goes back to luck. And whenever I had issues, whenever I had questions, whether I had insecurities, whatever I just needed someone to be totally vulnerable around who had no agenda except for helping me and setting me up for as much success as I could. I went to them and I went to them numerous times for different things and I seeked out their advice because I had that experience. I have a cadre now of 10 to 20 different people that I do the same thing for now. And it is probably one of the most meaningful parts of my life, of my business life is the cadre of people that can call me about career issues or other challenges that they've had. And I think per your point, having a personal board of advisors, having a group of people that you can call through thick and thin is one of the best things that anyone could do to set themselves up. By the way, both professionally, but I would even say as well personally as well to have that group of people on a personal level too. With that, you know, right now you are on some people's personal board of advisors. So how did that come to be? How did they approach you? Like for those in our audience who aren't at CL level who want to get to that level, how do they even get personal board of advisors? What's the strategy there? Okay, I'm going to give you an example. So there's someone, her initials are EC. And actually, I got to know her when I first started at Meetup. Unfortunately, she was an initial round of layoffs, but I thought she did a great job. After the layoff, she said to me, you did exactly the right thing. My job was not important. I'm so impressed and we're in good hands that you did it. And then she called me up like a month later and she said, can you be my mentor? Just like that, straight up. And I said, I would love to help you, sure. You know, I'm not able to meet like every week or even every month, but on a quarterly basis, absolutely. I've written some career references for her to go to, you know, business school and other schools. But to answer your question, one person just said straight out, I think I could learn from you. Can you be my mentor? And it wasn't some like game or anything like that. It was just open, direct and honest. And that's the best, just be direct. Another person, I teach at Columbia, so I've had a, you know, 600 plus students through the years. And someone decided to want to become a startup founder. She said, can you be on our kind of our board of advisors? I'm like, sure. So, you know, advising her about different things. And she just got a million and a half dollar check round of financing, you know, for her startup as well. So those things just are wonderful. So I guess my answer is ask directly. And also if there's a business context for having someone on an advisor level or board level, then that's another opportunity to be able to kind of pull people into. I love that just being direct because I think so many people are like, well, what's the magic secret code and what's the email sequence I need to send? And sometimes if you know, you know, and if you've been able to establish that trust, build that rapport in the relationship through the work you've done, then asking that question of, hey, I would love your help is not that difficult. A hundred percent. And then afterwards, a lot of times someone will just say, hey, could I take you out to lunch? I'm like, I like food. Sure, let's go for lunch. At the end of the lunch, they'll usually say, not usually, sometimes someone will say, would you mind if we schedule another lunch for us in six months from now, just so we could keep this going? And I'm like, yes, do it. Anyone kills me? Maybe they didn't like the lunch, but half the time they did it and half the time they just forget and they don't do it. And it's so easy. So the best thing to do is like, when you're in the meeting, schedule the next followup meeting as opposed to waiting and forgetting. But yeah, the followup is so important. It's so important. Now you mentioned luck a number of times and I'm here in Vegas and I remember my first trip ever to Las Vegas. I was 21, didn't have much money and I was at the Palms Casino and they had a video poker game where you could put in a dollar and you could play a hundred hands, one penny a hand. And I remember sitting there at the screen and I just had all of these different opportunities to win and I started winning. I started hitting a few hands and all of a sudden, you know, I won a hundred bucks and I'm like, I kind of like Vegas but so many people come to Vegas, they put a hundred dollars down on black, bet it all, one opportunity. And one of your decision frameworks is creating and chasing multiple opportunities. Why put it all on one? So can you unpack that for our audience? Because I agree, you create luck by building more opportunities in your life for the luck to pay off. We drop great content each and every week and we wanna make sure that you guys get notified and in order to do that, you're gonna have to smash that subscribe button and hit that notification bell. And if you've gotten a lot of value out of this, make sure you give us a like and share our videos with your friends. Oh, that's such a great story. It is very similar to the way I've approached kind of everything, you know, from when I was first in business school and looking for a job, I didn't say like, oh, there's three jobs that are perfect for me. Let's craft the perfect resume and cover letter, you know, back in the day when they had cover letters, you know, to go to this like exact perfect job and like analysis paralysis, I sent out the exact same two line email to like 10,000 different potential people that I could get the job for and luck ends up happening and I get all these, you know, conversations. So to unpack it, unpack it further, I think one of the areas in decision making that people don't prioritize enough is whether or not a decision creates options for yourself or decreases options for yourself. So let's say you're really into finance. You can either go into, you go into a lot of things, if you choose investment banking, everyone wants to hire an investment banker who's worked for investment banking for two years. Everyone wants that kind of experience.  When you have more options and you keep creating options for yourself, if you have a podcast like the two of you, if you let's write a book, if you do all these certain things or write an article for, you know, whatever, for anywhere, there are certain actions that could create significant opportunities. And then when you have all those opportunities, guess what? Lucky stuff just ends up happening to you because you now have, like you said, a hundred different slot machines all going at the same time. And even though it's only a penny, hey, that penny could still turn into a lot of money versus throwing it all on, you know, red 25 and, you know, going for that and then being disappointed that it doesn't work out. So I think the prioritizing optionality in decision-making directly results in making decisions that result in better luck. And luck, as I like to say, is hard work.  Okay, well, you know, that was a decision you made. I think right there we have to separate and drill down into the decisions that you had taken. And this is a difficult thing for all founders. We deal with it all the time, which is what are the opportunities that you chase? Because we certainly have gotten ourselves in trouble with all this technology and all this new stuff and all these opportunities. You can't take on all of them and you need some focus. And you certainly discussed that in the book. So could you help our audience out with that? Yeah, great. So one of our six core principles is actually called focus on impact. And what that means is that the best way to have an outsize impact is with focus. The key is that you not, okay, so it could sound contradictory, like you said, which is wait, in one hand you're saying, do lots of different things. In the other hand, you're saying, stay focused. How do you decide? How does it work? Okay, so here's the answer. If in the process of sending out lots of, I'll give the example of looking for a job, of sending out thousands of resumes and emails, if that takes you months and months to do, and the result of that is you're not doing other things that could be more valuable like meeting people and going for breakfast and having other things that could help advance your career, then you shouldn't do it. If however, I think of return on time a lot, meaning how efficient is the action that you're doing that's opening up lots of options. If it's efficient and you open up lots of options for yourself, proceed with it. But if you're in a company situation, it's very hard for most companies to succeed in putting bets in a whole lot of different areas. It's a great way to potentially fail. And as a company, because companies are so much more complex than just individuals, as a company, it's much more important to be focused. Whereas at an individual level, what's oftentimes more important is to not be too focused actually too quickly and early in your career. Oh, there's only one person, that type of person that I wanna date. You know, no, be open to different options as well, but don't spend all your time just inefficiently going on one date with 100 different people. That also doesn't make sense.


Hey, I'm Andrew Connell. This video is an overview of one of the chapters in my course, Mastering the SharePoint Framework, that's available for purchase on my site, voitanos.io. This overview video is going to give you an idea of everything that the chapter covers. You can learn more by checking out the description and the notes below the video. If you've got any questions about this chapter or about the course in general, just make sure you drop a comment below the video and I'll be sure to get back to you. So with that, let me get out of the way. Enjoy the overview to this chapter. Sharing code across multiple projects is nothing unique to the SharePoint Framework or SharePoint Framework projects. This is something developers have been trying to do really since the beginning of development. Whether you're doing it for performance reasons or code-maintainability reasons, it really is the right thing to do. You should be able to share code and not duplicate it across your projects. Now the SharePoint Framework gives us a way to do this using a special kind of component. We call this a library component. In this chapter, you're going to learn how the library component works, how to create a library component, and then what the deployment story looks like as well. We're also going to look at the advantages and disadvantages of using a library component. And then I'm going to show you another option, and that's using a standard NPM package. And this is more of a standards-based way of doing it. There are advantages and disadvantages to using an NPM package instead of using a library component, but I want you to see both options. So I've broken this chapter down into three main sections. The first section is we're going to first look at just what it means to share code across multiple projects inside the SharePoint Framework and what options are available to you and how each one kind of compares with each one. And then we're going to go into details on each one of these different options. The first being SharePoint Framework library components. These are available in SharePoint Online. Now, after we've gone through a discussion on these and I've gone through a demo and shown you how to work with these and how to deploy them, we're then going to pivot and I'm going to show you another option. That's using an NPM package. NPM packages can be used anywhere. They can be not only used and consumed by SharePoint Framework projects, but also by standard run-of-the-mill web apps or even server-side apps as long as they're a JavaScript base, like if they're using Node. So by the end of this chapter, you should know the different options that are going to be available to you for doing code reuse and sharing code across different elements in your SharePoint Framework projects. But even more so, you're going to know the options and know when one makes more sense than the other and what the advantages and disadvantages are of each one. So let's go ahead and get started.


Well, back with the breakfast and plus CV Africa. Tunde Kola, while he joins us this morning on the off the press, I beg your pardon, his legal practitioner. Tunde, it's good to have you join us. Good morning. Thanks for having me, this is my mission. All right then, let's start off with the punch. The punch says suspension, are you heads for court as PDP appoints acting chair? That's boldly written on the punch newspaper. And away from that, you have underneath, are you once caught to overturn suspension, dam are gone to run party pending judgment. PDP record worst electoral outing on the are you and title chair or in battle chair, I beg your pardon, weak gone for good. That's what the G5 governors are quoted to say. And still looking at the punch, court cases wouldn't stop handover to Tunde Bo and Shatima. That's what the federal government is quoted to say, but it's more like stating the obvious. Now, stop fuel subsidy, revive refineries. That's what Pengasin is telling the federal government. And just as was you looking at the punch, then labor shelves strike and gives the central bank of Nigeria fresh two week automated. Again, you find federal government, 22 billion loan requests rejected by the House of Representatives. I mean, it's very, very funny if you ask. So you had plans, the government is still planning to borrow, just as they're going to be signing off and taking about 22 billion, billionaire loan, right? Or billion dollars. Ramadan, Uber reduces working hours for civil servants. So they are able to be part of the festivity and the celebration. One die, seven injured as far as God's Lagos market. The Balogun market, I mean, it seemed to be a real occurring event every other time, very, very saddening. The nation is what we have next. Buhari, Tunebu, well-placed to perform as president. Then you find president leads torrents for president-elect at 71. President-elect, I mean, to hold in Lagos, there's some quotas saying that that has been suspended. President-elect thinks he can't have that 71, Bethlehem, all of the ceremonies that come with it, but rather to have a national prayer. But the nation puts it differently. Labor-sharves-plan-strike over a naira-skecity for two weeks, NLCTUC, to monitor situation. Ngege, we are broken, or we have broken the trunks. That's what you find there. Pangasin, canvasses, petrol, subsidy, removal, please appoints DIG and promotes 2040 AIG. And then again, I use steps aside as PDP national chairman. That's the much we can take on the nation. We just move away from that and pay attention to the Guardian. The Guardian says, subsidy removal plan raises anxiety as labor breaks rank. Subsidy removal plan raises anxiety as labor breaks rank. Now, labor not aware of palliative talks on subsidy. The government has said we're going to put out funds for transportation to cushion the effect, you know. And what have you, but labor is saying, they're not saying the new. Pangasin, okay, subsidy removal, NLCT resists the deadline, you know. That's always been the case. Resistance from the people. People are worried about the effectiveness of the outcome. I mean, whatever it is that we're going to benefit from it, how effective would it be managed? Don't impoverish the masses. Group is telling the new government, palliative committee yet to harmonize position one year after Ingigay incoming administration to propose pay increase and bear the palliative burden. That's what you find. Now, still looking at it. Then you find labor, suspense, strike, CBN, pick a tiering to monitor cash flow for two weeks. That might just be dominating all of the papers this morning. And to Noble Council's first Bethi colloquium for national prayer, just like I'd mentioned. PDP obeys court order and replaces IU. That's it, we move away from that. And the last, it would be the daily trust newspaper. The daily trust says strike over cash crunch. Labor soft peddle to monitor our supply for two weeks. And then they can heats, right? So ahead you all have withdrawals from Emo PDP, Gilbaugh rays. Oh, that's quite interesting. Oil drilling kicks off in NASA, the World Federal Government I, Sokoto and Bida basing among orders. We are still talking about oil when there were several reports saying that we were still struggling. We didn't really have customers, the likes of France and what have you were not available to patronize us. And yet we're still discovering oil and we're very dependent on it when the world is moving away from the use of oil. Nigeria will end more money with deregulated oil sector. That's what Pengasin is quoted to say.  Very unfortunate, sadding her hats and prayers with those who have lost their loved ones. PDP replaces IU with Dalgum as national chairman. And that's it this morning on our papers. Well, Tunde Kola Wale, you're here with us. Thank you once again for joining us. I'd like to show your thoughts on the issue now on the papers and one that's been dominating all of the papers that we've taken this morning is the suspension of IU as IU now heads the court apparently the PDP has decided finally after the G5 Governors have been pressuring the system prior to the election for the removal of IU. Now finally IU is out. Honestly, the IU that we knew, or that we knew especially during the struggle for return to democracy and during the struggle for the remuneration for the exploration of health care the last presidential victory in 1993 was a principled man, a dogged man in our respect for the people's opinion. But somehow the IU that we are seeing now appears to have made a 360 degree sonar that's all the principles that he used to stand for which appear he has all negated all those principles. For example, I am of the opinion that IU should not have taken up the responsibility of being the chairman of the PDP knowing what the constitution of the PDP sees and knowing the informal agreement between the party members as regards the rotation of sharing of some of the offices in the party executive of government and rotating them between the south and the north but somehow it took up those responsibilities and despite all the needs and cries and pressure not just on the G5's governor but for me to the rank and file of members of the party he stood foot, he refused to step down from that position and he has led this party to one of the world's electoral victories in the return to civil in 1999 it continued to beat my imagination take for example England the prime minister of a meeting that led you left before it got into problems simply because of a budget presentation in the relationship presented a budget that was considered not to be workable the woman was asked to go the party rank and file the senior members of the party said look you have to step aside for somebody else to take on this possibility it would have been better if you are not ready for this challenge and the woman resigned honorably somebody has also resigned in Scotland now they are not having any expression in the time that is the way it is done in civilized society immediately your leadership is questioned you step aside because of your integrity because of the interests of the party as a whole not that you leave your party to the electoral housing and then you start to rush into court to challenge your removal it is a right to go to court because you don't want to encourage anybody to engage but if I were you I would have allowed it getting dark tonight he hasn't done well at all with regards to the management of his party and the responsibilities he took opposite it would appear to me that he took it for service reasons he also helped his friends write to them for my advice he could secure the party ticket and also win the presidential election that is not the way things are at all and you have been swimming against the current thank God the party members have asked for it to be moving out which I consider even coming too late he also has been removed long ago I mean I like the fact that you have also brought it to the point where he should have been removed so it's one on the other hand that he should have known better what the constitution of his party says and to reject the offer when it was being made but however the party also was also in a position to say he would take you off especially when you had consent from Governors from setting parts five of them who were tagged as G5 Governors even though their actions have been described as very draconian especially looking at the fact that they pretty were working against the party at a time but we would have to move away from you know the PDP and her crisis and just look at another issue which is on the front burner dominating all of the pages of a national dailies it talks about you know the labour union and the fact that they have suspended their strike action for another two weeks monitoring the behaviour of the Central Bank of Nigeria in terms of making cash available how do you respond to this Tunde Kalauele? Honestly the labour unions have stopped the strike, the proposed strike why do I say so? You and I would know that the disaster the designing of the Naira has destroyed small businesses it has also led to people dying burning of pants and so many I mean so many adverse consequences on the Nigerian economy that is going to be solved in the next 10 to 15 years except something drastic is done so if an institution or even an individual has led this country to that kind of a precipice I would think that labour should have been seated on accountability they should be able to get the CDN governor to explain why he led the country on such a disaster path and also the presidency who have put the design of the Naira of course the minister of financial of the Nigerian people and explanations so even though there is an improvement in cash liquidity it's not on the Naira but the next thing the labour should have been seated on is on accountability who did what and for what reason and what should be the punishment for that kind of action so pulling out on the side will not allow us as Nigerians to get accountability with regards to what has happened furthermore you and I will know that the country with regards to inflation and then the proposed move of social atrocity is also another thing that labour should not have withdrawn the strike action because they would rather have subsided it is going to be even more disastrous than the Naira redesigning like Avalis emphasized there is no society or there is no country in the world that does not subside one thing or the other take for example the today living of the people in some countries of the world there are two banks when you have lost your job you are employed all your addresses are another there are certain places that I am mad for you to go and collect at least two to three square meters a day so that you don't die of hunger and my humble opinion that is subsidy railway system, metro system agricultural system in most parts of the world are also subsidised I mean Kola Wale so we don't, I mean we are going to get to the point where we talk about the issue of subsidy with the CBN and the fact that you have the strike been suspended monitoring the availability of this cash for the next two weeks do you think that so far from your assessment the cash has been very available since the directive was given and do you also see cash being available for the next two weeks I mean ease of accessing this cash also something that we can you know see is a plus there is a cloud in some of the banks when you go there when you are passing by there but at least I went to my own bank and where they used to give me 2,000 error, 5,000 error this week they were able to make 20,000 error available to me and I also noticed that the big cloud that I used to see in front of my own bank branch isn't as mammoth as it used to be so if these are indicators the two that appear to me there is a response I think movement in a cash liquidity that we have in the system in the economy now what you think to determine what we might be seeing with regards to this cash liquidity is whether the CBN has burnt the old Naira that they withdrew from the system or they are keeping them in their form if the money is in their house and they have not printed the newly designed Naira all they need to do is to inject the old Naira nodes into the system and then we will see tremendous improvement in the cash liquidity in the system and the old Naira nodes are not and they don't have the means or the resources to print new ones either locally or abroad then we might not be seeing any such improvement in the cash liquidity in the Nigerian economy yeah so well looking at the punch there is also that headline where you were trying to delve into it talks about Pengasin and her support for the federal government removing subsidy asking that hey stop subsidy and then of course ensure that our refineries are revived are we not tired of this same you know line of thoughts over time stop subsidy revived you know the refineries Tunde Kolaowale ladies and gentlemen I am personally tired of this perennial tribute on the first subsidy like I always say the excuses that the Nigerians like always make for their poor performance for their disaster management of the Nigerian society the Nigerian culture the Nigerian economy is the subsidy that they have had to be paid in Petroleum in Petroleum I want to say let them remove the subsidy even though I do know it is not necessary to remove the subsidy even though I do know the amount of subsidy that they are talking about is not what they are even paying to the so-called importer but if they remove of subsidy will help us to get to the bottom of it are the non-performance of the performance of the Nigerians in their life so that we will not have these excuses again and then we will be able to hold the Nigerian political elite accountable for the poor performance that we have seen in government over the years in the time that because nobody has held their hand from repairing and fixing all the refineries and make sure that the refineries function so that we don't have to import the fuel from abroad so in a way the Nigerian people are going to be punished for the non-performance of the Nigerian political elite to the removal of the subsidy and remember Merci just about the year we were last year a jumbo concert was signed for the 16th of all the refineries and we are told Amir Sosaki and Manda Zempe for that tournament and we are also told that it's going to take about five years to fix the refineries I have made enquiries for some Petroleum engineers and I am told that the refineries can be fixed within six months but the Nigerians are telling them to take them five years to fix the refineries even when engineers are saying it could be done within six months and furthermore we have asked the question why is there going government awarding the counter for the 16th of the refineries that is not going to be completed in the next five years why don't they leave it for the incumbent government to do the answer is in the air we see you are not so for me I don't believe they are paying as much subsidy as they claim to pay secondly subsidy has always been the excuse for their poor performance in government exactly they don't contain the word that does not give one form of subsidy take a quantity like Saudi Arabia housing petroleum products all those things are subsidized when Libya was still Libya all those things are subsidized so if God is giving us the petroleum products why can't we utilize it for the benefit of our people and after all you and I know that in the next few years petroleum products will be like a code of solid energy that nobody wants to deal with because the world is already looking towards clean energy solar energy ocean wave energy wind milk nuclear power supplies and water electric cars and water so that is the excuse why here the Nigerian allies they have money on these petroleum products or crude oil that is already in my own opinion oxalate energy in many parts of the world so the ways of the Nigerian allies is very difficult to predict but the bottom line is that they have always performed well in government and they have always made the subsidy that they have had to pay the fees for their poor performance but if you look around to all the government's decision factories and industry that are in privatized which one of them is working optimally because in the privatized also most of those organizations most of those organizations are either dead now or come at us and again we have a different example in China the commanding height of the Chinese economy is manned by the government and they are competing effectively in the capitalist America in the capitalist Europe so that tells us that it is not the subsidy that will pay all the privatization and everything in your country or in your society that will make a difference that will give room for good wear management of those industries and institutions but like we said the labor, the civil society the market remain the transport should be ready to stand up to the Nigerian allies after they have removed the subsidy to sit up and perform like the counterparts in the other parts of the world let's quickly look at the issue of the piloting for I mean subsidy remover however it's no longer an argument or a conversation that there's need to exit subsidy even though it has always embraced several sub-sub-opposition it's been opposed the idea of removing subsidy over time has not sat well with some quarters but yes because it's very you know it has a significant impact in terms of our resources it's expensive now there's also plan government is saying we're going to make transportation available just to cushion the effect even though labor on the other hand is saying they're not in the know of the piloting for subsidy remover but I ask you what's the rationale behind that 5,000 for transportation and the fact that we're also trying to reduce cost of the subsidy then we're going to be paying cash what's the rationale really what's the rationale really all the time they are talking about but do you see that this ever worked you remember when Aganga was a minister of Xinang and they were talking with this removal of the subsidy and what have you people like Aganga and the other minister came up and said that they have imported all sources of buses to too much transit for people and subsidize the rate on all the Nigerian routes and that those buses are ready as reports waiting for the discharge have we seen any buses from those as we hope to today the answer is no now we embarked on what we call the school feeding program that's a palliative to kind of subsidize the parents with regard to feeding of their children as it worked effectively look at the athletic performance of the BRT and all the mass transit in Lagos, India as it worked effectively people in the Nigerian Congress used to have a transport company as that transport company was called us also look at all the noise that we are making about mass transit to the Nigerian railway as it was to the rail as it worked also look at the treasure money the money the gift of the young people just ordinary 30,000 as the gift of the young people the rich people as it worked as it worked so the truth of the matter is that some cities in this part of the world as long as mass is corruption and where it is not mass is corruption it doesn't really need to go to the people who actually should get them most times the position we give to their colleagues and party supporters and those who voted for them and the 12 people, the ordinary people who are living end of the time they don't make management do not profit from it my concern here is this if we say that we are trying to cut costs if we say that we are trying to cut costs because funding subsidy is expensive then on the other hand we are making provision to cater for 40 million Nigerians by giving them transportation allowance or piloting however you call it are we really cutting cost are we really cutting cost are you saying the same thing where will the money even come from because today the economy with due respect the Nigerian nation with due respect can be said so the economical bankrupt landwisks incenter So if you are already using 100% of the income to satisfy this debt, where will you get money to give as palliative to the ordinary people, to the 40,000 a year that you want to give it to? 40 million please. And if you say just 40 million, where will the money come from? And even if they have the money, the palliative that we have pretended to give in the past, as it ever was like I said, they will just give it to either their supporters or to their political members, to their members of the political party. And then once they have turned that for one or two months or three months or six months at most, the program will collapse and then it will be merged in corruption. And then we'll go back to square one. It's when they talk about palliative, we don't have a regime of excellent management of a family or giving palliative to people in this part of the world. The structures are not there. And where the structures are even there, the political class and the program and the students around have the will to expand that into the wills of it. Kola Wale, can you hear me? All right. So I think that we have been disconnected. Fortunately, we couldn't hear his thoughts to the latter as regards the removal of subsidy, the fact that the government is saying we will make plans to cushion the effect and not to entire 200 million persons, but to a group of persons, let's say 40 million of them, 5,000 are. We don't know if it's going to be on a monthly basis or on a weekly basis. We're talking about transportation. But if you look at it, yes, it's expected that there should be provision in place. So if you say you want to embark on XYZ policy, then you should have put in place some measures. That's why a lot of persons would say that, yes, you have, there would have been need for the refineries to be functional. It would take away all of the stress and the burden. But how far can we fare with 5,000-hour palliative for 40 million Nigerians? Are we really going to have that? Is that also not incurring a cost? Because we're seeing we're trying to reduce costs. But on the other hand, we're also incurring costs. Just as much as it's important to make provision for the effect of the subsidy remover. But this conversation has been ongoing for a very long time. And there are several concerns as to the management of the process. Because we say we will save a lot of funds. We would save a lot from what we would usually spend on the subsidy if we removed it eventually. But we also still have a lot of persons who think that we don't have the people, the right leadership to manage and be transparent with the removal of subsidy. That's also another conversation for another day. But I was hoping that we had Tunde Kuala Wale, so we could take one or two. But that's not the case. Okay, so Tunde, thank you once again for joining us. Let's leave the issue of the subsidy now on the removal. It's important that the government makes provision to cushion the effect. But does it really have to be spending money? What if we had all the basic things working for the people? So they don't get to feel the impact of this. But we'll leave it at that. Now, how would you respond to this? The federal government had made a request for 22 billion Naira loan, which was rejected by House of Representatives. Why is it that the government is very bent on borrowing to the latter?   Thank God that the National Assembly, the House of Representatives in particular, is waking up to his responsibility to continue this extra budget to expand itself. Especially in the dying minutes of the present administration. He's the National Assembly of National Responsibility. The mountain of care that the Nigeria has on its neck will not have them there. What the 20 blind are, say, very, very serious money or a cancer that is going to be a serious problem for the incoming administration. My suggestion is that this government wants to start or wants to cause it to rise at the peddler until the last minute that they leave office. You and I will know that they are insisting on going on with the census, which we are told is likely to begin even this month. Money is likely to be required to conduct a defense of. Of course, if they see one to print, the miller is designed in Naira, they will require money to do that. For the most famous avant-garde salaries, the army are also on the battlefield. Money will be required to do some of these things. But the question you ask yourself, must we always borrow to fund our ordinary, the living of the people of Nigeria? In the countries that I know that are serious minded, what they do is that when they have capital projects, railway, construction, schools, hospitals, underground cables and water flow, they borrow money to do capital projects. They also have the capacity to generate revenue, to repay back the loan. You don't start borrowing money to pay salaries or to feed the soldiers on the battlefield or to fund the census. Census is not a dual type of affair. If you don't have the money to fund census now, you could waste on the next government coming to power if they are able to raise the money they will do it. But this government is existing on going ahead with all the programs that it has set for itself, a kind of policy of raising the pay gap on to the very last minute, the lead power. And I think that is not the truth. But now they should be winding down, not just on programs and projects, but also on borrowing. In fact, they should be conserving money for the incoming administration so that they will be able to take off without the itchies. But if the administration that is coming in, it's had you with the mountains of debt and all that, then you will be creating crisis for the incoming government, which I think is not a too good at all. Like I said, they continue to insist on continuing with their programs and policies which are money consuming, but which in my own opinion, they could have stood down until the next government comes into power in another one month or two. Well, but just a bit of a correction to what you have said is not that the House of Reps actually rejected the request. As a matter of fact, they had approved it, but the bank where they were going to borrow had rejected it, which is the China Development Bank. They rejected that request for some reason. I think quite the audio was poor. No, no, no, that's okay. But it's also important to note that the China Development Bank rejected that request. The Chinese too may have rejected the request. The meeting after the other kind of the law is better handled by the incoming administration. Alright, Tunde Kala, I think I'm being prompted to call it a wrap at this point. Thank you so much for being part of the show. We look forward to sharing your thoughts as always. You have the lovely day. Alright, then Tunde Kala Wale is a legal practitioner. My compliments to your colleagues in the studio. He'd definitely get to hear that. Thank you so much. Tunde Kala Wale, like I mentioned, is a legal practitioner. He's right here with us in Lagos and he joined us via Zoom once again. We appreciate you. We take a break. When we return, we come up with a first conversation. We ask that you stay with us. Good morning.


Hello, everybody. Thanks for going lunch and listening to me. We are actually two people presenting. It's me and my imaginary friend, David Tardon, that nobody actually ever saw in a conference, but me. And it's actually him who prepared the slides just five minutes ago. So thank you, Michael, for taking some time so that we could finalize it. So the agenda, it will be introduction to input filters. Then we will speak a little bit about filter configuration in LibreOffice. Then we will speak about the use of accessibility filter that Michael makes like so much. And then we will give an example of integration of LibreVentch-based filter and also an example of an easy way of setting a new LibreVentch-based library. Since I have 15 minutes, I will be speaking without reading. So introduction to input filters. Why to write input filters? So, yeah, that's a good question, actually, because as we know, ODF is the future of the humanity. The only problem is that humanity doesn't know it yet. So, yeah, so there are other file formats that are not ODF. And there are also users that want to be able to read them. So it is not our fault that we have to write input filter. It is the humanity and the users. So, and we decided that we will be nice and we will be playing along with the humanity and the users. So even if they don't play the same, according to the same rules. So what are the options in LibreOffice for writing input filters? They are the easiest filters in the world that are called accessibility filters that I will explain something about them. And I see a nice smile on Svante's face because he used to be the one who was taking care of this thing. So, Svante, if I say something very stupid, please keep it up. Or one can do a full-blown filters that are different from accessibility filters. And one can use one of the existing framework. We have actually two new frameworks in LibreOffice. One is called LibreVenture Framework because it's based on the LibreVenture APIs. And another one is Orcas framework that is based on LibOrcas that Kohi and Marcos who are happily not here know something about. Or we can produce ODF or Betas Flat ODF as an intermediate format for internal filter frameworks in LibreOffice. Or we can use the UNO to directly create the document from create the UNO structure of the document directly from the file. Or we can do another thing. We can push the document into internal LibreOffice structure. Therefore, as they do this, or we can use... No, we can't use because it's deprecated but they used to be an X-merge framework that is basically Java framework. Oh, accessibility filters. It's easy. But it works only for pure external formats. It's quite hard to write an accessibility filter for something like binary, visual file. And there is also this character of accessibility that is setting itself in the bright only mode that makes it a bit difficult to write something else than just easy filter by accessibility because even the author himself two weeks after will not remember what actually he was wanting to achieve and what the sheet means. And also in LibreOffice, only accessibility 1.0 is supported out of the box because we use Libre Accessory for accessibility transforms, which is good because Libre Accessory is extremely quick. It's better than a Java-based framework. But it doesn't have some nifty 2.0 features that many of accessibility writers love. As to use of existing framework, Librevenge, Librevenge, I actually pretty like this framework. I don't know why, but it's a document liberation project framework. It's called Librevenge Library because document liberation project is a project of a revenge. I mean reverse engineering. And we support text, presentation, vector graphics and spreadsheets for the while. We use ODF as an intermediate format. We have a library that actually takes the APIs of Librevenge and uses them to generate ODF. So, and there are already a dozen of existing import libraries supporting many formats like Warfare Effect, Publisher, Visio, Workscore of the Adobe PageMaker, and Keynote, and whatever. Very many things. Orcas, that's Cohes, and Marcos says, Marcos, David brought you et al, but that's basically you. It supports spreadsheets. Again, internally supports ODF, OpenXML, Numeric, CSV. For the while, no other filters use it for, but it can be used. Yeah. Then why to use one of these frameworks? Because it's much easier than UNO. And also UNO is somehow a world of its own and sometimes when you are just a programmer and not UNO expert, you might get confused by UNO syntax and UNO operators. Okay, we can have some unsupported features still in this frameworks, but it's software, so we can always support unsupported features or we accept patches very happily. And in our opinion, the best choice is this for the less important file format. Why is a less important file format? If the file format needs to be quick writing and reading, it might be not the best solution to go through several intermediary APIs. The production of ODF is an intermediary format. It's slower, but we don't need to, this is another filter type. Produce just ODF XML. Slower, but there is no need for any framework or even UNO because there are already filter adapters that interface with UNO. And we have two existing filters that use this approach. But given our bias, we still think that it's probably easier to use LibreVenge instead, so we can use directly, you know, the existing filters that do it like the OXML filters that use UNO, RTF filter, and many of those that I don't remember because the German guy called Artheimer is hiding them from me. And also filter can be extension because extensions can use, you know, like for example, Qualen's OpenOfficeFork diafilter, OpenOfficeFork diafilter has quite funny prefix, I don't know what it means, but the diafilter part, it means that it's importing the diagrams. And for use of Internet LibreOffice Structures is the fastest, it has the high potential of breaking things because you are touching things that only Qualen and Stefan Bergman understand. And the Aligasi filters like V1 or V8, it means the Microsoft V binary filters. And we just hope that nobody is considering doing that for a new filter, yeah, that's it for this part. And concerning the Xmerge framework, it was Java only, we removed all existing filters in 4.0, it's possible that there are still external filters using this framework, but yeah, if you want to write a filter, forget that Xmerge existed, so. So very quickly about the XSLT filters, creating a new XSLT filter is extremely easy. Tools, XML filter settings, all you need is to have an XSL transform that converts a foreign XML-based file format of flat ODF, yeah, that's if you are, if you know how to write a transform, you can integrate it very easily. We have certain number of XSLT-based filters in the, in liberal office, and they even work, I think. When you are setting up a new filter, you have to choose filter name, in the general term you have to choose filter name, file type, and file extension, file type is, is basically what you'll be receiving that document. If you convert spreadsheets, you will want to know what will be the XML that you will be putting out. If you, yeah, liberal office writer access be, it means that it uses open office org 1.0 file format in flat version, and it will be a writer document, yeah. File extension, that is pretty easy because it's basically the extension, that the files that you are going to convert will be using, and the application that will receive the converted document, it's the writer, because we have to specify so that it doesn't try to load it into org, for example. So you can see how easy it is, and then you can, in the transformation tab, you put the doc type, if applicable, accessibility for import, template for import it needed, template it means that if the file format you are importing is a file format that doesn't have style with itself, like for example, doc book file format needs, you need some style for the document to have when you import it into liberal office. If the file format you are importing, it's just a meta, just the data, and you want to make something nice visual, so. It is possible to request use of accessibility 2.0 processor, but requires installing accessibility to transformer extension, so. You can see how the dialog looks, and that's it, there is a possibility to export this as an extension, and that's it. It's very easy, given that you know the accessibility and you know how to write it, so that it actually does something meaningful, that I doubt anybody but Swanta knows, so. Now, liberal office needs some things to be done so that it considers the filter as a filter. You have to make a further configuration, and the configuration, it's the XML fragments that are describing the filter itself and the type the filter is handling. Type describes the file format, filter specifies how to handle the type. It means which service will import it and similar thing. It is possible to have more filters for the same type importing to different document services. Yeah, yeah, we have HTML that we can import as web document or as write a document, so. This fragments are then assembled by a custom tool into a big XML file in the liberal office installation. And the type property, what do you put there, there are extensions, there is my type, there is the text service, the service that is able to detect whether this document actually is that the is of this type, then there are some about preferred whether this one, this service, this type, is the type that is able to detect whether this document actually is of this type. This type is primary for the extension and preferred filters and UI name of the type. So it appears in the dialogue with the right name and that one is localizable. And yeah, and you can put some different patterns. Let me just show you an example. For example, for the publisher, for Microsoft Publishers document, the detect service is called Compsonstar Comptram MSPubImportFilter, so the importer implements the detection function. Also, the extension is pub, man type is application, XMS publisher, preferred, yes, for this file format is the only filter we have, so it's preferred and then it's public. Publish a document that is filtered and we'll handle it, so. And in the UI, in English, it will appear as Microsoft Publishers. For filter properties, there is a filter service, then document service, which will receive it, like for example, Compsonstar drawing document. Let me actually give you the example because it will be in the slides and it's not necessarily really to go completely for it. For example, we have the name of the filter, for that is publisher document. They are all the options, it's import filter only, it's alien, it's not internal filter. They use this option, third-party filter preferred. I explained everything there, but it's not something that you would want to, you want to know it only when you need it, so. For filter service, this one is going to be imported into draw and the name in the UI will be Microsoft Publisher 97 to 2010. The file format version is zero. I don't know whether it changes anything and it links to the type. As the type links to the filter, their filter links to the type, so they are closely with each other and yeah. That's what we have. Yeah, no, this filter service is who is the, what is the service name of the filter? So when we get this, when the type is detected and calls the filter, so you know which service will actually convert the document. So for adding a new filter, you have to create this config for the format in filter source config fragments types. The easiest way is to copy something that already exists and modified. Add a file to an appropriate filter configuration add type section in filter configuration filter, my make file so that it's not just there and nobody is using it. Create also the filter configuration and then add it to the make file and it will get merged like that. Now the most intelligent way still writing filters for liberal office is to use the liberal range framework that is state of art best framework of the world. The source code location, the code that integrates all these liberal range based libraries is right a perfect module. In the right a perfect source core is the generic part and then you have per application filter specific for application so that, so that liberal range framework based filters, they don't, we don't produce a zillion of shared libraries. We have one shared library per application so that packages they can add it to Calc and so we have Calc writer draw directories for that. For if you create a new library based on liberal range API it requires adding new header and source file to appropriate appropriate application directory.  But again it's very easy because you look what is done for the previous ones and you just add your thing into it. You don't even need to understand that. I myself I don't understand it so there is no big problem with it. For writing a code, there is a class called import filter base that contains most of the necessary boilerplate in every application directory. So it means that the real work for every integration is just few lines. Yeah, there are mainly these filters, they use it apart writer for the word perfect filter, which does a lot of additional work because word perfect actually supports also of passwords and several things. So it expires dialogue for password if the password is protected, if the document is password protected. So most filters only need to override to function do detect format and do import format, document that are just few lines each. You can see that in the old time this was how we would write an import, a filter detection function. We would take basically the model of the document, we would get input stream from it, we would run something on the input stream it's supportive and then we would get out the name. So, and that was before done according to the developer manual. So we made it a bit easier. So now for example the do detect format, you just have one function that you need to know that you need to have in your library function that can detect whether it is a format supported by a library or not, but then you do something like this and it will be enough, this is an overriding function for that returns in the old string, it returns the name of the type if you detect it, if not it returns, it puts the nothing and it returns through if you detected it and if you didn't detect it it returns false, that's LibreVent framework, that's why it's very easy so on. And for filter function is the same, in your library you will have a document, you will have some function that will take and LibreVent input type and LibreVent generator type as parameters and you just override it this way for your library. The thing is that how to get this parser function and everything, how to do a library for import. Okay, just to say that after you do this there are still some little configures, some make files have to be changed, but it's always good to ask someone of us, me or David, when he is available on ILC, he is almost always, there is always a particular commit that one can just study and copy and it's very easy. Once we tell you this, look this hash, we integrate this library in it, you will see what needs to be done, it's not a big deal. Okay, but for example, we were speaking how to integrate with LibreOffice, but how to write a library. We decided that sometimes it's a bit complicated and there is a lot of similar things that have to be done in the beginning of the library creation that we were normally doing, like one day we would spend to just set the framework or one evening and run set of it and we realized that actually we can write a tool that will generate a library and this tool we have it, you have the git URL of it, it's called Project Generator and the script is called Project Generator and I will actually try to do something, I don't know whether I will manage, it's quite possible that I will be able to create for you the one just dummy library. I just updated, okay, it's up to date. So Project Generator, I will call it LibLocon I will put as a comment that is LibreOffice Confiliated Library, the author is me, this is my email for all the girls that want to write to me. The main class will be called Locon Document and the namespace will be Locon. So I just run and it will generate something when you see, you will see that it created some directory LibLocon and we can now auto generate the directory and come on, they're supposed to be quick. Okay, but you can configure it, I configured it with disable where all because it will shut me some arrows because there will be some variables that are unused parameters. So it will configure, it will check whether RibreVentch libraries are accessible. I actually created Locon, LibreOffice Conf format is a text format, so I will be feeding it to writer. And I can make, make and I compile it and yeah. So it's a skeleton, it doesn't do anything, but it's in less than five minutes, you have a skeleton that you can start the program into, which it can be good because me, it was normally taking me several hours to get the skeleton clean, so. And the generator is a software, so if there are bugs, it's always possible to send us patches, so let me see when I am. Wait, yeah, so this one's, this was the, I will leave it, I will leave the information in the slides, so. And if you want to read something more, we have, I published a blog about writing filters that stems from one article I wrote for Linux Magazine last year, so, and David, he also, he started a series of actually specifically using LibreVentch, so if you want to use the best framework in the world, you go there and I think he actually updated and there is a part to already, and he will be writing after, if someone actually reads it, he will be writing more of it, so, yeah. So thank you so much, if you have questions you ask, if you don't have, you can go to eat or wait for another person.


Hello everybody, E here welcome back to 31 days of Halloween 2022. Today we are doing a book review first review of the month. If you don't know every Saturday and Sunday I am live streaming this month on Saturdays you will have a writing stream followed at 11 a.m central standard time followed by a Halloween themed game night trivia whatever I choose to do at 6 30 central standard time p.m. Saturday night and then on Sundays we'll be watching movies together we've already done it once so far yesterday and we will continue to do that if you want to vote on what movies we watch free on 2b this month we will be streaming every single Sunday I won't be streaming the film but I will be watching the movie with you guys that's why I chose 2b because you don't even need an account to watch movies over there completely free 100% free you do have to sit through ads but oh well what you're gonna do but today we are talking about the devil takes you home by Gabino Iglesias this book was highly anticipated by myself I've read zero saints I have yet to read coyote songs but I absolutely loved zero saints and this is just more of that goodness we are following a man called Mario as he navigates a very heavily supernatural story there's I say heavy but most of the supernatural stuff is is actually very subtle but don't go into this expecting a your average everyday thriller this is definitely a cult this is definitely supernatural so keep that in mind when you're reading the book starts off with Mario Mario's daughter has a very aggressive form of cancer and him and his wife are struggling financially emotionally physical all that stuff they are struggling they're not having a good time and the first section of this book is absolutely heart-rending the majority of this book is heart-rending what this man goes through trying to make ends meet trying to be a good father and things just keep going wrong I don't want to spoil a certain aspect but things pop off rather rather quickly and we find out the fate of his daughter daughter very very soon into the book and then it is a road trip into hell basically he Mario is tasked with with killing certain individuals he's a hit man he's working with a one one individual especially that really creep me out and then another individual that served served his purpose but the horror here is exceptional I will I will commend Iglesias on that a TLBW too long didn't watch I absolutely love this book I'm giving it five stars it is everything I look for in a supernatural thriller supernatural crime novel which there aren't very many of so I really appreciated that in the inside flap of the book it is said the devil takes you home is a panoramic odyssey for fans of SA Cosby Southern Noir blacktop wasteland by the way of the boundary-defying storytelling of Stephen Graham Jones and Sylvia Marino Garcita and I would agree with that completely it felt very much like SA Cosby's books but with a supernatural twist and that's not to say that you know Gabino doesn't have his own style his own voice he most certainly does the voice that I fell in love with in Zero Saints is here the action and the climax and everything I really can't say anything bad about this book you will see reviews complaining about the politics that they're all over I don't I don't have to link you at all they're all over they're all over what Goodreads and even Amazon people upset because he mentions social commentary because he mentions things that actually happen there's a there's definitely a believability here especially living if you live in the southern United States and I believe the vast majority of this book takes place in Texas and Mexico I believe I could be wrong highly recommend the audiobook which is I got it on audible I use my credit for it I don't think I could find it on scribbed but if you're interested in a free month of scribbed click the link well yeah click the link down there in the doobly-doo you get a free month my kids get a free month it helps everybody out but yeah this one's on audible I highly recommend even though I have the hardcover I used it for my daily walks well actually my just my daily exercise period um and the audiobook is great the the book itself is good I jump back and forth um but truly come for the writing Gabino has a flair for the dark for the twisted but especially describing subtle horror that escalates into big horror um he doesn't over explain which I truly appreciate um nowadays it's horror seems to be either super vague to the point where everything is left wide open and there there's no conclusion whatsoever um and then you have other ones that you know explain away the horror far too much Gabino Iglesias definitely goes a Stephen King route he tells you just enough information and lets you decide for yourself uh the maybe the origins of certain things uh the bruja in this one whoo boy uh yeah the way they kept her um and what they did to her and then what she was capable of all that stuff just blew me away um I honestly have nothing bad to say about this book uh so yeah if you're looking for something dark sinister with a little bit of a crime thriller edge to it definitely check this one out um but that is all I have to say about this one I wish this review was longer uh but I it's so much easier to review a book negatively for me anyways because I have something to talk about in this one I am just gushing about everything that I loved um I would I would say I always give a word of warning if you're on the conservative side of things and you would get upset about or even the liberal side of things if you get upset about politics in the book you're probably gonna want to skip this one because there are a lot of mentions of those types of things um but I'm of the mindset that all art is political so I I don't know how you navigate uh fiction whatsoever um if you have a problem with politics um but mostly we all know it's usually the politics we disagree with that uh that we have a problem with um and in here I didn't have any issue with it whatsoever because I've seen these types of conversations I've seen these types of things firsthand uh and I know they exist and if you don't think they exist maybe go out you know talk then go out into the public uh a a lot more anyways but until next time I have been E you've been you this has been another episode of 31 days of halloween I'll talk to you guys later bye bye