[00:00.000 --> 00:11.000] Welcome to this session. We are talking today about open source collaboration tools for [00:11.000 --> 00:19.120] Al fresco, how to improve the online editing experience by using the Al fresco as document [00:19.120 --> 00:26.480] repository and some other known open source services for the collaborative editing online. [00:26.480 --> 00:34.120] My name is Angel Boroy, I'm a developer evangelist in Highland that is the company that is producing [00:34.120 --> 00:42.000] Al fresco today and I hope you enjoy this session. Let's move with the agenda for today. [00:42.000 --> 00:47.360] On the first part, we are going to review what Al fresco does, so the main features [00:47.360 --> 00:54.760] are Al fresco as CSP and we are going also over this topic later. The second part will [00:54.760 --> 01:00.960] be focused on the default applications provided by Al fresco in the integration API, so you [01:00.960 --> 01:08.560] can understand what the integrations we are going to explore later are adding to the product. [01:08.560 --> 01:17.000] After that, we are going to focus on the online editing collaboration tools that we are testing [01:17.000 --> 01:23.160] today, mainly LibreOffice, Collaboration Online and OnlyOffice. We are going to see some live [01:23.160 --> 01:29.080] demos on how to integrate this with Al fresco and how to use that with the Al fresco applications. [01:29.080 --> 01:34.360] And finally, some recap, some thoughts about the future and about these integrations we [01:34.360 --> 01:42.440] are going to explore. So let's move to the first topic, Al fresco as CSP, so the content [01:42.440 --> 01:50.400] service platform is a term that was coined by Garner back in 2014 and mainly what that [01:50.400 --> 01:57.200] means is that there is a set of services, APIs and repositories that are working with [01:57.200 --> 02:04.800] content types, that are working with documents and that are helping to classify and to manage [02:04.800 --> 02:12.040] all these documents. On the last year, this topic was named as ECM, Enterprise Content [02:12.040 --> 02:19.320] Management, but in these days, this term, this content service platform is the most [02:19.320 --> 02:29.440] used in order to classify this kind of platforms like Al fresco. Remember also that Al fresco [02:29.440 --> 02:37.760] is an open source product, the main license is LGPO version 3, so you may copy, distribute [02:37.760 --> 02:46.400] and modify this software and you need to provide also source code if you are extending the [02:46.400 --> 02:54.160] Al fresco, as it happens in the modules in the add-ons we are going to see later. We are [02:54.160 --> 02:58.880] open to the community, so you have all this source code that I labeled in the Al fresco [02:58.880 --> 03:05.880] GitHub.com, we have also a Maven repository because mainly this is developed with Java, [03:05.880 --> 03:12.320] so you have also this open Maven repository, you can get in touch with the community in [03:12.320 --> 03:19.040] the Al fresco hub, hub.alfresco.com and there is also the official documentation available [03:19.040 --> 03:24.080] that you can also contribute to improve that and we have also some chatting channels like [03:24.080 --> 03:30.560] the Al fresco Discord channel, so we are open to you, just reach us if you have some thought [03:30.560 --> 03:38.800] of if you want just to improve the experience with the Al fresco open source product. [03:38.800 --> 03:45.720] So let's start reviewing what are the features provided by Al fresco and by mainly all the [03:45.720 --> 03:51.720] other content service platforms, so this is like a classical flow of document management [03:51.720 --> 03:56.160] inside a content service platform, so you start with the ingestion of the document, [03:56.160 --> 04:02.560] so you need to put the documents on the repository and in this step you can apply some OCR transformation [04:02.560 --> 04:07.600] and classification operations and once we have the document inside the repository then [04:07.600 --> 04:12.720] we need to classify that by using content models describing the properties, the metadata associated [04:12.720 --> 04:20.000] to a document, we are providing also the searching by using this metadata and its properties, [04:20.000 --> 04:26.960] these values and also the content of the documents, we can also transform the documents just changing [04:26.960 --> 04:34.000] the mind type or for some enrichment of the metadata or the content and we can also provide [04:34.080 --> 04:40.720] some automations and workflow for the rules in order to work with the document to transform [04:40.720 --> 04:47.920] the document or to move the document between different users and finally it's the collaboration, [04:47.920 --> 04:54.160] it's the review, the co-authoring, the online editing and some process that happens between [04:54.160 --> 05:00.960] the users on the same document and for that we have like a simple integration with Office and [05:00.960 --> 05:09.120] Google Docs that we are going to see later, so let's move on the ingestion process, so the ingestion [05:09.120 --> 05:16.320] process mainly is just getting a document that can be rotated, that can be grained and we can [05:16.320 --> 05:22.080] apply some processes like OCR transformation in order to get something more clear in order to get [05:22.080 --> 05:30.640] the test of the document and the right quality, so we can classify the document, in this case [05:30.720 --> 05:36.640] we are extracting the metadata, the type of the contract, the name, the taker, provider address, [05:36.640 --> 05:41.920] some metadata and also the content of the document and with that we have the document [05:41.920 --> 05:48.800] inside the alfresco repository, if we move to the content model, so the content model is something [05:48.800 --> 05:56.080] that is used in order to describe every document in order to classify the document with different [05:56.080 --> 06:02.160] metadata, so in this case we are using a type that can be a list of a screen, the name of the [06:02.160 --> 06:08.480] document, taker that is the name of the taker and provider also can be a list of different streams, [06:08.480 --> 06:15.120] we can apply regular expression in order to validate the input, the postal code and the content [06:15.120 --> 06:22.640] and with that, without definition, we are providing UI form for the users in order to [06:22.720 --> 06:27.280] change the properties, the values of the properties or in order to [06:29.360 --> 06:36.720] verify that is extracted in the right way, we can upload the document also manually and something [06:36.720 --> 06:42.400] that we are also providing is the versioning for the content for the metadata, so you can [06:42.400 --> 06:49.040] understand the different changes that are happening on our document, if we move to the searching part [06:50.000 --> 06:56.720] in alfresco we are providing three different search syntaxes, so the first one should be like free, [06:56.720 --> 07:03.280] so you can use a term in order to get the information from metadata and content, [07:03.280 --> 07:10.480] you can use FTS, FTS is the alfresco syntax, so you can just combine your [07:11.760 --> 07:17.760] terms with some properties, with the value of some properties, so in this case like the type contract [07:18.320 --> 07:25.600] and finally we have the standard CMIS that is something related with SQL, it's like the SQL [07:25.600 --> 07:32.160] syntax and also allows you to create some filters and some conditions on your documents, so with that [07:33.360 --> 07:42.000] we are providing facets and we are providing also the results from your searching type and you can [07:42.000 --> 07:49.200] just connect with your documents, for this process we are also applying permissions, so every user, [07:49.200 --> 07:54.720] every document is associated to user groups, to some authorities, so we are applying also that [07:54.720 --> 08:04.160] to your searching capabilities, another service provided is the transform service, so for this [08:04.160 --> 08:11.600] transform service we can create some renditions, for instance a thumbnail of one document or we [08:11.600 --> 08:21.600] can start some pages, we can also apply nlp to extract or to recognize some information that [08:21.600 --> 08:26.640] is on the document and finally we can apply also some transformations to the main type, [08:26.640 --> 08:33.840] so finally you got like different versions of the input of the initial document, [08:34.160 --> 08:41.680] and we move to the automation, we have for instance these folder rules that are able to [08:41.680 --> 08:46.160] classify the document according to different criteria, so for instance for every document [08:46.160 --> 08:51.440] of type contract you have to start the approval workflow and the approval workflow is something [08:51.440 --> 08:56.880] that also is provided by the by the alfresco repository and that is related in the activity [08:56.880 --> 09:03.840] engine, that is a vpmn engine, so we can define our workflow for the document and with different [09:03.840 --> 09:11.600] steps that are prepared for user interaction or for automating some process and connection [09:11.600 --> 09:20.080] with external services and so on, so these are like the first steps for a document and once the [09:20.080 --> 09:26.000] document is prepared, once we have this document with all the metadata, with the content, with [09:26.080 --> 09:34.560] the searching capabilities then we need to start working with that in many cases, so by default [09:34.560 --> 09:41.600] alfresco is providing the circuit protocol that can be used with office in order to edit [09:42.320 --> 09:49.280] these office documents, we have also support for google docs, so we can copy the document to [09:49.280 --> 09:53.840] google docs, you can edit the document in google docs and that is coming again back [09:54.800 --> 10:01.680] to the alfresco repository but we have something in the middle that is not covered, that is the [10:02.480 --> 10:10.240] online editing the collaboration with an online open source platform and this is what we are going [10:10.240 --> 10:17.920] to see today, this is what we are going to explore in this session but let's start with the integration [10:17.920 --> 10:27.040] mechanisms and the applications that are provided by alfresco default out of the box, [10:27.040 --> 10:34.800] let's start with that, if we talk about alfresco applications and integration APIs, [10:34.800 --> 10:42.400] yes for you to understand how to integrate a solution with alfresco, we can think of the main [10:42.400 --> 10:49.600] user applications that these days are two of them, we have one that is named SER, this [10:50.720 --> 10:57.840] web application is like the legacy web application that provides the access to the documents [10:57.840 --> 11:08.320] and all the collaboration features and that is it's built on top of freemaker, dojo toolkit and [11:08.320 --> 11:16.960] ui, so they are like all the technologies and the development happens in java, so we are creating [11:16.960 --> 11:26.080] java projects in order to extend this application, on the other hand we have also the adf the alfresco [11:26.080 --> 11:33.280] development framework that it's built on top of angular, so you have some angular components [11:33.280 --> 11:42.240] and you can add your angular components to this ui application, so there are different [11:42.240 --> 11:52.400] applications with different SDKs with different ways of extending, currently many users are [11:52.400 --> 12:01.360] still using SER but the new users are using adf ACA that is the alfresco content application, [12:01.360 --> 12:07.040] it's one implementation of this adf, so if you are planning to create something new for the [12:07.040 --> 12:12.960] alfresco ecosystem then you need to move to the angular one, and if you are supporting still [12:13.680 --> 12:17.840] previous deployments of alfresco probably you want to create something for SER, [12:20.240 --> 12:27.760] for the alfresco SER we are talking about alfresco SER add-ons, so you have on the [12:27.760 --> 12:34.880] alfresco documentation all the instructions in order to create this kind of extension for [12:34.880 --> 12:40.400] this application that can be declarative, just configuring something of the application, changing [12:41.440 --> 12:46.400] some behaviors and default behaviors of the application, you can create something that is [12:46.400 --> 12:51.840] programmatic, so you can add new features, add new functionality to the application, [12:51.840 --> 12:58.720] and you can even overwrite default behaviors of the application, so this is very rich and it's [12:58.720 --> 13:07.200] really relying on these maven projects, so it's a java project, you add all your modifications [13:07.200 --> 13:13.920] and you deploy that on the SER web application, if we move to the alfresco ui extension to the adf [13:15.040 --> 13:21.280] then this is something different, then you need to use an angular project and you can overwrite [13:21.280 --> 13:27.120] or disable extension points, you can change some rules, actions, visual elements, you can [13:27.120 --> 13:32.800] register new application routes, and you can also reduce new rules about auto components, [13:33.920 --> 13:42.160] so you have all the information also on the alfresco official documentation and the extensibility, [13:42.160 --> 13:49.840] these extending mechanisms, it's able to apply your angular components to the default application, [13:49.840 --> 13:55.920] so you are working in this case with angular, so you need a detailed knowledge of angular in order [13:55.920 --> 14:03.520] to extend that, if we move to the integration api, so remember that we were talking about SER [14:03.520 --> 14:09.040] and adf that are mainly the uis, are mainly the user applications that we are providing, [14:09.600 --> 14:16.160] but even with that you have also some extension mechanisms on the repository, so you have the res [14:16.160 --> 14:25.440] api and the even apis that we are we are compiling both into the alfresco javasdk that the name is [14:25.440 --> 14:31.200] out of process, because this integration happened out of the alfresco repository, so you can use [14:31.200 --> 14:38.720] both res api and the events api that is related on active enqueue from this SDK, if you want to [14:38.720 --> 14:45.360] create an extension inside the repository then we have the in-process SDK, so with this SDK you [14:45.360 --> 14:52.560] can create some new resume points or you can create some behavior different inside the alfresco [14:52.560 --> 14:59.200] repository, and finally we are supporting also the standard cmi client that should be more or less [14:59.200 --> 15:05.600] also some out of process extension, so let's go deeper with the first one, so this out of process [15:05.600 --> 15:12.080] is reliant on events and res apis, again in the official documentation you have everything you [15:12.080 --> 15:19.040] need in order to use this api and this is based on cloud events, specification and open spi [15:19.040 --> 15:27.280] specification, so both events and the res api are specified on standards that you can rely on, [15:27.920 --> 15:33.440] and you have all the different actions and all the different information in relation with [15:34.000 --> 15:40.960] action activities, comments, notes and so on, so you are able to interact with all the different [15:41.760 --> 15:48.320] entities of the repository by using events or using the res api, if we move to the in-process, [15:48.320 --> 15:55.680] to the maven SDK that is related in java, you can just create a new content model, you can add some [15:55.680 --> 16:02.720] new res api endpoints, you can also create some behaviors for some policies in the repository, [16:02.720 --> 16:11.040] so you can just create new behaviors for that and add new code to the standard alfresco [16:12.240 --> 16:17.920] lifecycle for the nodes, you can create some transformations and extract some metadata, [16:17.920 --> 16:23.600] and even you can create some schedule jobs, so you have a wide variety of operations that you [16:23.600 --> 16:30.800] can extend on the alfresco repository by using this kind of integration, if we move to the [16:30.880 --> 16:37.680] cmis that is a standard developed by oasis, so you have all the specifications at this point, [16:37.680 --> 16:43.120] alfresco is supporting like 90% of the standards, so we have a wide coverage of the standard, [16:43.120 --> 16:49.520] and in this case we are working with res api bandis that can be in xml or in json, so browser [16:49.520 --> 16:55.760] atompook, and we have also some kind of services and navigation, object, multi-filing, discovery, [16:55.760 --> 17:03.040] versioning, relationship, so we are able also to interact with the repository by using this cmis [17:03.040 --> 17:09.120] standard that have clients for many different technologies, so java obviously and python, [17:09.120 --> 17:18.560] and many different technologies that you can use, so these are mainly the all the different ways of [17:19.280 --> 17:26.880] extending alfresco, so remember the applications and this UI applications, these user applications, [17:26.880 --> 17:36.160] but then we can also move to the repository and we can also extend the repository features [17:36.160 --> 17:40.800] by using one of the SDKs, so let's move to the next section. [17:41.760 --> 17:49.440] Okay, let's start with the online editing collaboration tools, that this is like the main [17:49.440 --> 17:57.200] topic of this session, and we are going to start with LibreOffice, so the first integration with [17:57.200 --> 18:03.280] LibreOffice was relying on web app or cmis protocol, so we can see this sample from [18:04.240 --> 18:10.400] our partner, from our community developer, repillibro, that was just checking out the document, [18:10.400 --> 18:16.160] editing the document, checking in the document again, so it was a process that was not that [18:16.160 --> 18:26.400] easy, right, so you have this description, you have this process description also for reference, [18:26.480 --> 18:33.200] but we are going to explore something like, it's like more simple than that, that is the [18:33.200 --> 18:40.640] colabora online project, so colabora online is a project that is providing LibreOffice for the [18:40.640 --> 18:47.440] online editing, so you have this project that is hosted by colabora online itself, [18:47.440 --> 18:52.080] that is the alfresco colabora online, it's an avant-garde alfresco that we are going to see [18:52.160 --> 18:58.960] later, and is maintained by Yesi, Yesi is a French company very focused in open source, [18:58.960 --> 19:05.040] but the nice thing about that is that this project is coming from Magenta, that was a [19:05.040 --> 19:12.800] Danish company, and this Danish company created some initial version, then this developer, [19:12.800 --> 19:19.840] Jeremy Lesard from Yesi, created something better, Arawa came later to create something better, [19:19.840 --> 19:26.560] and finally all this previous work was consolidated in the alfresco colabora online that is [19:26.560 --> 19:38.960] currently the version we are using, so this add-on that you have available on the colabora [19:38.960 --> 19:45.040] online, you have a com, provides online editing for alfresco using colabora online, so many users [19:45.040 --> 19:51.680] can open the same document at the same time, and they can collaborate together on the same document, [19:52.560 --> 19:58.720] this integration is made by using new opi, this web application open platform interface protocol, [19:59.360 --> 20:06.240] so that means that we are open an iframe inside alfresco, and it's really very handy because [20:06.240 --> 20:14.400] you have your iframe and you can just work with that without being out of alfresco, so very clean [20:14.400 --> 20:20.560] implementation from that, and it's providing an add-on for alfresco ser for the legacy [20:20.560 --> 20:28.320] application, it's also providing an extension of the UI for ACA for ADF, an angular extension, [20:28.320 --> 20:33.440] an angular component, and it's providing also the alfresco repository add-on, this alfresco [20:33.440 --> 20:40.080] repository add-on is required and you can deploy the ser add-on or the UI extension if you are [20:40.080 --> 20:46.320] using ser or if you are using ADF ACA application, an angular application, but the repository is [20:46.320 --> 20:52.080] required because it's providing some services that are used by both UI applications, [20:54.480 --> 21:04.640] in order to test this project we have created, we have created a repository that includes a [21:04.640 --> 21:11.600] Docker Compose template that you can use to test the integration, so this is just something that you [21:11.600 --> 21:21.120] can use to test the integration, but if you want to deploy that in production or you want to move [21:22.320 --> 21:27.520] farther with the integration, then probably you need to contact with GSE or you need to [21:27.520 --> 21:34.880] you need to spend some time in order to understand better how that works, so this [21:34.880 --> 21:41.600] Docker Compose yes needs some modifications for you, the first one is that you need to use [21:41.600 --> 21:49.040] to add your public URLs for collaboration alfresco, so in this alfresco setting I'm using this one [21:49.040 --> 21:56.960] that is my local IP, but you need to add yours and then we are using the collaboration online [21:56.960 --> 22:03.680] development editing, so we are using this code with no SSL and we are exposing that by using the [22:03.680 --> 22:11.120] port 9980, so these are like the main characteristics of the Docker Compose, just remember to add your [22:11.120 --> 22:19.280] own IP and we are also just extending the alfresco Docker images in order to deploy the [22:19.280 --> 22:23.520] collaborative platform extension for the repository and in order also to deploy the [22:23.520 --> 22:29.680] collaborate extension for the SER application, we are not providing the collaborate extension, [22:29.680 --> 22:36.400] so we are not providing the ADF extension, the Angular component, because we want to compare [22:36.400 --> 22:40.960] this integration, this collaborate integration with only office, since only office don't have [22:40.960 --> 22:47.440] ADF extension, we are only using this, but you can also deploy this collaborate extension, if [22:47.440 --> 22:53.840] you are using ADF or ACA, there is no problem in doing that, just follow the instructions [22:53.840 --> 23:02.640] on the main web page on the GitHub project and you can understand how to apply that, [23:03.520 --> 23:12.800] and with no more explanations, let's dive into the demo. Before starting with the demo, just [23:12.800 --> 23:18.080] remember that you have in the collaborate online GitHub account, you have this alfresco collaborate [23:18.080 --> 23:23.360] online, that is the project we are going to use, that is the one providing the ad-ons for the [23:24.400 --> 23:29.840] repository, this platform extension for the SER application, this one we are not going to use the [23:30.720 --> 23:35.600] collaborate extension, the Angular extension, but you can also use that, you have all the [23:35.600 --> 23:43.600] instructions below, just for you to understand how to build and deploy that, and we are going to [23:43.600 --> 23:49.440] use this alfresco collaboration tools project, that includes the Docker compose template for both [23:49.440 --> 23:57.280] collaborate and only office, so for the collaborate one, we have this Docker compose with some alfresco [23:57.280 --> 24:04.640] and SER Docker image extensions, so just remember to check your IP, so in my case, [24:08.720 --> 24:14.800] my IP is this one, my public IP is this one, so this is the one I need to use, [24:16.400 --> 24:24.800] okay, just change that in the Docker compose, and without any additional instructions, we can [24:24.800 --> 24:34.800] just start the Docker compose, so let's start that, I just have the project locally, so Docker [24:34.800 --> 24:44.080] compose up, we are going to build the Docker images, so the Docker images are very easy, [24:44.080 --> 24:51.840] so we have this the extension at this point, and we are just standing the alfresco repository [24:51.840 --> 24:58.000] and copying the YAR to the deployment folder, and it's the same thing exactly for SER, [24:59.200 --> 25:03.520] so we have a extension, and we are copying this extension to the deployment folder, [25:04.400 --> 25:16.800] so once the deployment is ready, then we need to use this URL, or this URL in order to access the [25:16.800 --> 25:25.840] environment, so just let's wait for it to start, it looks like now it's ready, so we can just go and [25:26.480 --> 25:37.360] open a new fresco with SER, we are opening this SER web application that has this [25:38.080 --> 25:50.880] the collaborate online on it, this extension, we can just go and find some document like this one, [25:52.640 --> 25:56.080] and with that you can see this editing collaborate online [25:57.600 --> 26:05.200] action, that is something that was added by the add-on, if we click on that, then we have this, [26:05.200 --> 26:11.760] we have the news, so we have this iframe that is on the alfresco application, we can just [26:12.640 --> 26:20.240] add something, we can change something on that, we can just save the document, [26:21.360 --> 26:31.840] and when we close, then we have the new document with all the changes, and we have also that [26:31.840 --> 26:39.520] version, so let me create also some additional users, so we can experiment how that works with [26:39.520 --> 26:44.000] many different users editing the same document, I'll be back in a minute, [26:46.960 --> 26:52.960] okay so now we have two different users with access to the document, we have the test one [26:52.960 --> 26:59.200] in this browser, and we have the test two in this other browser, so if we start [26:59.680 --> 27:07.840] editing the document with test one, we can go back to this other user, and we can see that [27:07.840 --> 27:13.920] cool entry is being edited with collaborate online, but we still can be editing the document also, [27:14.560 --> 27:22.000] so with that we have collaborative editing with test one, with test two, we can make some changes, [27:22.000 --> 27:30.960] for instance I'm going to change that with the user with text two, and we can save that, [27:31.520 --> 27:39.280] if we move to the other one, the change is happening, it is live, and we can change also from this [27:39.280 --> 27:47.600] other user this color, and we can again save that, so once we are back to the document, [27:47.600 --> 27:59.680] we can see that if we close also this edition, and we refresh the environment, [27:59.680 --> 28:04.640] it's not being edited anymore, all the changes are happening on the document, [28:04.640 --> 28:10.880] and on the version history we have the change happened by test two and test one, so very clean, [28:10.880 --> 28:17.680] it works as expected, and is very useful to apply this kind of collaboration [28:18.960 --> 28:26.080] of editing collaboration with collaborate online, so it worked, let's move to the next one, [28:29.680 --> 28:35.920] if we move to the only office integration, then we have another case of collaboration, [28:35.920 --> 28:43.280] so the initial integration was created by Cetric3, that user was working for Parasift, [28:43.280 --> 28:48.560] so they created the initial version, and then this was adopted by OnlyOffice itself on the [28:48.560 --> 28:55.440] GitHub account of OnlyOffice in order to promote and to improve this integration, so you have the [28:55.440 --> 29:00.080] project in the official GitHub account of OnlyOffice, it provides online editing, [29:01.040 --> 29:06.160] also and many users can be editing at the same time, so it's more or less the same thing as [29:06.160 --> 29:13.040] collaborative, but in this case they are using a custom protocol that is not WOPI, and it updates [29:13.040 --> 29:18.560] the document after 10 seconds of inactivity in OnlyOffice, so you can also just see on that, [29:18.560 --> 29:25.840] but it's a custom protocol created specifically for this operation, you can also get access to the [29:25.840 --> 29:31.600] details on the GitHub account, and also the difference is that we are not using an iFrame [29:31.600 --> 29:38.240] anymore, but we are opening OnlyOffice in a new browser, with a new browser tab, so we are [29:38.240 --> 29:44.400] editing the document on this tab, and then we are going back to Alfresco, we are, this [29:45.200 --> 29:50.240] add-on is providing an Alfresco share add-on and an Alfresco repository add-on, so there is no [29:50.240 --> 29:57.840] option for ADF or ACA for the Angular components in this case, but you can still develop that [29:57.840 --> 30:02.640] because it's more or less the same thing as we have with the Collabora app. [30:04.640 --> 30:11.120] The deployment provided, again on the Alfresco collaboration tools project with the OnlyOffice [30:11.120 --> 30:20.720] folder, is just using the OnlyOffice document server, but with the JWT option enabled, because [30:20.720 --> 30:26.240] we are using the latest version of the document server, so we need to enable this authentication, [30:26.240 --> 30:34.960] so we are using this secret, and we are signing this secret in the document server, in the OnlyOffice [30:34.960 --> 30:41.280] document server, and we are also applying that to the Alfresco repository, so we are deploying [30:41.280 --> 30:49.360] the JWT application in the Alfresco repository, and we are adding this for the Alfresco global [30:49.360 --> 30:56.880] property, so the OnlyOffice URL, remember that this should be also the PolyURL, and the secret [30:56.880 --> 31:03.120] that we are signing with the document server with the OnlyOffice, and we are deploying the OnlyOffice [31:03.120 --> 31:09.120] integration in the server application, and no extension is available for the Alfresco [31:09.120 --> 31:16.000] container, so extending the Docker images, just to add these settings, the Office, the OnlyOffice [31:16.000 --> 31:23.200] URL, and the JWT secret, and creating this JWT secret on the configuration for the Docker [31:23.200 --> 31:34.160] Compose, so with that in mind, let's start with the demo. For OnlyOffice, again we have the OnlyOffice [31:34.160 --> 31:42.000] project in the official OnlyOffice JWT with your instructions, and you have also the releases [31:42.000 --> 31:50.400] ready to be deployed on that, so you have both add-ons enabled, and we have created this OnlyOffice [31:50.480 --> 31:55.360] project that again has the Docker Compose, the Docker Compose templates for reference, [31:56.480 --> 32:05.280] remember again to use your own public IP for that, just change this parameter, and then you [32:05.280 --> 32:15.360] can just go with that, so we have also the project again, so we can start this on the OnlyOffice [32:15.360 --> 32:20.880] folder, and the extension in this case is more or less the same thing, so we have this [32:20.880 --> 32:27.920] Docker file, and we are copying the add-on, the JAR file to the deployment folder, since this is not [32:27.920 --> 32:33.600] supporting environment variables, this add-on, we are copying the configuration we want also [32:33.600 --> 32:40.560] as the Alfresco global property, so it's a small difference with the other, with the JWT secret, [32:40.560 --> 32:47.600] and also with the public URL, and insert is more or less the same, so we are extending the Alfresco [32:47.600 --> 32:55.200] Docker image and copying the JAR to the deployment folder, so again more or less the same approach, [32:55.200 --> 33:02.400] a simple Docker Compose with some extension for the Alfresco Docker images in order to apply that, [33:03.280 --> 33:13.680] so we can just go with that, we can open again SER, we are going to use the admin user [33:15.280 --> 33:23.680] for the first test, let's see if that is working, so in this case something that is also interesting [33:23.680 --> 33:36.000] is that if we navigate to the same document, we were modifying before, so this one, we have now [33:36.000 --> 33:43.440] the written OnlyOffice or convert using OnlyOffice, so this is because OnlyOffice is not supporting [33:43.440 --> 33:51.760] this format, so we can convert the document, and once the document is converted, we have this one [33:51.760 --> 33:59.040] that is ready to be edited in OnlyOffice, so with that again, this is OnlyOffice window, [33:59.040 --> 34:07.360] we can just change that, and once we close these windows, when we say okay this is safe, [34:08.400 --> 34:15.120] after some time, we are going to get the modification in Alfresco, so you can say that [34:15.760 --> 34:21.680] the system still thinks that the document is being edited, but if we wait a bit more, [34:21.680 --> 34:29.600] then we have the version 2.0 and we have the modification on it, so it's also something that [34:29.600 --> 34:37.040] we can use very easily, we just need to wait a bit to get the changes in the Alfresco repository, [34:37.040 --> 34:43.680] and let's see now how that works when different users are editing the same document, and let me [34:43.680 --> 34:52.720] create some configuration and let's move to that. Okay, so we have a similar setting, so we have the [34:52.720 --> 35:00.400] user test 1 in this browser, we have the user test 2 in this other browser, and just let's check [35:00.400 --> 35:07.520] what's happening when I click on editing OnlyOffice, so I'm editing in OnlyOffice with the first user, [35:07.520 --> 35:16.080] if I move to this one and I refresh, I can see like the document is located, so I cannot [35:16.960 --> 35:27.920] co-edit on that, so I need yes some cooperation in order to collaborate with it, so I can close [35:27.920 --> 35:38.880] this one and wait a bit, since that is not edited anymore, and the same thing on the other side, [35:39.600 --> 35:47.840] and we can just click on editing OnlyOffice and editing OnlyOffice again, so now we are both [35:47.840 --> 35:56.720] editing the same document at the same time, so we have two users and two users, if I change this [35:56.800 --> 36:09.040] one from user 2, okay, and I close, that will be safe, and if I change this order from user 1, [36:10.160 --> 36:19.920] so yes, let's move to green again, and I close again, then probably, or I expect to find the [36:19.920 --> 36:27.600] document is still locked by the other user, so let's wait a bit, remember that there is some time [36:27.600 --> 36:33.360] you need to wait, okay, now everything, all the changes are on the document, and I have also [36:34.320 --> 36:42.160] this change, so only the latest changes, the latest change was updated to Al fresco, so we [36:42.160 --> 36:50.720] don't have the full history, but we were able to edit the document both at the same time by using [36:50.720 --> 36:57.520] OnlyOffice, right, so the behavior is a bit different, but it's still working and is still [36:57.520 --> 37:04.960] able to provide collaboration between both, okay, that was also awesome, and let's move with some [37:04.960 --> 37:13.040] more material for today, okay, once we learn about Al fresco, what Al fresco is providing, [37:13.040 --> 37:19.760] and we'll learn also about all the different APIs and applications that Al fresco is providing, [37:19.760 --> 37:26.480] we review two different approaches for the online editing collaboration, one coming from [37:26.480 --> 37:31.680] Collaboration Online, that is relying on LibreOffice, and the other coming from OnlyOffice, [37:31.680 --> 37:36.720] so both integrations are providing a source for their repository for the set application, [37:36.720 --> 37:43.440] and also the Collaboration Online is providing an Angular component for the new UI for the ADF [37:43.440 --> 37:51.280] ACA Al fresco UI application, so with that, just remember that Al fresco is providing some [37:51.280 --> 37:55.920] content service platform features that can be useful for you in order to prepare the documents [37:55.920 --> 38:02.240] for this online collaboration, however, in Al fresco we are adding this collaborative [38:02.240 --> 38:07.680] editing feature by using standard services, we are talking about the community edition, [38:07.680 --> 38:12.480] the open source edition, that you have the source code and so on, so for this edition [38:12.480 --> 38:17.760] you need to add collaborative editing by using, for instance, OnlyOffice or Collaboration Online, [38:19.040 --> 38:25.360] and as I said, you can use Share for both, and you can use ADF also for Collaboration Online. [38:26.560 --> 38:35.360] Thanks to every contributor that made this reel, so as we saw before, this was like a journey [38:35.360 --> 38:42.880] in order to create the Collaboration Online add-on for Al fresco, and also a shorter [38:43.920 --> 38:48.320] journey for the OnlyOffice add-on, but it was a history of collaboration, [38:48.320 --> 38:54.960] and this is something that really makes that happens and made that valuable, and if you are [38:54.960 --> 39:01.920] planning to integrate your service with Al fresco, yes, contact me, reach me, yes, talk me [39:01.920 --> 39:10.480] in the conference, or just reach me by any of my social media, because really we like you to use [39:10.480 --> 39:17.600] our product, and we like to create this collaboration histories, so I hope that was a useful session [39:17.600 --> 39:25.520] for you, and you have my email, and you have me also in the social media, so just always [39:25.520 --> 39:33.040] willing to help and willing to collaborate with you in some ideas or some projects you have. [39:33.040 --> 39:37.440] It was a pleasure for my side, see you there, and bye. [39:47.760 --> 39:58.640] Yeah, so I think that we have about four minutes for questions. I don't know, Angel, [39:58.640 --> 40:05.440] if the connection is stable enough on your end, or if you can hear me, [40:07.040 --> 40:13.760] so I have to mention for the audience that Angel today is at FOSDEM, so you may be able to see [40:14.000 --> 40:15.760] him also within the corridors. [40:18.720 --> 40:21.840] I guess so, can you hear me? [40:21.840 --> 40:22.880] Yeah, yeah, great. [40:27.600 --> 40:29.600] So let me try to fetch the questions. [40:32.480 --> 40:35.040] Yeah, so can you hear me, come in? [40:35.440 --> 40:44.960] Oh, it's a bit delayed, but I guess that we can try. [40:45.520 --> 40:52.640] Yeah, indeed. So actually, well, don't hesitate, for anyone in the chat, don't hesitate to ask [40:52.640 --> 40:57.040] questions. On my end, I had one when it comes to the only office integration, actually two of them. [40:58.480 --> 41:04.640] So you mentioned that you are opening the only office editor now in a new tab instead of [41:06.000 --> 41:13.280] an iframe for the collaborator editor. Is it like a restriction that you found with only office, [41:13.280 --> 41:19.920] or is it more for answering a security concern, or do you know about it? [41:20.160 --> 41:41.200] No, not really. I guess that was a restriction, because this alone was started some years ago, [41:42.000 --> 41:51.440] and they created like a new pattern of integration, this distance seconds waiting time. [41:53.120 --> 41:57.120] Probably, if doing that on the current days, [42:00.160 --> 42:07.360] let's collaborate online. But the nice thing is that you have the source code, you have the APIs, [42:07.360 --> 42:14.800] now you have all the basic tools in order to make that real. And also, again, if you're planning to [42:14.800 --> 42:25.440] do that, just try and reach me, and we'll try to build something together. So this was like the main [42:26.080 --> 42:31.760] methods of this session. So there are people working with that, there are people just creating [42:31.760 --> 42:38.320] some ideas, and we can contribute to make that better. But I guess that the only office [42:38.880 --> 42:45.360] integration can be recreated using the modern features of the only office platform. [42:46.720 --> 42:54.320] Okay, okay, great. And so we have about one minute left, I think, for the talk. Maybe one last [42:54.400 --> 43:03.120] question. So by recreating this only office filter using the new APIs that you provide as part of [43:03.120 --> 43:09.600] Al fresco, do you plan to have a multi user collaboration here in your demo? For example, [43:09.600 --> 43:15.120] you showed that you had to have one user that opens the only office document, and then the [43:15.120 --> 43:19.520] other one, and then closes it, and then the other one can open it, but they cannot really edit in [43:19.520 --> 43:30.480] real time. Is it something that you are planning to build also? Or it needs to be in the wrong map, [43:30.480 --> 43:45.840] I would say. Yeah, yeah. So the behavior can be exactly the same you have with the collaboration [43:45.840 --> 43:55.440] online. So both both users collaborating online and creating changes. But I'm presenting this [43:55.440 --> 44:04.560] from the perspective of of Al fresco. So we are not maintaining the project, right? Okay, yeah, [44:04.560 --> 44:12.560] and help to make that real. Okay, yeah, that's good. Okay, thanks a lot, Angel. And so if there are [44:12.560 --> 44:21.200] other questions, then you can the the the room called tackling the document, sorry, the room [44:21.200 --> 44:27.360] tackling named open source collaboration tools for Al fresco should be no open. And so if you [44:27.360 --> 44:34.000] have more questions, maybe they can be put there. So on your end, thanks a lot for for joining the [44:35.200 --> 44:40.800] event yet again this year. I'm going to have to leave you because we have the last talk [44:40.800 --> 44:46.400] of the of the demo which is starting. But maybe we'll see each other today at first. [44:46.800 --> 44:52.000] Thank you very much. [44:52.000 --> 45:00.800] Hello. [45:00.800 --> 45:02.800] Sir? [45:30.800 --> 45:32.800] Sir?