One of the happy accidents of the the conference schedule is that there were three Drupal commerce sessions and two of them are happening right now, so The other half of us are in the other room if you if you want if you meant to be in the other room I'm not presenting the lullabot case study, although I could if you want me to Part of that part of their case study actually will be in the deck here because we did a little collaboration with them, but There also was This morning was anybody in the UNHCR presentation No, so the Vardat Uses Drupal commerce for the UN to collect refugee donations or well refugee relief donations They don't yet so it's a pretty cool like multinational multi-payment gateway like multi-lingual everything multi-multi Instance of Drupal commerce so worth checking out if you just want to watch the video later on And I mean it like it's nice to see like Drupal for good, you know, like we're actually helping Put food in the mouth in the mouths of and then shelter over the heads of refugees all over the world Another cool one during the COVID era was there were multiple pharmaceutical and healthcare companies using Drupal commerce selling at-home test kits Advertising of course the various Vaccines and things, you know, it's kind of cool to see again Drupal and Drupal commerce, you know making it a real-world impact Does anybody lost a lot of money to a crypto scam? No, okay, if you go to bulk order dot FTC dot gov, you can order free free literature to help your community avoid crypto scams That was neat the guy that developed the site and met us on the street last night and was showing us his website Cool What's that Binance did justly deserved I imagine And I know they're trying to hit Coinbase too Is that yeah, and that's where like that I use their custodial wallet For like the Bitcoin that I have or whatever because I thought okay They're trying to do everything by the book. I'll just stick it in there and forget about it for 20 years. Well We'll see what happens All right, well, we will get started. It is 3 p.m. On the dots. I think this session is Like 50 minutes give or take So I'll write okay So I'm happy to field questions throughout if you just have any questions while I'm either talking about something or demoing something I'll also make time at the end And the beginning it may be like a bit of a slow start. We'll see how this flies But it's it's kind of trying to situate our work within the broader vision and mission For Drupal that the Drupal Association advanced, you know in the keynote and in our presentation earlier today, so Just by way of introduction These are the folks that have worked on commerce kickstart in the past although Tom. I'm sorry I didn't have a fifth slot for you So we'll just have to point to you instead of point to you out there But I'm Ryan Sarama founder and CEO of commerce guys now called Centaro as of 2019 We got our start doing consulting for uber cart websites because I wrote uber cart in 2006 through 2009 and In 2010 we began the Drupal commerce project to basically Re-envision what he commerce on Drupal could look like which at that time just meant taking advantage of fieldable entities Which we probably all take for granted nowadays, but we're a new thing back then So that's that's kind of the genesis of everything that we're still doing today Jonathan Saxick is the core maintainer for commerce core So all of the commerce core releases and most of the the patchwork in there Jonathan does for us He's based out of Tel Aviv Yvonne and soon Chitza are on our engineering team in Belgrade, Serbia. Yvonne is our front-end lead He implemented the Belgrade theme or designers also there in Belgrade Hence the name of the theme in soon Chitza is our ambitious site builder. So the she really is the target Profile for what we're building Drupal for somebody who can manage configuration from the command line But also click everything together and knows how Drupal works conceptually to a very high degree And then Tom also is a more recent entrant maintain of the commerce license module and some payment gateway modules That are also part of commerce kick-start. So Tom's our US lead And long-time Drupal are himself And so like one of the things we have to ask ourselves on the regular because we've been doing this for a while personally been writing Drupal e-commerce modules for 17 years, which is basically an entire career, right? Yeah, it's a generation Why then still do it? What why do we want to Drupal commerce to succeed? Instead of just like helping people integrate Drupal better with Shopify or big commerce or magenta on the open-source side Or cilius or Presta shop or any of the myriad of different e-commerce platforms that exist and The reason for us that the compelling motivation for us is that we do have a vision that we're advancing and Our vision for the future is where merchants go to market on their own terms Unconstrained by their commerce platform and free to do what's right by their customers And and that that's second part like really I mean like it's nice not to be you know stuck to a vendor roadmap So of course like feature lock-in or vendor lock like that speaks to a certain kind of technical business leader But doing what's right by our customers speaks to me like the bleeding hard free open-source software enthusiast like I don't want Trading your customers private information to be like the cost of doing business on the web When we talk about an open web when we talk about What we want the future of like the human experience on the internet to be like I'd much rather it not be surveillance capitalism that wins But that's what Shopify does right there their data hungry and they're using that data even to compete with their own merchants now Right if does anybody have the shop app on their phone? No, okay. I do I have no clue why I think I got it to like track a package one time But if I buy coffee from my friend's coffee shop, which is on Shopify I then get shop bucks that Shopify uses to advertise to me everybody else's coffee So my buddy has now just completely fed a new customer to his competitor because Shopify really doesn't care about his business They really just care about transaction volume because Shopify is a payments company Not really an e-commerce platform provider first and foremost So we're trying to advance this vision for the future and that's why we we do what we do That's why That's why we deliver professional services to have a business That's why we try to grow in one sense It would be you know, it could be simpler to shrink the company and have fewer mouths to feed and fewer projects to manage But shrinking implies limiting your own reach and your own ability to perform and we want this vision to win And we now like squarely or see ourselves squarely within that broader mission and vision of the Drupal Association So I think in the keynote Dries presented this the idea that the Drupal Association envisions a future for an innovative inclusive and open web and Conducting commerce on that open web is important if you cannot do that on the open web The open web will not win because people conduct commerce. That's what we do And if it's not going to be on a free and open internet it will be in What's that or we chat chats, you know, like if you go to China right now and you do e-commerce You're buying through we chat if you go to the shopping mall and order orange juice out of a vending machine You're paying with we pay like the the the idea that that we advance as the future of the internet and the web It's it's in a sense losing because the customer experience isn't there the convenience isn't there and of course There are other issues, you know from a political standpoint you know shaping that environment in China, but We want to join and and very very clearly join the Drupal Association and its vision for the open web because we really We really want Drupal to succeed. So that's that's why we do what we do that's why we continue to work on Drupal commerce, you know after 13 years and We'll likely continue doing it until my children tell me it's time for me to go to seed or they decide to take it over from me So just to give a quick project update right now. They're about 21,500 sites Running Drupal commerce on symphony Drupal or modern Drupal or however you want to call it. So Drupal 8 9 10 We need a new phrase for that whatever that bucket phrase will be that would be the 8.x dash 2.x branch We opened our 3.0 branch a little prematurely like two years ago We're like I guess we didn't actually need to do that because we you know, we didn't we just didn't have to we I think we did that around the time Drupal 9 came out So that's why there's one site and I have no clue who that site is but it tickles me So we're like I said 21,500 online stores on modern Drupal. We also still have about as many legacy Drupal sites I'd love to see a lot of them come over to The current version of Drupal commerce, but I think as with Drupal itself most of those sites are probably not very active Not maintained or they're just biding their time until they go to a SaaS platform And I think it's true of core Drupal It's gonna be true of us, but we'll try to win as many as we can. That's part of what this presentation is about as well At a glance, this is the feature set.  I know have built Drupal commerce sites before Is anybody never actually used Drupal commerce? Some new yeah, yeah, I mean like the idea is like The feature set out of the box, especially if you use our starting distribution called commerce kickstart It's it's gonna be equivalent to an entry-level Shopify So you have products and variations and attributes Although there are no limits on the number of variations or attributes you can have We have price lists and you can have unlimited price list to target different prices for individual customers user roles or whatever at date ranges if you just want a seasonal sale or something We have a core promotion platform. This is a big improvement over commerce 1.x as Of commerce 2 you have the full ability to create and define promotions coupon codes and so on Using a little conditions engine. It's not the rules module for Drupal It's just a a simplified inline conditions module that we created Just to make it a little easier to manage And at the end of the day like rules was nice that we had it in Drupal 7 But it was just too much for non-technical users and it was not enough for developers So why stick with it? We ditched it But there's there's a lot inside And we don't we don't certainly do a great job on like Drupal commerce.org or docs.drupal commerce.org to cover all the features But it's just because there's so much and And the and the same kind of people that are really good at creating Drupal modules are not typically the same kind of people Who are really good at creating documentation unless it's inline comments in a module file So it's a perpetual project, but one that we're always working on The current version of Drupal commerce or of commerce core is 2.36 and we've had like three or four releases this year Recent features are like adding the ability to automatically create a user account as part of checkout completion To assign an order to an existing user if they already had a user account, but happened not to be logged in to Enhanced promotions with the ability to say like set your free shipping discount based on the order sub total excluding tax It's kind of important It also means that you don't have these promotions that cycle on and off because once shipping gets added to the order It goes above the free shipping threshold and then back down. Yeah, that's you know It was solving a good problem You also have the ability to to fine-tune the application sort order for promotions from code now for those that need that feature That's kind of important It's fully Drupal 10 compatible. So commerce core and commerce kickstart and all of the modules that it contains Run great on the latest version of Drupal Keeping up with core releases is important, you know, because it's just good housekeeping if you if you don't Keep up with core then suddenly you're gonna have deprecation notices and have a big lift from one major version of Drupal to the Next but by keeping up with deprecation notices and tracking core It means really not that big of a deal anymore to upgrade to the latest version of Drupal So a big change, of course, obviously from the days of like Drupal 7 and before And then finally Tom's work recently was getting us to a full release for the commerce license module So that now supports things like not just licensing an entity to somebody And I'll get into this a bit and then in subsequent slides But but also say like renewing my subscription manually So coming back to a website that doesn't use recurring billing buying the same membership product a second time and it extending my Existing licenses expiration date versus giving me like two licenses that overlap You know, it's a nice feature for those that don't want to get into recurring billing and dunning management and all that stuff And then you know one of the things that I wanted to highlight so like we we we reference the project as We call it Drupal commerce for various reasons, but it can be easy to lose sight of the fact that The Drupal part is actually really important because it does make our platform very compelling As a as a way to sell content to sell access to content and there that takes many different shapes and forms And we'll discuss those in the session But there are other e-commerce platforms in the world that sell file downloads, but they're not CMSs They don't have the tools that we have To say integrate with s3 and sell access to download a 4 gigabyte You know video file without his and your PHP server because you're trying to serve these massive files up through that They don't have Nice fine-grained user role and permission systems like Drupal has so if you're trying to build a content access platform Or a subscription website where you're able to access certain parts of the website based on a membership level You know, they're just there aren't that many solutions that are all in one So you basically end up having to use a purpose-built solution for like events like see event or something or a purpose-built tool for Gosh, I don't even know like where would you guys substack if you're trying to say subscribe to Newsletters or something like you could use a purpose-built tool like that But you don't have to if you value some of the other things that Drupal brings to the table So let's get into like the the suite of modules that power these kinds of digital commerce use cases on Drupal I actually feel like I did this a little bit backwards I'm gonna I'm gonna skip ahead a few slides and then come back because I was just kind of like dancing around like what are the use cases And so each of these use cases I didn't get kind of like What's it called portfolio rights from all of my clients in advance of this talk? So I just described to them, but these are real-world use cases projects that we've had in the last year or two years And you know, they range from simple content access like a literary journal that sells, you know web access By granting a user role to somebody who buys a one-year access pass To like full-on B2B file downloads management platform So this is a company that sells tens of millions of dollars of PDFs because they write the standards for their industry They have to distribute them somehow previously. They used net suite net suite is not a CMS, right? Well, they use sweet commerce on top of net suite So not a CMS doesn't have great search features had vendor lock-in as far as the roadmap was concerned So they couldn't make a nicer customer experience So they chose Drupal because it's first and foremost a great content management system with a great fast-edded search engine If you've used that before And then we added Drupal commerce to it then we added the group module to it to define a business customer group and Suddenly any member of a client organization for this company could access all of the files that anybody in that company had Purchased access for the company to get so you know You have a purchasing manager buying everything for the company and then anybody can just go grab the documentation they need There's a really cool use case massive project And frankly, you know all these projects are driving forward the the feature set of the modules that we maintain because in any client that we get Where we're adding features to publicly contributed modules and write that into our contract like improvements to open source modules will be Contributed back to their communities because we're not trying to just lock down a bug fix behind, you know, some somebody else's IP We have continuing education clients some multiple trade associations targeting civil engineers targeting medical imagery targeting psychiatric medicine like all these good like companies that support industries with continuing education programs Have various forms of like selling access to private content pages Webinars one of them. I thought was very interesting. They actually give away all of their quizzes and content for free So you can do everything you need to be certified But then when you want to buy your certain when you want to like actually publish your Certification somewhere you have to pay to get the certificate off the website. I thought that was interesting, right? So they're they're content. It's essentially just a free product that they give to everybody in their industry And then if you want to put the little paper up on your wall, it's $25 and you can print and download the PDF But you know all of these industries have some form of continuing education Requirement and I like if any of you know like what conference those kinds of companies go to I'd love to know Because we're the perfect tool set for them And so finding and reaching those kinds of customers I think would be a like a great way for someone to develop a solid line of business because they just don't have many alternatives And then finally we have a multi vendor marketplace that offers its individual sellers the ability to publish advertisements in the marketplace because the advertisements are just nodes and so you're creating a node and if you want to Publish it you have to pay and suddenly that content is now published and active in their ad roles and everything So these are just like some of the use cases for selling content itself or access to content And one of the I mean all of this really stems from one of our earliest uber cart adopters Anybody watch like mystery science theater? Is that familiar to any of you guys? Okay? Yeah, yeah so it's just you know goofy movie commentaries and They were huge uber cart and now in Drupal commerce users even to the point that like Mike Nelson at one point like recorded a video for us to show at a Drupal con with a coupon code for free product It was a lot of fun But it's like like those kinds of companies that find Drupal because of its content management capabilities We now equip them to transact directly within Drupal So they don't have to do some weird janky like bolt-on of a third-party platform And we're actually working with a customer right now that also offers B2B products to help Companies certify various some standards ISO standards GDPR standards a lot of like regulation regulatory compliance products and they have wordpress with a Separate platform to check out just like a hosted checkout platform stood up a sighted on a subdomain And so suddenly they just they lose this continuity between what were you viewing? What have you purchased before? How can they possibly recommend to somebody who's on the content website? a Particular page or a coupon or promotion based on their order history When they have two completely separate systems that don't talk to each other Literally just a quarry parameter and a link to a subdomain that does all the work So so that's where Drupal commerce begins to really show value to these kinds of companies And so just to run through the the module set Commerce license is kind of the foundation of everything. So when we talk about selling content What we're really tracking is your ability to do something your entitlement to your grant So the license entity just pairs a user with some form of entitlement For a period of time or for an unlimited period of time doesn't have to have an expiration date You have workflows for licenses So, you know, they're they're pending until they're activated upon payment or we would call order placement or full-order payment You can kind of pick when that happens They can't expire after a manual, you know set set time This is based on configuration in the product variation itself So you even could sell like the literary journal they have like a one-year or a three-year pass Well, it's just two different product variations in the product page one has one expiration date the other has another expiration and You know once that license entity exists Cron just kind of keeps everything humming You can react to events like license expiration to send out an email We have the commerce email module that just kind of lets you create emails in the browser And it's just a just a way to Build out the basics of any kind of a digital commerce store The module does include and this is all based on a plugin type I don't know if anybody's written a plug-in before it's it's pretty easy Just kind of put it in the right folder in your module folder and it just is discovered This is the magic of you know object-oriented PHP and Composer auto loading yada yada yada all the stuff under the hood in Drupal That plug-in just gets discovered and now it can be used to say like my product variation is this kind of license You know it's a role-based license So commerce license would let you sell a user role out of the box But it's also really easy to define your own license type. I think we have streaming licenses for a Private video just like a film distributor They they sell a streaming license that then gets tied into their DRM system for actually like live streaming content and Defining that was literally just one plug-in file and if it needs custom fields You just add them in the base field that are bundle field definitions or plug-in field definition Whatever that whatever the function is. I've done it to help a friend sell Flare in his in his video game, you know like you can go buy a cool sword or a cool hat or something You know so we just put license keys into the database and then pick a license key whenever a license is activated Stuff it in that license entity so it now belongs to my user and so long as I'm connected to his game It knows what licenses I have in my account so it's you know designed to be just a very simple abstract way to create manage and Like expire licenses as needed and then on top of that No, let me pause any any questions about like the license feature set itself. I am talking like pretty fast, so Alright Well on top of license then would be commerce file And as you might guess commerce file defines a license type and that license type is a file download And so what that lets you do when you define your product variation is just upload files to it And once you complete checkout, you have a new tab added to your user account page It says files and any variation that I have a license to view its files They would be listed there for me what and what that means is Let's say that I have an e-book that I'm selling through Drupal commerce if I produce an update to the e-book I don't have to go back and update every single license on my website I just go to that one product remove the old attachment put the new one on there And now everybody you know when they visit this user interface will see the updated files This can handle any number of files. So as with the standards body, they can sell both the you know the The document itself and the change records and the addenda and and all five files or whatever attached to that product variation would appear my account interface and finally Like it is important, you know for file file sales websites Not to be nuke in their Drupal application server with the actual download of these files when they're large so we help maintain a large stock videography website and They were basically How is this working at first all of their files? So just gigabytes and gigabytes of video files were on the Drupal web server But using the s3 file system module and we were able to use Amazon s3 to store files That were uploaded through the file field and then create download links directly to s3 from that file download page So that it's kind of self-explanatory. I guess but any questions about the file feature set I'm gonna try to deal with this bug in my throat Yeah, yeah, so the um Wow, I hope I can recover from this Tom if you know feel free to answer if not I'll answer in a sec So And then we also add to that IP access-based restrictions So you get like five IPs and after that no more downloads or or just ten downloads total and then you're done that kind of thing Any other questions about file downloads or moving on? I thought I was better in sec goodness And if I'm just allergic to something in the Pittsburgh air the steel dust finally We have commerce recurring and of course this this ties it all together for like a recurring subscription Based site access, you know, if you actually want to automate recurring payments Commerce recurring can do it all and you have two basic paradigms for managing recurring billing within Drupal one is to use a payment gateways recurring billing feature set so that would be like the automated recurring billing features of authorized net of PayPal a Purpose-built platform like charge be recurly charge Lee whatever Zora if you're up market in the enterprise Or some of those other services Or you can use Drupal commerce itself and we support fairly robust use cases for recurring billing because it's Was originally developed to support the billing for platform. That's H So those who don't know that commerce guys developed platform. That's H and then we split the companies in 2016 I think the billing interface is actually still commerce one dot X if you're if you're paying your bills through platform that sh But the the feature set is designed to support you know either fixed intervals, so it's You know on the first of every month your your your membership fee recurs We can pro rate that so if you sign up halfway through the month then your first order is discounted by the amount of the month You know, it's already elapsed. We also support a rolling interval So that would be like if I subscribed on the 13th I renew on the 13th or if I was subscribed on the 31st Then I renew on the last day of every month thereafter not the 31st for obvious reasons We also support metered usage. So this would be the use case where say on platform you have a a Small and a medium and a large account all active and halfway through the month you switch your medium to a large Okay, your bill is not finalized until the end of the month So you can see how many days of the month were you at one level until you went to the next level and that's the you know Classic metered usage use case another way would be like let's say you can just access the website and download everything to your heart's content And then I charge you at the end of the month based on the number of downloads or we built a job board in Germany it's like a for German universities and there it was just create as many Job postings as you want throughout the university network and then you would be invoiced and billed at the end of the month based on However, many you posted so it supports a wide variety of use cases and this this works through a subscription entity That subscription entity also has like a billing period That's gonna be like I said based on a rolling interval a fixed interval Whatever that would match up hopefully with the licenses that you're selling So if it's a one-year license, then you'd have a one-year subscription and when that subscription renews Then the license itself would be renewed or it's its expiration date extended by however long the period of that license is And there's there's a little bit of you know trickiness in here That's why I kind of spelled it out so it's in the slides for you to refer to you later But what happens is you're on your initial checkout your initial order initiates this subscription And we immediately create a draft recurring order so I can look in my orders Interface in Drupal commerce I can go to the the the drafts tab and I can see all of the pending Orders that that will recur across all of my subscriptions and that's nice because you can then comment on it You can manage it. You can change the payment method associated with it So basic customer service functions based on that next order And then whenever cron detects that that order is ready to close That's when payment is collected if the subscription is not expired then it would be renewed for another month But if it was say like a a one-year subscription with monthly payments and you reach the end of it Then it would just we would close out entirely trigger a different event yada yada And that's all just kind of automated through commerce recurring. We do use cues So it's not like one one really beefy cron is gonna let you know bring down your site because you had a thousand subscriptions No, we would queue up all of the activities to be performed and then you know process them Asynchronously and that's just a good pattern and you'll see this throughout Drupal commerce in general If any site that you're building has these kinds of operations that operate on like a user-based level Or that could potentially be blocking to some sort of a like page request like a checkout completion What we prefer to do is just queue up that blocking or potentially blocking activity Process it asynchronously and then let the customer or the end user carry on with their day But not have this like 40 second long checkout completion submission where they then start spamming the button to see what's wrong And that's that's you know important for obvious reasons But you know we've had sites that had you know tens of thousands of items in the queue And if we just tried to process them all synchronously from within the main application server Well, we just die So if you're if you're thinking about scale for Drupal and Drupal commerce pretty important We've already done of course the use cases so skipping ahead You know what what we want to show is that all of all of these features With the exception of recurring which I just took out of commerce kickstart so we could tag a 3.0.0 without it And then we'll add it back in They all exist in commerce kickstart and commerce kickstart is a distribution of Drupal Which means that whenever you go to the installer you aren't installing a Drupal installation profile It's literally we just take over the installer to build a store So that once you complete the installation process it looks like you're looking again Like a Shopify template or a big commerce template just it's all there with demo content if you want it And the reason for commerce kickstart again, we ask ourselves. Why are we doing this again? You know was it really that big of a deal and and the answer is like we want Drupal commerce to grow Like I said, we want it to win succeed. We want our vision to be more accessible to more people And and features won't drive adoption if people don't know how to use it Like like Drupal is not just a thing you can grab off the shelf if you're a casual You know web page editor or whatever you'd call yourself if you're not a developer And we want it to be even easier. So that's that's what commerce kick starts there for It's it's there to make it easier to get started and also to press to find new ways to drive adoption So as I mentioned before there are still a lot of commerce kickstart 1.x sites There are also still a lot of uber cart websites, even though it hasn't been worked on in years There's still some 13,000 uber cart websites and if they're gonna go somewhere they need some kind of a target So it's one thing to just like grab a Drupal commerce site from Drupal 7 or an uber cart site from Drupal 6 And it's okay Here's how I would build your website in Drupal 9. Do you want me to do it for you? I'll be like $80,000 and I hold your horses What if there was a simpler way for me to just migrate over but if you have a if you don't have a fixed target Then it's hard to create any kind of an automated or a generally available migration plug-in So now I know with commerce kickstart I can target the average uber cart use case and Migrate that to the fixed target of commerce kickstart in its feature set and hopefully try to get some of those Users to come over But again, maybe many of them won't I don't know But what I what I do know is there has to be some easy way for people to understand what can Drupal commerce do How can I target it to migrate my sites or my customers or whomever over and that's what commerce kickstart does It actually peaked at like 13,000 users in the Drupal 7 cycle We actually won't see usage stats for distributions on Drupal org anymore. I don't think Maybe we will but you know, it's just the whole composer packaging system is a bit different At least with commerce kickstart like they were the distribution was pinging home to say yes I'm running this thing and it has a release on Drupal dot org But we don't have a release of commerce kickstart anymore. You'll see why in a second But you know what what it has Yeah, we went again wouldn't even better blah blah blah, okay, so What it has is basically a composer command you run it from the command line So that that's still a bit of a technical hurdle Maybe we can find some way to make it easy to just spin up and pantheon or platform or aqua or whatever But it's an installation profile that that takes over the full installer and gives you the ability to install Feature modules demo content, etc. It's also a default store theme. That's mobile friendly It's based on bootstrap, but it doesn't depend on the contributed bootstrap theme So we built bootstrap ourselves just to be leaner and not to have the overhead of the Drupal bootstrap theme No offense to whoever maintains that it just wasn't something that we wanted to have to contend with But then that also let us do Integrations with layout builders. So you have full bootstrap layout builder integration. So, you know, you have pretty Pretty nice content editing and layout building tools all out of the box And we also created what we call like our certified projects meta package And so these are projects that that typically we maintain or we at least contribute to that We know work well together that we know have test coverage that we know are documented and that we know You know if if we were going to go build a client project today that we'd feel comfortable using them So we have a roadmap to add additional ones to that but you can see the current list. It's on our github Profiles Centaur slash certified projects But all that's in the you know in the deck and available on jubal.org as well from the kickstart profile And so it's all tied together through this project template with composer and you'll see it's just a single command Creates the entire code base and then you know with one more command You can get the demo content and then you type D dev config D dev start and boom you've got a site So we're actually gonna do it live. Let's see what happens Maybe maybe I'll have Internet access maybe I won't But let's see. So I'm literally just typing out that one line command. So composer create project I'm doing dev stability for now Obviously, we'd love to not require dev stability, but we need to package everything up get full releases out And then that won't be necessary anymore. The project is just called Centaur. Oh, and you know what can I zoom on this? How do you zoom it's just okay, I Don't know that's funky. All right composer create project Centaur slash commerce kickstart Project I'm gonna throw it into a live demo subfolder And I'm gonna ignore platform requirements because my laptop has a PHP 7 instead of 8, but it's gonna be fine So just that one command now fetches everything I need you got you can also customize the installer We're just kind of fun. So we put this entire purple in there at the end And you know, of course, this is gonna manage all of the dependencies as well So so even though we only have say like seven or eight projects of our own in commerce kickstart Because we also use bootstrap and all these various bootstrap Layout builder integration modules and some other just utility modules like advanced queue for our queuing You know that composer manages all of that It also lets us apply a few patches that do things like take over the installer to theme it specifically for ourselves and that kind of thing So we're now installed And if I just go into that directory, I'm going to just type D dev config D dev is our preferred local Development environment if you're not using it if you don't have anything else I highly recommend it Obviously at the end of the day just use what works for you, but don't use vagrant. All right, and then we go D dev starts And now my site's ready to roll so whenever I go to my browser Which Should just take a second I'll be dumped right in the installer and What D dev also does it's nice Is it does give you mail hog? Which is kind of just a service locally for capturing email sends So of course when you're doing your local testing of an e-commerce website, you don't want to accidentally email your customer Guilty for one of the first mistakes I ever did was email my entire customer list from our ERP. This is 20 years ago, but Mail hogs good for that. It also has great integration with sequel pro So if you're using sequel pro on Mac or you're gonna use php my admin from the web if you need to just look at the actual database So highly recommend D dev for a variety of reasons Opening the site you'll see I didn't necessarily believe in myself. So I did have like another copy ready just in case Because I didn't know how the Wi-Fi would hold up, but this is what the installation process looks like So of course it's nice pretty and themed It's gonna first install Drupal core Give me the kind of basic Site configuration screen, but then you'll see step number six in the left sidebar there It's going to prompt me to kind of choose some default configuration To install and so what we've begun doing and I'm not sure like how far we'll take it or how long we'll keep it but Well, I'm we'll keep it, but I don't know how far we'll take it is We aren't using features so that I mean features means something specific in the Drupal world But we are providing default configuration in sub modules of commerce kickstart So if all you need is a basic product display Using one of our starting features. We're just gonna install that config for you And so long as you don't ever change that config then we will apply updates Theoretically you could build a small website for a friend or for your family or whomever You know put in basic physical products with a basic taxonomy based catalog and then just keep running commerce kickstart updates And never have to touch it yourself and get new features added to the PD to the product display page data model or Small improvements to the search catalogs. It's just trying to like it's it's somewhat similar to the recipes Initiative that they're kind of advancing in Drupal core But it's just our way of approaching this from the standpoint of like we want to help people like manage those simple use cases But at the end of the day, we really are still gearing this toward toward bigger projects that just want a good simple starting point And so there are some architectural things under the hood that make it easy to use kickstart Both is just a quick simple sales demo or a quick simple store builder Or just ignore all that stuff and use it as a development framework or like starting point as well So like our new projects start from commerce kickstart. I am going to go ahead and grab the demo module So once I add that to my Codebase you got to ignore platform requirements again. I Will I will be given the option to install a full demo store and this demo store has Not the taxonomy based catalog, but a full search API based catalog with facets and so on. Yeah There is not unfortunately, yeah, yeah, it's kind of a it's very very different in approach We're using default content and so it's yeah But good question. Yeah, we have we have other branches of the commerce demo module for modern Drupal or symphony Drupal, but this is kind of a clean break But It also has you know a lot of sample content, which I wrote cheeky descriptions for one evening. I was watching Netflix. All right We're gonna have some good descriptions. That was a lot of fun, but All the images are just from unsplash so they're creative commons, you know free freely licensed So you can feel free to use this in a sales demo and just show people here's what Drupal commerce can do for you out Of the box And I'll highlight specifically in this talk since we have a limited amount of time I'll just highlight the digital commerce feature set, but there's more in there Obviously, there's there's a whole product catalog with all the search API integration if you need to know how that works You can go see how facets are built in Drupal commerce But you know having this for me as the primary sales person at my company Really accelerates that like hey, let's have a call to prepare a demo. That's been lightly customized for your use case like I can go in there with one hour of work and Like show a client like or a prospect really How how quick and fast it can be to get them toward where they need to be? Obviously, I'm not building their entire side in my pre-sales engineering, but you know at least proving the concept that the flexibility of Drupal is Like a value all in its own to any growing shifting organization We do use the symphony mailer module for HTML email delivery for that you have to do a little bit of importing of some mail Transport settings or something. I'm just gonna import all of those. We also have config splits So it config split is just a way to say like if I'm running locally versus running in production Use different sets of configuration So we have that and D dev makes it easy to use drush. I'm just gonna drush config split import D dev And import that configuration and now it's it's off to the races I mean the the demo store everything is ready to go. So again, this is a layout builder powered homepage With various just content marketing features and a little boy on Zavanovich Easter egg He was the original developer of commerce to before he left us You know some basic Merchandising features Obviously if you wanted to browse the product catalog you can go see the entire catalog Filtered by various forms of taxonomy Sort search etc And within the product catalog and we have certain products that demonstrate buying Media either in physical format or digital format and the way that we accomplish that is just with a different product variation Based on the version that you're buying and this is a fairly recent feature That was funded by that standards body. It's the ability to have one product type Reference variations of any number of product product variations or any number of types of product variation So it used to be a one-to-one correlation So if you wanted a different product variation type aka the file download product You had to have a different product type and that was just unnecessary overhead and probably a bit too detailed for this talk Whatever But you can see here that I have two variations One is the hard copy using that the media physical product type Another one is the license download if I edit that one You can see like what I'm asked to provide for my license type. So here I'm selling a file You know, I can attach the file. I can upload additional files if I want to I think this actually may be the actual book We like printed them off of the Gutenberg project yeah so that's fun and Again as I mentioned earlier if I we support unlimited file attachments You know for the modules if I added additional files here if it was You know, you're selling a CD and so you have the cover art and the the music itself You know, you've seen all that stuff the the miniature movie that goes along with the album or something You know, it can all be in there I can limit how many times a user could download it or I could not I get set the the license to expire after a Certain period of time as I mentioned before we support both rolling intervals Which just kind of renew based on the date of activation Or I can support an interval based on a reference date So like this file is good until December 31st 2023 and then everybody loses access to it Whatever the case may be we support that If I go back to the product, I'm gonna add the digital download to my cart And let's see how smart check out is Alright, we were smart. Okay. So if I also had physical Products in my shopping cart, then of course I would have to supply a shipping address Not just a billing address, but since I only have digital products in my cart I'm simply asked for my payment details. I could put in a coupon code if I want This is just an example payment gateway. So obviously not paying Let's provide a name and address And Continue to review Let's not save the test credit card But I can see a summary of my order details obviously I don't know how much you know people know or care But Drupal commerce does not store or retain any form of credit card data Any of our payment gateway integrations always tokenize at the third-party payment gateway and typically we're using iFrames Embedded from their payment servers on the checkout form So literally payment card data never passes through your web server and this is the way to achieve the simplest form of PCI compliance So just throw that out there keep that in mind if you're doing a payment gateway integration We have a variety of modules that can provide a reference for you Once you're done I have immediate access to download the file that I've just purchased and again if I were to go to my user account interface If those files ever changed in the future, so would my files list everything that I have access to would be revised here My license could be updated to grant me additional downloads to edit the expiration date Whatever you need and this of course, you know can be customized on a one-off basis site-to-site because it is just a view as With most things throughout the Drupal commerce interface Finally, I can see all of the licenses that have been purchased across all of the users in my store I can manage them all together here as well and those licenses will let me See an activity log of all of the you know the the key dates when was it activated when did it expire? I can comment on that license if I want to by creating a log entry here Same as the order management interface for commerce as well And then finally on the right-hand side You can see where I can manage the state of the license if I wanted to revoke it because I just decided I didn't Like this person anymore. I could do so and then suddenly it would be gone from their file download interface So that's the the feature set at a glance and again all this comes out of the box if you need to demo it Commerce kickstart literally takes two minutes to set up and have prepped to go into a demo. So I've done it very last minute myself Ideally, of course, we have time to prepare and tweak things to be a little custom, but that's all there And next up will be you know We'll have a minor release of commerce kickstart that includes just a template for for role-based memberships And then we'll we'll get back into Demonstrating recurring billing as well through some default configuration modules But we got like two minutes left That's most of the content that I have the rest. I will just put we'll put the slides online It's just kind of talking about some of the lessons that we learned You can also read about this from the read me in commerce kickstart But just ways to make a distribution that can also be useful to developers who don't want all the craft We've made it simple to get rid of the craft and just use the kind of base project template as well So there are any any questions at all from anybody in the audience. Yeah Thanks. Yeah, nice. Yeah That's why we will not lose our jobs anytime soon Yeah, not familiar. Yeah, interesting. It's like the fifth iteration of this in Drupal. Yeah I had my own at one time yet Yeah Sure, yeah Yeah Yeah, I mean so they get from a from a policy standpoint if you will Why have we not pursued any of these and the answer is really just because these systems are too complicated for the average end user But not robust enough for the average developer. So they don't really serve anybody really well, you know So that's why that's what we kind of say when we do when we just prefer Use what we have let's make this the interface as simple as we can for merchants while still being robust enough But then we just prefer custom custom plugins, you know, if you're a developer Yeah, yeah, so that's that's the short answer. Yeah. Yes, Tom. Yeah Yes. Yeah, in fact that we we hoped to have that done by now, but we did not finish it But yes, we have the commerce API module provides a full suite for using Drupal commerce as a back-end for a headless front-end And we have multiple clients doing that ourselves I'd love for us to have like commerce kickstart out of the box be like a back-end provider for next commerce or for view storefront I don't know be awesome. We're not there yet We do have like a react project templates, you know, we can demo it But it's it's it's nowhere near this level of polish right now, but definitely on the roadmap. Yeah Yes, Matt's demo that yeah, yeah, so I got time for one more quick one or we can wrap up Yes, sir Yeah Yeah, so the question is like what what is the best way to sell access to content and it really kind of depends on the model of the business This journal, you know, they just sell a user role and then we had a custom module that implemented the paywall So we're tracking how many articles have you read this month?  Well, we know if they have the user role then we bypass those checks But in the past I've used and I don't know where the ecosystem stands today. So caveat authorities might be Drupal 7 modules only but Like the content access module and access control list module the ACL module Those would get you down to the granular level of you're purchasing access to view this node And we've done that through custom a custom license plug-in in the past But I don't know exactly where the contrib ecosystem stands today And I guess we'll wrap up there happy to riff on that further But thank you for your time and attention and for all your support


