 Hello everyone, thanks for coming to my session called Memory of Nations, how Drupal helps preserve memories of humankind. My name is Miram Ihalichka, I come from Slovakia where I'm acting as technical director in Drupal and marketing agency called Made Digital. I have over seven years of experience with Drupal and in web development sector I'm more than ten years. In this project I was acting as project manager and solution architect. First let me tell you something about Memory of Nations. Memory of Nations is the project called by NGO called Postbellum, Postbellum means after the war and that kind of defines what they are doing, is the biggest database of oral testimonies in Europe and they are focusing on people who witnessed something during communism or Nazism in 20th century. Originally they started in 2008 where they first launched their website and they were focused on Czechoslovakia, Czechia and Slovakia because it's Czech NGO but well ten years passed and they wanted to renew their digital presence. The Postbellum is not running the website on their own. They are running it with the help of Czech radio which is the biggest Drupal customer in Czechia and also with the help of institute for studies of totalitarian regimes. They also have many foreign partners in Europe or in US, for example terror has in Hungary. So as I said they are focused on recording these testimonies so everything is focused around the witness as the person and then they try to arrange the meeting with this person because initially they just get his name, surname and some mean of contact. So they try to schedule meeting with these people, they record into the system, they record the result of the meeting so if the person agrees to have some recording with them or if the person wasn't reachable at all, if the person agrees to do some recording then they either visit him at their home or they invite this person to their offices. They have currently seven offices in Czechia equipped with video equipment and some audio recording devices and they do interviews with them which can take up to four hours or maybe even all day. This is called full recording and then they do full transcript of this recording so full transcript of this four to eight hours. They cut also shorter clips from this recording which is like 30 seconds focused on one isolated topic. This clip also has transcripts and in the end the most valuable outcome for them is witness story which is some summary of this interview. They also collect some other data about this person for example documents if there is something in some national databases or if some newspaper publishes article about these people then they also record this and of course, photographs. So as I said they reached to us with these business goals so the first one was to launch before 28th of October 2018 so slightly more than year ago. Today it was because it was 100th anniversary of Czechoslovakia Republic so they wanted to celebrate this date. They also wanted to go bigger in online so they wanted to launch new publishing layer because every single entity you can see here is strictly documentary so it's written in certain style and it's not very interesting for most of the people. And the last business goal was to go into abroad so they want to support multiple translations. So let me tell you something more about the team. The team consisted from three groups basically. There was customer who provided us with their in-house graphic designer and also with front-end developer. They contracted front-end developer before they contracted us and the agreement with this front-end developer was that he will convert provided graphic designs into HTML templates but we later convinced them to convert it into patent lab so we can use it more easier. Then our agency made a digital, provided me as product manager and also Drupal developers and then there was Czech Drupal community who provided some DevOps guys who provided migration specialist and also psychologist so we can cry to someone. Let's start with the first business goal. As I said, it was launched before 28 October 2018. So this was our idealistic timeline. We were first approached by the Czech radio guys at some Drupal meet-up in Prague that they cooperate with this NGO and they are looking for some partner to help them with migration. The memory of nations was running on something completely custom so it wasn't even Drupal and they wanted to move to Drupal because the Czech radio recommended it as the great tool for their meets. So we met with the customer in mid-April and we thought, okay, it will take us a month to do some analysis and sign contract and then we have three or four months to develop the solution and do some testing and deployment in October. The reality looked a little bit different. Yes, we first met in mid-April and it was actually quite pleasant meeting with the customer because we learned a lot behind the screens but they also said that, oh, analysis are useless. We will tell you everything you might need to know. And they provided us with some book they usually give to new editors, then some database tables and ER diagrams for the legacy system. So we said, okay, it seems pretty reasonable and it was our first and biggest mistake. There was also some issue with contract because of their relation with Czech radio, they were waiting for the contract for the radio. And radio provided some draft but it was for much larger projects so there were some unreasonable stuff and then lawyers got involved so it took us much longer to sign the contract. So instead of start working in mid-May, we started working almost beginning of July. So it gave us not so much time to implement it and we were working scrum style so we had two-week long screens and customer agreed to everything so, yeah, for us, we will be invoicing hours we worked. But there were also some deadlines on customer side because as I said, they provided with graphic designer, they provided front-end developer. So we agreed that they will provide outcome of their work after the screen so that's beginning of August at latest and we will have one month to reason about graphic design and then September to implement it and launch in October. There were some issues so it took them several more months to deliver designs. They delivered it one week before when they wanted to launch so it wasn't very doable and in the end we did final migration during Christmas and we launched January 1st, 2019. Then the second issue came up which was that they weren't testing the system at all so it was quite short for us because they agreed everything, they signed off the work every spring so, yeah, but in January so we did some backfixing from January till April but in April everyone was happy and they are quite happy about the outcomes now. After the launch we received quite good feedback. I signed up the project to the case studies and this was feedback from Paul Johnson. He found the founder of Scout movement there so it was a nice reading about her. We also won two Splash Awards, one was international and then we won also the Czechoslovakian one which is on the right side. So that's the whole team who worked on the project from the left, the migration specialist slash psychologist, then the DevOps guy and free developers and then our liaison in the Gradle. The second business goal was to launch a new publishing layer which was probably more important for them than they let us know. So when they delivered us with designs, we started implementing designs and then after couple of days they said oh, let's at least publish this magazine layer so we have at least something on this anniversary. And that's when the Czech community stepped up and the guys from the Czech radio because they implemented the whole thing within probably a week and it wasn't following very best practices but it was working, it was publishable and it made customer really, really happy. It also helped to raise page visits quite significantly. Years ago they had about 300 unique page visits per day. Now it's 3,000 per day and there was peak when they started publishing into New Aggregator and it was 14,000 unique visits per day. Every visit duration is about 10 minutes so it's quite long time. The last business goal was to enhance translation system so the requirements were that we want to support all 15 languages from the original system and we want to have easy way how to add new language because as I said they were focused in Europe but recently they started recording Cuban dissidents they started running some projects in Asia. And there were also some limitations which didn't allow them to define more translation more than one translation for one piece of content so that was also something new and then something really strange was defined fallbacks for every language. So as I said in the original system they had let's say in original language they were able to add English translation so they for example selected track and they were able to add only English. It was also the single form so when editor was working on that he had to scroll up and down the page so it wasn't very convenient and there was also publishing workflow but not in Drupal sense of way that you are going through some steps until you are allowed to publish so they had separate workflows for every language. So from the requirements if you go on the first three it's quite easy to achieve just with core but for the last one it means that if you have track content but you are visiting slug version of the website then you will see the track content for the English one because track and slug are quite similar languages so you are not going to show English if it's not necessary and there is also the similar fallback for Russian and Ukrainian. So there are three custom modules but they are not working very good. In the end we use language hierarchy module and it allows you to select translation fallback language for some language code and then you can define one fallback language globally for whole system which is usually the default language of the website. It's not working so good but you don't need any tweaks. It's working only if you are using entity view so if you are using views and fields you need to do some custom coding. On the background it's leveraging this getfallbackcandidates function and that way you are also able to implement the situation for fields and interviews. Then after the launch and what we were basically doing from January till April was class requirement which was allowed to define main language per domain and when the language in the language feature is changed then translate only the main content and only if you switch also the domain then translate also the rest of the page. I will show you an example. This is page of Vassal Havel and this is check version of the website. So you see the menu and every content is in check and here in the sidebar there is written that this witness is also available in different language. So when I click this English the menu and taxonomies and interface translation will stay in the domain language but the content of this story will be translated and yeah that's it and only if you use this language feature in the top it will translate the menu and because you are on different domain memory of nationals.eu and again if I press the check here then everything will stay in English except the story. So this was quite weird requirement I tried to explain it to Gabor Hoji to get some guidance how to achieve this but he wasn't able to help me so it was couple of nights digging into the core and I figured out that in the core you can define something called language types that's content interface and the core is shipped also with the URL that's what you can configure the URL is invisible it's used only for generating the links through the code but the content interface you can configure that in the translation page in the group. For each of these language type you can define language negotiator which is basically where the language code comes from so it can come from the cookie or URL or use a configuration or whatever you want so I thought that okay let's create a new language type that's actually possible to do using Google language types info you will just provide the name and that's it so that was a little suspicious but I carried on then you can configure and create negotiators for this new language type because it actually appears on the translation page and the language negotiation is just bugging so you do whatever you want so we get language code from the based on URI and that was it and then the expectation was that we will just profit from that so we found out that you can create the language type but there is no meaning how to use that language type because it's hard coded in entity base class so we did this lovely hack which allows us to define that okay if it is not if it's not witnessed then please go ahead and find out what translation candidate you want to use but otherwise just please return now then we defined this array so for every domain we defined language we wanted to use and then we used language fallback candidates operation alter where we load these domains and because the candidates array is now because we skip skip determination in this page then load whatever language is defined for the domain and it's surprisingly working it's not nice way but yeah it's working so for these business goals the first one we weren't able to achieve unfortunately but at least there was this magazine which they are really happy about we were able to launch new publishing layer as I said the community stepped up helped us with this task and now we are just maintaining it and we are really happy about it and we were also able to achieve multiple translations which in the beginning seemed to be an easy task but it turned out to be the hardest one of all yes after we launched the project we had very mixed feelings client had very mixed feelings but now when we are looking at this point on this project we are quite happy about it we were able to want one of these into our office and yeah so that was for my presentation and joined us for the contribution on Thursday either mentored contribution first time contributes to the workshop or general contribution you can give some feedback about whole group call thank you any questions? how many interviews do you have from the site? it's 4,000 published witnesses and another 4,000 unpublished because for every witness they require some agreement with publishing and you can either as witness you can choose that ok you can publish it everywhere or you can publish it only for the approved users so users can log in into this system and after they pass through some verification that is real person and so on or you can pick something completely custom I know that Cuban residents pick that their interviews can be published freely after the Castro regime and on Cuba some titles, what are you planning to do? some titles we are waiting for CORE to do it for us there is some initiative for CORE media which would auto transcript did you run into any specific troubles with migrating? yeah well it was from the custom system so it's not very relevant to the current initiatives in the CORE everything was migrate plugins and the ways how you are supposed to write the migrations everything was expected we weren't expecting was that it might take so much time you described some problems or troubles that comes from the client are there any outcomes for you personally that you will be like differently in the getting the job or planning that something like main points that you will avoid in the next job yeah we are definitely doing our analysis so that's one take away and the other I was able to compromise here because I like the project so don't compromise it will cost you a lot anyone else? thank you for coming