When it comes to hair and skin care, I try to keep the products I use to a minimum, mainly because I don't like spending too much time getting ready in the mornings. I make my own body butter for winter to help with dry skin, a natural moisturiser for everyday use as well as herbal lip balms and salves for cuts and scrapes. Nourishing oils are usually enough for cleansing my skin, and beyond that I keep an all-natural simple liquid castil soap for everything else. There's not a whole lot I buy from the beauty care aisle at the shops, except for shampoo. I've read posts about others who raved about giving up shampoo and who loved the no-poo method for their hair, but with my naturally oily hair and my previous experience dabbling in this method, it just hasn't worked for me. I've tried it, and several weeks in, my hair was still slicked back with oil and glued down to my head. Really not a great look. For the past few years, I've been using a natural shampoo bar that I buy from the store that I really like, but the only problem is it's pretty expensive. I've been searching for quite a while, looking for an alternative to switch this last commercial product out of my bathroom and transition to all homemade. When I discovered this natural herbal shampoo recipe, I thought I'd just trial it out and see how effective it would be on my hair. It ended up doing wonders, and I loved how customizable it was, and how I could change up the herbs depending on the benefits I wanted for my hair. This herbal shampoo recipe is non-toxic, moisturizing, smells and feels great, and is super easy to make. I prefer to store the shampoo in the fridge between uses, as with no preservatives added to this recipe to make the shampoo shelf stable, I don't like to risk it going off too quickly, especially as I live in quite a warm climate. So to maximise its freshness, I keep it cold. It stores well for one month or more in the refrigerator. The base for this herbal shampoo recipe is a simple liquid castile soap. I like to buy Dr Bronner's Uncentred Liquid Castile Soap as it infuses beautifully with the herbs and is thin and easy to strain. With this simple soap base, I add a bit of infused coconut milk and a herbal tea made from chamomile, nettle, rosemary and calendula. This tea blend is completely customisable, so you can choose the herbs that suit your particular skin or hair type best, but the herbs I've included are great choices for most hair types. Each herb will come with its own benefits. Rosemary is a wonderful herb to include as it can help stimulate hair growth. It can help with hair nourishment and remineralisation as it is rich in sulphur and silica. Chamomile is a great anti-itremory for the scalp as it can help soothe symptoms of dandruff. Calangula is a wonderful all-round herb for nourishing the skin on your scalp, while either argan oil or jojoba oil are perfect for conditioning hair without leaving it looking oily or feeling greasy. I infuse the coconut milk with lemongrass in this recipe, but it does not have to be infused for this shampoo recipe to work. The herbs are just an added bonus and give this shampoo a little something extra. To make this herbal shampoo, start by placing two tablespoons each of dried chamomile, calendula, nettle and rosemary into a medium-sized saucepan along with one cup of water and stir to combine. Bring the water to a boil, then remove the pan from heat and allow the tea to steep, covered, until the mixture reaches room temperature, which may take around 20-30 minutes. Strain out the tea using a fine mesh sieve or nut milk bag and compost the herbs. Add two cups of coconut milk and two thirds of a cup of dried lemongrass to a small saucepan and gently heat on medium-low temperature for 20 minutes, covered. Remove the coconut milk concoction from heat and allow it to cool to room temperature, which may take around 20-30 minutes or so. Strain out the lemongrass from the coconut milk using a nut milk bag or cheesecloth, then compost the herbs. In a large glass pump bottle that you'll be using to dispense the shampoo, add in the infused coconut milk, herbal tea, half a cup of castile soap and a quarter of a teaspoon of argan oil if using. Then cap the lid and shake the bottle gently to combine the ingredients. Pour this herbal shampoo in an airtight container for up to one month in the fridge. This shampoo may thicken a little in the cool temperature, if so, simply let it warm up in the hot water of the shower before using. Make sure to shake the bottle well before each use as the ingredients can separate. And that is how to make a natural herbal shampoo at home. I hope you enjoyed the video, thank you so much for watching, please let me know if you try this recipe out yourself and what you think, I'd love to know. I wish you a wonderful day or night wherever you are in the world. I send you all my love and I'll see you soon again.


What is Boda Boda? Okay, Boda Boda is a motorcycle. Yeah. It's just a word that we got way back. They call them Boda Boda Guy, Boda Boda. So, the word Boda Boda came from the border. Oh. Kenya and Uganda. Oh. So, people used to cross to Kenya. Wow. Using motorcycle. Using motorcycle. So, that term, because it's in the border. So, that's why the name came up as Boda Boda. Boda Boda. Yeah. Now you know. We have a lot of transport here in Kampala. And it's really amazing. But we have also organized Boda Boda's.


During the Science Forum we give our students unique access to some of the world's leading scientists and scientific research. Here at the RI we definitely are trying to involve people in that lifelong journey of understanding the world around them in scientific terms and we try and play our little part in that by having these contact points in the lab. That's the other thing we try and do here. Longer sessions focused on one subject so that there is that opportunity for students to develop their understanding to assimilate what they've learned.


Water's ability to act as a solvent for a great many substances is one of the properties which makes water so important to life. For example, the polarity of water contributes to its ability to dissolve salt, such as the sodium chloride depicted here, and to keeping substances dissolved. The salt crystals are made up of positive and negative ions. The water molecules have portions that are partially positive, the hydrogen atoms, and portions that are partially negative, the oxygen atom. The water molecules surround the ions from the salt and orient themselves so that the opposite charges attract. This allows many different substances to be dissolved in water and to remain dissolved. This is important to life because water acts as a transport medium for nutrients and other substances that cells need in order for life to persist.


Well, I mean, just actually funny enough, bring it back to sustainability as well. It's slightly different from what Simon mentioned for my businesses because the restaurants and the pubs that I work in, there tends to be quite a large overlap between our teams and our customers. And so for us, we're quite connected to our customers. So I tend to find what's very relevant for our teams tends to be very relevant for our customers. So our customer behaviors might not be obvious to us straight away, but I know that if sustainability is important for our team members, it is also important for our customers. And we tend to find, if you're an inside-out brand, you'll focus on the fact that there's a massive drive from your team to become more sustainable, whether that be food sourcing or reducing plastics or making sure you don't throw away food waste or reduce your energy. All these things are important because you are doing much better by your stakeholders, your key stakeholders, including your team.