Okay, welcome to this open air providers community call. So the place and the moment in the months where we try to provide you some news about our recent developments in open air, in which concerns to repository managers, so the different managers of data sources that we have in open air for you to stay up to date in terms of developments regarding the provide dashboard, the different services in functionalities in the provide dashboard about the interoperability guidelines, your presence also in the different services that we have in open air. We always try also to inform you and also to collect feedback that is really important for the developments that we do as the open air infrastructure is made for you and by you, so with your content that you are providing as providers of different kinds of research outputs in open air. So today we don't have a main topic for discussion. So we decided to share four recent developments as we have lots of things to share and some of them at least to we want to receive your feedback. This is why we decided to not to have a main topic for discussion. So after the basic updates that I will provide now, so we will discuss some recent updates related with our interoperability guidelines for repository managers for and also for Chris systems. We will talk about the Chris validator share with you some news, then we want to present to you and discuss with you. This is a bit strange, OK, but no, no problem to two topics. They use as counts so that we have available in the dashboard. We want to tell you what we are planning to do in terms of integrating the counter five in reports in the dashboard and to collect your feedback. And also for Argus, for our data management tool in open air, what do you think it's interesting to have integrations between the provide dashboard and Argus and the repositories and Argus. So it's really a short discussion about that. So let's use these four topics. We will discuss it, present to you the novelties, get feedback from you during this one hour. OK, and I see that already we have more people joining, which is great and welcome to this community call. So recent news or developments, so just to inform you that the graph version that we have currently in production that we can see in exploring that you can see in the access, the information in the dashboard is from 19 of March. We are already preparing the one for April, and I suppose that until after Easter and until the end of April, we will have an update of our index. So be aware of this. I think it's always interesting. Be aware that we have this page here where we usually present explicitly what was the last date and if there are any relevant updates for you to consider. So we also put their relevant updates from our infrastructure or from the content providers. Let's say another thing. So we are preparing, like I said, in the last meeting and we want to put it in production. We just revise it with everything in terms of the legal statements there. So the open air acquisition policies and the terms of use are the same since 2018. We have published, they are available, publicly available. All the data sources that join open air need to be aware of those data policies. But as we have a long process, we started with the driver compliance, then open air version one of the guidelines. So we have hundreds of data sources integrated in open air before our policies were updated and made available the last version in 2018. We have more resources that were in open air before 2018 that they have updated after 2018. So we have decided to make an effort to make everyone that is part of open air contributing with content for the infrastructure to be able to update the terms of use and to do a check that they continue to agree with the terms of use. So we have that in beta. We will put it in production. We want just to share it with you. So it's really ready to kind of just receive a small consideration from our lawyer. But everything is ready. We can present to you. I will present to you what we have. Then we have other updates that this is what we are going to discuss. And then also for you to be aware that since 2019, we have a trailer board where we put to the plans for development, what we see as the wish list or things that we are working on. So be aware that we have this trailer board and they can also share. We need to do some updates. But during 2020, we never did any update to this trailer board. But we need to do it. And we will continue to have this trailer board as also a way to communicate with you and for you to be informed about what are the things that we are working. So usually we present this in the community calls. But I think it's also important for the service itself to provide the support to have this trailer. We have for the different services of OpenAir. We also had since, I think, 2019 or in fact, I'm not sure if it is 2019, but we have this trailer board. We have updated in 19 and 20. But then in 2021, we have decided to frozen that. But OK, within other decisions for other services, we will update it and keep it up to date for you to be informed about the terms of use. This is what we have and what we are going. You, all managers of data sources, we'll find in the dashboard when we put it in production soon. Let's see in the coming week, maybe I suppose we can do it in the coming week. So you are going to see pop up window for your data source, like saying, OK, thanks for being part of OpenAir. Please update your your terms of use or so. And we have like kind of check button for the set the terms of use and the degree with the reuse of full text. So and at any moment you can do it in the registration process, you can do it. Everyone will receive will see this pop up window. Those that are already registered, those that are that will register for the first time. And they will have a single step specifically for the terms of use. So we want to make it more explicit than in the past. And at any time you can come to the update tab and as you can update the OII PMAs interface or update the managers that have access to your data source, you can also update the terms of use. OK, and this is important, really important for us. I hope that you can do it after this is important. The most relevant thing that we would like to share is that this disagreement with the reuse of full text will allow us to have a better practice in terms of collecting the PDFs and the full text from your repositories. So it's important always to say that OpenAir does not provide full text files for public distribution. OK, we only use it for test mining to enrich our graph, but then always we link from our services to the original data source. We never link to the PDF. So we don't store the PDFs and make it publicly available. We store the PDFs just for the proposals of backend services in reaching our graph. And of course, by enriching our graph, we are enriching the type of services that we can provide to all OpenAir users. This is important. We don't do the type of things that, for example, we have in core. So I'm already sharing my screen. Can you see it? Yes, OK, OK, just to confirm if I'm sharing the browser. So when someone arrives to the dashboard for the first time after we put this in production, you will see these terms of use for the data sources that you manage. You can do it also in the update tab here, where you're going to see update the terms of use. OK, you can update this information. So as I was saying, this is important because of this sentence that we have here. OpenAir will not provide the full text files for public distribution. The users will access from the original data source. This is just for us. We don't do the type of things, for example, that core does where you can you can get the PDFs directly from core and you don't provide more visibility to the original data source as we are doing in OpenAir. This is an important difference that we have and that we want to keep doing. And this is why it's so important for us to update and for people to be aware of our content acquisition policies and our terms of agreement with the providers. OK, if you have any question, please feel free to ask about this. OK, so we have it in beta. We can check it in beta, but we are going to put it in protection soon because it's ready. It's already revised it. In fact, we did a small revision of a text and my colleague, Stephanie, from Athena, from Athens, did in fact this update this morning together with my colleague, Andreas, so everything is under control and proper prepared for this. OK. Important information for everyone, so feel free to ask questions and so we can do it at the end of this update, but feel free. So we have here an interactive session because I will ask several colleagues from OpenAir to join in to speak. OK, first important information was the terms of use. Now the second one is about the origin Europe. So we so something that is natural. So we already start to receiving several requests from repository managers or from project coordinators asking about how to present the the metadata about outputs from horizon Europe projects. There are more and more projects being approved and being and entering into into an implementation phase. So but unfortunately, we have a slight delay to integrate the list of projects from the European Commission in our infrastructure. And I try to I just prepared we just I just prepared together with my colleague, Andrea, this slide before this session just for you to share with you what we are doing in terms like for you to have a clear idea that you you we can answer all your questions. So what we need to do for the the full let's say the full implementation of the projects list in our in our infrastructure are to work on the three or four areas. So on the interoperability guidelines on the integration of the projects in our infrastructure on the integration of our of the projects in the different services of open air and then also to provide some support some training about the open science requirements in horizon Europe. So you can see this in this timeline. OK, let's say what we are working now and we are ready ready to present something we we are integrating the some like the the the way that we are implementing the the open science requirements from horizon Europe in the bibliographic specifications. Let's say from the from your data sources. So in fact, we are not changing let's say we are not changing the guidelines we are just putting in the guidelines some examples or creating a kind of appendix specifically the way that the repository managers can address the the the specifications from the horizon Europe. OK. So this is what we are already working and we are already we have that those examples for version three of the guidelines. Then we will work after this session in this creating this page in the guidelines website to clearly state what we need to do to to to met the horizon Europe and open science requirements upon access requirements. So we did one page for the horizon 2020 so we will do a similar one to horizon Europe, but I think it's important to make it more explicit. Then our our with the support of the open air training support and training standing committee. We we are already ready to start delivering some guidance about the horizon Europe so we are preparing three different guides that we will put available soon during April and May you will see in the open air website three guide guides. So one is is for the open science requirements in the in the in the preparation of proposals in the grant proposals. OK, so some tips about how to address the open science requirements from horizon Europe already in the phase of the proposal. Then another guide about and then two guides one specifically for research data for the research data management and sharing requirements. And then the other one for the open access to publications requirements. OK, this is what we are going to have for everyone for you. Then you can reuse also for your research institutions, your universities, et cetera, and for project coordinators. These guides are in for researchers. These guides are for for all our stakeholders. Then we need to integrate the projects in our infrastructures integrating the projects in our infrastructure. The projects from horizon Europe will be made available via our APIs. OK, which also includes specific API for, for example, for this space as we have the book access to projects from horizon Europe from FP seven. And naturally, also this list of projects can be consumed by you programmatically. And of course, we will be made available also in the different services. So in the node or in the claim service of of Explorer or in Argos. So this is something really that we are pushing a lot. It's not it's something that is not fully dependent of open air. So we are dependent also on receiving that information from the the core. This system, the system that provides support to the European Commission, European Commission for this regards that related with the rising Europe project. But so we are in touch with them. So we are pushing a lot to do this as soon as possible because everyone needs to be to have that information as soon as possible. Because some repository managers are already receiving requests from project coordinators about this. But you can already do something when we do this. So we will be able also to organize some webinars. It's in our pipeline to do it as soon as possible. We are expecting to have in the first half of May, these webinars for project coordinators and researchers that you it's also interesting for you. Webinars specifically about the horizon Europe open science requirements and the way that open air can support and help project coordinators. OK, I hope this slide was useful for you for you to be aware of what we are doing. We are pushing to do everything that what what we have here in April and May. OK, we need to have it because the community needs to have this as soon as possible. And so in May, I hope that we can we will be able to to see everything then. Andreas, do you want me? Do you want to join me and to tell our colleagues what we did in terms of the guidelines so related with the horizon Europe? So and then also related with the version four of the guidelines. So yes, Peter, hello. Thank you very much and also welcome from my side. As Peter said, the first step for in the roadmap was to updating our guidelines regarding the new horizon Europe projects. For this, we integrate a new example for horizon Europe. The horizon Europe is short called as a G. And here you see an example for the info you will semantics that are used in the version three of the guidelines for literature repositories. You have on the left side, the info, a grant agreement. Then the funder is the commission and then the funding program horizon Europe. After these horizon Europe was this the grant agreement number. And then there's something more you could provide an information about your projects here, but you shouldn't. And this is a small change in the chain of the roadmap. And you will see you could see this example in the latest version of the guidelines available through the read the books you see here the link. You will provide it also in the chat afterwards. The next was to remind something regarding the version four guidelines. The guidelines for version four is mostly called as literature guidelines, but it's not dedicated to literature publications. It's mostly for institutional and thematic repositories. So thematic and institutional repositories could have more than literature publications. And in this we are introduced the metadata format, why underscore open air. And in this we have a separate namespace for dedicated elements. The namespaces air and the elements for in this new namespace are you see here resource type funding references, license conditions, and versions files and so on. So there are some dedicated elements explicit for the metadata format. Why underscore open air. The guidelines are published in December 2018. And you see on the left side on the right side here the screenshot from the guidelines for version four. The new additional information that we have in the new release candidate for version for the version 4.1 is to have a back practice example for the YEPMH batch size. Mostly, you know, the batch size for repositories for the YEPMH interface is 100 records per page. And then you have resumption token or and and so on. In the last years, we see that are the repositories, the records and repositories are growing up. And we have some we made some tests and see that if we have if we could have a batch size over 100, that is better for our harvesting system for our application system. And we come up to have an batch size between 100 and 500 records per page. It depends on the resources of the repository. If you have if you have the resources for more than 1000 records per page, that'd be great. But if you have more than 100, it would be better for us. So thank you very much for the Chris. Yes, before before this, Andrea, just me just to reply to a question and then you can move to this. As we have Oliver here with an important question about the previous topic about the the date of terms of use that we are doing. Thank you. Thank you, Oliver, for your question. Why is it necessary to accept the use of PDFs if you keep the practice of not to provide those full text directly? So so we have decided mainly the two or three reasons are that. OK, it's a question of good practice to do this explicitly in terms of acceptance of the of the of the terms of the terms of agreement with our with our policy in the terms of use. The second one is is what is real was critical for us is that so as we are aggregating the content, the collecting content from different data sources since 2000 and in 10. So within different policies, some data sources have updated other know. So some have joined after we have this last version of the policy since 2019. So we thought that so at some moment we need to do a kind of of reset of this of this policy and I'm asking everyone to to to proper update based on the current policy. So those that in fact it will be a repetition for some we understand that. But in fact, it will be like the the the first time formally that some data sources that are like like let's say old or early adopters of open air. That are explicitly presenting and agreeing agreeing agreeing with the terms of use so this is the in fact the main reason so it's a good practice and it's because of all this history of open air. And and and we are we are we also discuss it and we can we can we are happy to receive this question in other comments so we discuss it a bit if we should put it like if it should be in the same line in the same line like accept our terms of use for metadata and for full text and just people do it at the same time we have decided to put in to separate like check check boxes. Just to make this more explicitly and to be complete completely transparent and then also to clearly explain what we do in terms of our policy with the full text so Oliver. Maybe you are right of the of what is behind your questions but so just a question of being, let's say, following a good practice in being pragmatic and transparent. Okay, I can I can come back to this at the end if you have more questions Andreas feel free to to add something to my answer or just to continue to the open at risk validator. So I would like to continue. For the open air Chris valley data yes. So, maybe you are also affected from the announcement from record to not update to the end of public updates for Java eight. And the Chris bullet data is based on Java eight and the Chris integration for mayor is very important. So we decide in the last weeks to updating the stand along Chris bullet vector first from the base Java eight version to another long term version and you see here. Long term versions are 17 by default. And there is also the opportunity to have other versions below 17 the less the late, the latest long term version here for Java. And in this context, together with our your Chris partner. We started these updates around the base version of Java. And I would like to thank you. Thank you guys also in the call I think for this help and assistance here to make it possible to have a new release for the open air Chris for the data. In this case. Another is open source. Everyone can contribute to this Chris through the validator source here. And I think we are happy or Andrea is happy to share the new link of the new release. Thank you very much. Thank you. Thank you. Thank you. Thank you, Chris. Yeah, feel free if you want to say something so. Thank you, Andrea. Yes, it was a cooperation between myself and Andrea. Make it work, which is great and I hope you can also benefit from it. The Chris guidelines are also undergoing some improvements and we hope to make them available soon. Many thanks. Many thanks. So we already cover two topics. So we have we have two other topics. So the user statistics and the and the and Argo so we will spend a little bit more time with the user statistics what we are integrating now what we have what we are integrating and we also want to collect your feedback so we have our colleague Dimitris that is the the manager of this specific service. That some of you are already benefiting others that are not benefiting you can always go to the open air dashboard uses counts tab and enable the service and you will receive some instructions on how to proceed. And what you need to do in terms of interaction with with open air and Dimitris will ensure this contact so Dimitris. Okay, thanks Pedro. Welcome to this community call. The upcoming updates regarding the usage count service are related to the new version to the support of the new version of the counter code of practice release. Five reports which are planning, which we're planning to introduce and included in the provide dashboard. In the in the, as you may aware in the current status in the current version of provide, we are supporting the counter code of practice reports we are offering the main five reports we which are provided by the counter which are defined which have been defined as I think 2012 from the from counter. And it's the release for of the code of practice we are offering the article report the item report, the repository for the book report for a number of successful request and book report for a number of successful sexual request. The upcoming updates are related to the new version the counter released five, which will be released in in the provide dashboard the next months. This version this new release will include the only three main reports and one specific report for datasets. The next report will be the platform master reports which is a report summarizing the activity for the repository, the usage activity for it for the repository for its month metric type and item type. I will go into more details for metric types item types are articles books, data set, etc. The platform usage report which report summarizing usage activity for this particular repository again broken down by month or metric type. The platform item report or the platform master report which report specific for items which are requested by month metric type item type and repository. And finally we are offering the reports for a particular item type the data sets. Again, which are requested request by broken down by month type and repository this is a report which is provided by the the make that account initiative and has been also specified in the by are supported by RDA. So the metric types, this is the most important change that are that will be that will be included in the in the new version of the counter release five reports. Now we are talking for for four different metric types the total item request total item investigations unique item request and unique item investigations keep in mind that the version of release the release for version supports only one metric type which is the initial support only one metric type which is the number of downloads. In opening we have extended and we added another metric type which is the number of views the metadata views. So, from two metric types we are moving to those four metric types. And there's a little change in the definition and the semantics. Pedro if you please move on to the next slide. So, the metric types encounter code of practice release for definition are the total item request, which represents the counts for for art for lower article full content views across all formats like HTML and PDF. This is the only one which is equivalent to the release for metric, which is defined in release for us count and corresponds to the number of downloads for a particular item. The unique item request is corresponds to count the unique article full content views within a given session, regardless of the format if it's PDF with HTML. So, in this metric type refers to a unique to the same session. So, if a user views an article in PDF format or in HTML format in the same session, this will don't really count as a single number as one. The third metric type is the total item investigations which which is a something with that is has been defined in the counter release five and count the total number of times. A particular item has been accessed either metadata view or full time access full content access, for example, download or download over PDF or an HTML view of the article. And of course the unique item investigation which counts unique article investigation and the request within a user session. So, these are the four metric types that are included in the counter release five update. And this is a pictorial view of of this metrics of this metric types encounter at least five, all accesses to an item are considered investigations. For example, a view of an abstract the view of an HTML full text or a PDF or even download the PDF or view of an article preview preview, all these user events are considered investigations. The difference is that the if you access the full text or download the PDF or view the PDF of a particular item. This is considered a request. So this is the main difference from the counter release for metric type encounter list for metric times we have only have, we only have the item views for open air and item downloads as they as they initially defined in the protocol. For counter release five, we have investigations, which correspond to any kind of access to the, any type of access to the item and request, which correspond to the actual view, or the full content of the of the item. So, just an example scenario, for example, a user Susan is researching the history of portal in the repository of you, of Minio, and from a list of search results, she opens three articles abstracts. So the counts are for total, we have three total item investigations and three unique item investigations. After reading the abstract Susan decides to download the PDF for two of the articles, and the counts change to five total item investigations since we have three, let's say views and two downloads. The unique item investigations remain three. Since we have two downloads, we have two total item requests and two total unique item requests. So this is the big difference in them in the release five. In the coming updates, we have the option either to continue supporting the counter release for and counter release five at the same time so we are offering both type of reports, or decide to remove based on your feedback of course decide remove the counter release five reports. If you want your feedback, if you would like to maintain both release for release five reports, and if you think that the release five for reports are no longer of interest and should be removed. A quick note that the graphs, the charts that will be offered will be remained as as they are, and we will continue to provide the, the number of view of metadata views and the number of downloads for each item. This is different from the counter reports that we are offering with the new metrics. Please give us your feedback if you want to keep this both reports, this schema with two different kinds of reports or remove the release four. Thank you. Thank you. Thank you. Thank you, Dimitris. So now if you can provide us if we have here for for minutes for you to share some thoughts so please just unmute yourself and give your opinion so the information the information is visible in this uses counts area. Okay, so to enable the service and to, and to, and to access the reports. So now you will we have this as we have the in this screenshot, we have the access to this for reports we want to, to make the the other reports related to the counter five available. We are open to to the feedback. I must say that we we have we already discussed and then we have an opinion in them in the management team of provide that we should stop providing the counter four and start with the counter five, but this is just our idea so if there are a strong opinion from from from users that they want to keep for some time reports from counter four, we can we can receive it if, if, if any of you want to, to, to give your opinion feel free. So, to write it in the shot or to, or to, or to unmute yourself. Anyone with a strong opinion about this that we should just move to five and and start offering the five set of reports so this with with this different types of metrics. We have some time for that so we only have one more topic for discussion about Argos but I think if you want to give your opinion if you don't have access yet to the to the to the service that's, you can enable the service. See if I, if I see it here. I was talking about this just to make it more explicit because I was, I was doing. I was sharing the, the example in beta. Nothing. So this is what you see as a repository that they have access to the, to this service you can see it and then you can get the, the reports based on this and run and run the query that you want so we want to. We have the flexibility and just put here the, the, the, the counter five that will become the supported report for us to make it available for you. I think we do with good quality why I have a lot of quality as we have updated the statistics are being updated in line with the index update which is something that we really want to offer a service with quality. Okay, feel free to give your opinion there are some users also here from Portugal for example that's already using this long time so if you have opinions just share it here in the, in the, in the shot okay. Perfect. Let's move to the other topic and then if you have any comment about this you can give and offer your comment at the, at the end of this meeting. The last topic is about, let me check if my colleague is still here yes. So it's about, so we can have, we can organize our ideas to organize a specific call with having the Argos and the integrations with provides and links to repository managers. Discuss it in the in one call only. But this is already to open a bit the discussion and for you to start thinking about what are the relations between these two services and what are the what is the relation between the services that repository managers, manage and the Argos as a tool to deliver and prepare data management plan so we have one slide for you to share with you so we will present what are the, the, the basic ideas behind this integrations. Thank you brother thank you for having me. Yes, so Argos, as the better mentions is a DMP tool is a tool that creates machine actionable templates for data management plants that researchers use them to write their to answer the questions and then read DMP and submit to the project that is either at the European level or at the national level, wherever they need to thank you very much for the billy goes there, wherever they need to adhere to the policy. They have to about RDM. So, Argos is not just a tool that creates the MPS but also connects it aims to connect and really does connect different data workflows together. The vision is that the data management plans are semi automated with validated information so that researchers have less of a burden when it comes to writing the DMPs and also enhance the data sharing incentives. So, they feel like if they go to share the data in the repository then they will automatically have some of this invalidated information inside the DMPs we have already started doing that and I will add the link for you to see with a feature that pre fills with the data coming from Zanotto, because Argos is an open instance and it integrates with all the open services so currently, the repository that we're using to publish the DMPs but also to get information to add as answers to the questions and the respective questions of the template are coming from Zanotto. But we could do of course the same with all other repositories so the integrations behind Argos and what with our thoughts behind this are twofold so they are two different levels. One is to integrate with Provide, which is a service that OpenAir offers and it targets all, so it informs all the repository managers and then the integration has to do with sending notifications to repository managers when data management has refers to the specific repository for the data sharing, for the projects they are sharing, then a notification should be sent to repository managers, that's the thought, and the repository manager can get an idea of what data are expected to be coming and what's the size of this data and so on. And you know, make any inform those researchers maybe ask the researchers if they need more information about things that have to do with data management plan and researchers don't know for example about backup things about preservation policies, things that are difficult for a researcher to know. And then the second one for Provide is to offer a selection of repositories to publish the MPs for not only Zanotto, but being more inclusive to properly push the MPs with a correct resource type because this is also if we're looking at the whole data that are out there, it's difficult to identify, to find, to exploit the data sets that are about data management plans. So there is, we are using the core vocabulary, and we are exposing the data management plans with the correct resource type and we would like to enhance this practice through Argos. And that is for the Provide side of things, and then we can of course and we will further discuss this in the next collection, to see how integrations can be made at the level of the repository itself. So instead of Zanotto here, you could have your own, and instead of prefilling information only from Zanotto, you could have yourself. And then we start creating, you know, all this, all these links and then coming back to the vision, we complete the vision of semi-automating the creation of the MPs. But yeah, I'm really happy to know your thoughts. I don't know if you ever consider something like this, like integrating with a data management planning tool, or offering, you know, APIs to data management plans so that the researchers can have more validating information to choose from when answering their questions or things like that. I'm happy to discuss them and know your thoughts. Thank you. Great, thank you. Thank you, Ely. Okay, this was really the idea to share with you that we have these possibilities so we can do several things as Ely identified, and we must do those that are more relevant for us, for the users of both services. Having this open air infrastructure, these different services in the open air ecosystem so we can benefit from this kind of integration. So think about that. So we are going to organize a specific call about that. So if you have some strong idea, so we have time now because we have three minutes more. So feel free to jump into and mute yourself and to give your opinion or to write it in the chat. You can always comment also in our Google document that we have can reply later. So if you have any opinion, just share with us. So what I think is important for us as repository managers to understand that. So, this is already working with the nodo. Okay, as a nodo is from the services ecosystem of open air which makes sense but we can do it also this integration to publish the MPs in literature automatically, or to facilitate that integration. I think this is one one use case that I think you should consider and we can think about that. The other that I as as as provide manager I would like really to have is to inform that repository managers that someone in a specific project, have the intention to put that in their repository so we can inform them so we can anticipate this this need. Okay, so a specific researcher stated in the dmp that I will use that repository from from Norway, that reverse Norway to put the data and so to deposit that or to store that so they can we can inform the repository managers, which I think is good send notifications. And, and, and, and maybe the similar situation for those public the MPs that are available. So we can do something with the literature repository managers. So, think about these possibilities I think early was quite clear in the possibilities that we are opening for you. Any comments about this. I think it would be better that we will also have some use cases to show in the in the school in the next call so I guess this will also help. Okay, not sure if Jose, I want to say something or to ask something we just open your, your webcam I'm not sure if you want to say something no, just a curve. No, no, okay, thank you. No problem. Okay, feel free to share your ideas with us so send to help desk at opener to you or directly to Ali to the, and for sure this will be important for us. Okay, to design this possibilities store to. I think it's more important to prioritize prioritize this possibilities what is more relevant for the community and then we can prioritize it as as as services. Thank you very many things for for for this, this presentation and to be able to join our community call. Okay, and we are coming to the end I'm not sure if you have any other question about any other issue we've already replied to some. At least we have this community calls every every month, so the community call is already scheduled for the first Wednesday of May that will be on the fifth of May. No, no, on the fourth, fourth of May, I was looking to 2021. The first of May will be the first Wednesday of the month. So, and we will dedicate some time to organize this call also for you. Be aware of the newsletter, I think, almost all receive our newsletter. If you think that there are others from your institutions or from your country that may benefit from this newsletter share with them please. We send it every like first Monday or first Tuesday of the month also to anticipate this this call so be be aware of that and all the information presentations and recordings are made available in the in the web page. So any other comment any other question. So feel free so two requests, if I may at the end so be aware that we want your feedback here regarding the integration of the counter five reports in the user statistics functionality in the dashboard. Send it to the up there is called directly to Dimitris Dimitris already shared email, it's in the shot. And the same for Argos, if you have any idea check this slide in the slides and if you have any idea any strong idea and you would like to have your repository also integrated like like we have the integration with the nodal state that opinion to to really sending the sending the information to Argos that at opener dot you. Be aware that we have all these plans to integrate to the for the integration of horizon Europe projects in open air so you can inform your project coordinators researchers about this hope that we manage everything what I told you in terms of guides integration of the guidelines integration of the API, etc. Until the end in the coming two months is in April and in May. Okay. Thank you very much so it's already off past three of past two in Portugal of past four in Turkey I suppose I saw some colleagues from Turkey also here. So, bye bye all. So, thank you very much for joining this community call I hope that it was useful to receive all this information and thank you very much for all my colleagues to to support me in this in this community call today. Dimitris, Andreas, Jan, Ellie, and of course my colleague Andre that is here in the in the back end providing all the needed support information. Bye bye also I will keep the call open just for you to copy paste some of the links and then we close it okay. Bye bye.


So, you don't know how to mirror objects in ZBrush. Not a problem. Now there are two types of mirror options. If you go into defamation and mirror, it will keep the shape the same, but swap its direction across the X, Y, or Z axis. You can also mirror across multiple axes at the same time. The second technique is under geometry, modified topology, mirror and weld. This forces the right side to copy the left, and again you can do it across the X, Y, and Z axis individually or simultaneously. Hope that helps and as always I hope you have a fantastic day and I'll see you around.


So yeah, thanks for coming along folks Basically, we're going to do a really quick look at a different web frameworks So we're going to start looking at some micro frameworks going to look at some batteries included ones I'm going to finish off with some async So yeah, just a quick introduction to who I am And if I could remember to turn my clicker on that would be good Yeah, so I'm our ambassador That's my Twitter handle. It's very imaginative. It's literally just my name and I'm Going to try and go for because it's like it web frameworks We're doing it going to the whole little world. It kind of sounded a bit like, you know around the world 80 days But Jules Vernezy So I'm going to go for like a bit of a steampunk Victorian kind of aesthetic for the whole thing So I probably should be a bit better on this image give some a hat Let's swap out those Ray vans Gotta have a bow tie if you're going Victorian and like that facial hair really needs it upgraded So yeah, so this is me. I'm a developer advocate for people who don't know what that is I literally get paid to wear branded t-shirts and hand out leaflets I do that for a company called next mo We're one of the sponsors here today. So we have a a booth actually on this floor, I think So if you haven't checked it out yet, you should we may still have some t-shirts left Hopefully go grab some swag talk to us about what we do but essentially we're just a An API company we do telecommunications API so make it really easy to add the ability to To kind of invite an SMS or voice calls and things to your own applications. So I work with this team We're Kind of a bit different than most developer relations teams and that we don't come under sales and marketing We actually come under product. We're all developers.  This one's Microsoft, but Android and firebase Flask and Google Cloud the that peer-to-peer protocol and hug express and deployed on the glitch Sanic Django Android Swift Angular Express. We go through a lot of different Technologies at next moment because well, as I said, we we're an API company We want to like show people how they can integrate our products into whatever stack they're using but also it's kind of fun You know, we enjoy trying out new technologies. We enjoy trying out new frameworks I personally come from a background of Python and Django. I use Django for a very long time So a lot of the stuff that I first arrived there was written in Django Now I've started to branch out look ever kind of Python frameworks look at lots of JavaScript frameworks And that's what I'm going to be talking about today is the fact that like over my last year doing developer relations I've obviously worked with an awful lot of different frameworks and writing these blog posts and reproducing this content And I'm going to look at some of those that have used as you go through this. So what I'm going to build is essentially this so In order to power a lot of our APIs we use Jason We call it an next-mo conversation control object, but it's a Jason file. It's essentially just a list of actions So this one is telling a telephone call to use a synthesized voice to read out some text You know pretty straightforward and that's I'm going to build for each of these different frameworks today So it's going to be one route. That's just going to spit out some Jason, you know, so really kind of easy So the first one we're going to look at is flask So flask actually started off as an April's Fool's joke The offer of flask Was quite well known at the time for being incredibly critical of different frameworks So as neighbor's Phil's joke he decided to write his own framework a framework that did everything He hated about micro frameworks and he released it and he didn't tell anybody it was a joke He just released it on the get hub. He did a screencast He actually got like a friend of his to record the voice and stuff for it we wrote a couple of posts and things and You know, even I think even the source code was actually obfuscated when he first released it before People started asking for the source and it's not incredibly popular Probably one of the most popular micro frameworks and this is something that guy built with everything that he hated So I think they were full jokes really kind of on him Beginning up running is very straightforward It's a single file kind of micro framework, you know, so you just create a Python file We can see here that I'm just importing kind of flask I'm starting a new flask app and then my route declaration is just a decorator on a function and that function using the jsonify Flask method will set the headers correctly to say that it is a it's actually Jason that are returning It'll properly encode it and it'll then serve that up and running it again is incredibly easy You know, I've got it here telling it what the name of my file is and it's just flask run And we have that served up and ready to go So that's the first one kind of a teaser of what we're gonna be looking at today I'll put the URLs up for for each of the different frameworks as we go through them Don't worry too much about trying to like write them down or anything I'll be publishing all the slides on my Twitter anyway So next one is cherry cherry's a little bit older than flasks being around for a little bit more But it's very very similar. It's uses class-based views rather than function-based use. So here we can see I'm defining a class Just a regular kind of object and I have again a couple of decorators on the methods and I'm just returning Again another Python object We're just gonna be quickly encoded in the Jason and served up on that route So this one rather than defining the actual route on the method like I was before we're defining this Sorry and our cherry pie quick start we have our different routes and we're telling what handlers to use for those There's no special way of running this, you know, you run it with guinea corn or your point your Python file on it There's no cherry pie run etc. Like we had for flask, but it is very very similar again. So You're out for it Falcon's kind of in bit new It's really kind of geared more droids creating API. So it's You know really kind of easy to to return Jason on it. That's what it's kind of expecting You're gonna want to be doing it anyway We can see here. It's very similar to what we have a cherry pie. We're declaring a class We have an on get and then we're just returning this this object We don't even need to tell it that it's gonna be Jason code or anything it expects that because it's it's built for API's Now This is kind of where well, I'll put it live up for it falcon first. So Falcon you can kind of see some of this stuff. It's It's nice, but it's a little bit convoluted So the people behind the next one hug kind of agreed in that as well And they tried to simplify it a little bit. Now, we can see with hug It's very similar to what we had with kind of flask or what we have a cherry pie You know, it's just a function that's returning a Python object that's gonna get encoded into Jason We have a decorator that's telling you what the root is, you know, it's very compact. It's very easy to run You're not saving an awful lot of space compared to what you wear or an awful lot of code compared to what Falcon provided But that's only for the very simple example of hug Where it kind of gets more interesting is when we start looking at more complex examples So in this example, you can see I've actually got two functions that are the same name And each function is actually operating on the same URL. So they're both on this ncco root, you know, they're both Called it called ncco. Weirdly enough But whenever we actually try to call any of these URLs, you can see it's got a versions in it So the first one has got this versions equal one and the next one's got this versions of a range of two to five So whenever we call a URL now, we can just add the v1 or v2 v3 in the URL and it automatically does the versioning for us It also allows us to provide things like examples. So in the second example there the we can see I've got this f string It's going to substitute the who into our hello world that's returning and we're showing in the in our decorator that you know this Who or we're sorry, we're providing example of what who should be so we've got like who's an equal world and we're also saying in our In our method that we have this who parameter is coming through and we can actually type it as well So we're saying that it's going to be a string. It's going to be a hug type of text Now if I try to access a URL doesn't exist or I try to provide the wrong information to hug We get this lovely kind of error output in the browser You know, so it's showing us what roots are available. It's showing us what those roots are going to return It's showing us what the examples were that we provided You know, there's a lot of kind of really useful information from whenever trying to explore that that API And this is all kind of provided out of the box from hugs. It really builds upon what Falcon gives you But then extend extends it with a lot of kind of useful things that you end up building time and time again yourself in Falcon anyway So that's hug So that's our first kind of just look at micro frameworks. It's not an awful lot to them That's kind of the point of them as you can see in the code. It's you know, we're talking four or five lines each and you're up And you're running and they're really really handy in that With the micro frameworks a lot of the stuff that we do is obviously building demos I mean want to get stuff up and running really fast You know, we want just to be able people wouldn't be wondering too long about the infrastructure or the code or The things that aren't the next way PIs essentially We just want something that we can show them a couple lines of code have it running in the browser immediately And they can they can get to work and that's where where these really come in and we can see the majority of them they're looking really kind of similar and The money code that's required. They're looking very similar in hiding which they handle kind of fiber class-based views or function decorators so We've done our our quick look at the micro frameworks. I know they're Not an awful lot of code to them. That's that's kind of the point of them. So I'm going to move on then to These batteries included framework and the term term grab bars included really was kind of coined by by Django It was the first kind of batteries included, you know, everything's in there with the micro frameworks They just give you the littlest amount possible, you know, they're going to maybe give you rooting They might give you template handling and they're going to give you kind of Views and that's it, you know, everything beyond that point is up to you But with your batteries included frameworks, they're going to specify an awful lot more and they're going to provide an awful lot more and for many of them it's going to be kind of You know a convention over configuration, you know, so it's they'll have a way in which you they Prefer you to do things and if you stick to that then it normally works out pretty well So if Django We have a few different commands once it's kind of installed you've done your your pip install your pip and install etc You've got this Django admin and Django admin has a start project Which essentially is just going to build out your your initial kind of template now for anybody who used Django Probably not point nine ish to one point four maybe Whenever you did your original kind of start project and then you would do your run server It wasn't the greatest experience didn't set up your static files for you things were a little bit Difficult shall we say? Not anymore with Django now as soon as you run your do your start project and do your run server You immediately get this lovely kind of webpage already up and running for you It also has a start app. So here I'm creating a new conversation app And it's going to create a bit of a file structure for you So I've got just a print tree of that there we can see that You know it's going to create a new folder and that folders can be things around for your migrations for your date for your database for your Models for your views it really gets an entire kind of structure And that's normally in the structure most people continue to follow with Django is the one that it kind of suggests So once we have our app created we need to add it to our settings This is where we can kind of see now these these frameworks a little bit provide a lot more They need a lot more configuration as well There's a micro framework so it's like a single page that you just wrote some code in around your Python you were done with these There's going to be multiple different files any change lots of different bits need to be updated It's why we tend to avoid using these a lot in demos because you end up having to explain an awful lot of boilerplate The people but if you're using it for your own kind of major projects It's probably what I would go for rather than micro. So anyway here we're in stock. We're adding it to our installed apps We then have our URLs So you can't put the URLs directly in the URLs file What most people tend to do is have your URLs file local to each app and then Just reference that from your main URLs file. So here I'm I'm looking at I'm including these conversation URLs and then we create our view now Django does support function-based views so with You can just have a View that's going to return take a request and return a response They preferred method nice to use class-based views. They've been around for a while. They're still not By some people fully understood or fully utilized. I personally prefer them to make it a lot easier to test stuff trying to isolate things even one large function-based view for testing is problematic And the class-based views obviously makes the testing a lot easier If people are having problems trying to get their heads wrapped around how class-based views actually work There's a fantastic reference called ccbv.co.uk It lists all the different views that are in there It allows you to drill down into them, you know See exactly where they inherit from what the methods are available on them What the code of those methods are should you need to extend it yourself? It's incredibly useful I probably spend more time on that site when I'm writing Django than on the actual Django documentation itself I don't know if that says something about Django's documentation around class-based views or not But it's still a wonderful reference and I highly recommend it The other thing that we have here is I don't know if people spot it is whenever I'm turning this JSON response So I'm overriding the regular kind of response that we have coming back of this get handler and instead I'm returning JSON And I do have this cf equals false That's always a major red flag whenever you're having to do cf equals false on any method Probably not something you want to be doing lightly Maybe want to be considering first and the reason for that is is I'm actually returning a a array as part of my JSON Now there is a Vulnerability around returning a JSON file that has an array at the root So if you were if you return a JSON file where essentially it's a dictionary at the root You know, so it's an object rather well or both objects, but where it's a dictionary rather than the rain And you include that in a script tag from a on your own website, so Kind of cross to me an exploits that won't render, you know, it's not going to execute anything You can't just include a a JavaScript object on the page using an external tag It's not going to actually run anything However, if you have an array at the top level Well, the you can then overwrite the array function in JavaScript and have that read out the contents of it So essentially the the array becomes like your JSON P your function wrapper around around that code So there's a great article that goes into this in a lot much detail, but why it's a really bad idea It's also why things like Django by default if you try to To return a JSON response that has an array as the root element It's not gonna let you do it. You're gonna have to actually specify that.  I'm a professional Please let me shoot myself in the foot. It's okay But you're still gonna have to let them to actually kind of go. This is my responsibility and I will I'll handle any repercussions from it Okay, so once we get a review then we're gonna reference that in our in our URL So this is the actual URLs for the the app itself We can see we've got this app name equals conversation. I'm renaming the year the actual URL. This is just it's a nicety It allows you then if you if you reference the net URL throughout your code rather than happen to To like reference the URL itself or the roots you can just do your conversation colon ncco I mean, so if you change the roots or your URLs change at any point You don't need to go through all your coding and reach and change all your hard-coded paths so we've been all together, you know, we've got our Modifications to our settings file. We've got our two different URLs files that need to be updated And then we've got our view itself which is actually doing it all the hard Kind of work all the heavy lifting so there's a bit more to it The actual the once you get down to it the views are very similar to what we've seen before It's just we now need to kind of place them within the structure provided from Django So there's a lot more boilerplate to update. There's a lot more kind of configuration settings to set There's obviously gonna be a lot more code as well when you look at all the generated code from Django start project You know, it's gonna create an awful lot of stuff a lot of kind of things It's gonna require to run but Yeah, I'll give you the URL for it as well most people probably were familiar with Django anyway The other one that we've got then a lot on our kind of our bar is included is permit so Permits got a long history. I think actually the clone people might be down there Like sponsoring so they're probably to give you a lot more of the background on it and I can But their slogan is start small and Finish big You know, so and then you really can so with permits it can act like a micro framework, you know You can have it all in one page You can define your your views in there using your decorators to tell you want to render some Jason Configure app and you're done, you know, there's not an awful lot more code there than what we saw for the likes of Falcon for example or cherry pie, you know, it's it's a single function per view That's just got a decorate on it, you know, it really can start that that small if you want But they've got this whole thing about finishing big So if you need it just for doing really quick kind of micro framework stuff You can do it that way if you're starting off on a larger scale project Then they actually use cookie cutter for doing their templating So rather than having like a built-in kind of admin like Django does and there's using cookie cutter There's a bunch of different cookie cutters out there depending upon the type of project went start I'm just using their their default permit starter. So you can see I've Done my cookie cutter here. I've got this Pippin M install Of all the dependencies one of the things that I find a little bit strange Probably just my my own way of approaching these is the fact that permit actually Packages everything as a Python package. So your project then becomes deployable as a Python package itself You know, it's just gonna have its own set up the pie in there Which is gonna list this kind of requirements, etc Whenever you're doing your development, you can see that I've in Pippin installed that with dash e to show that You know, I'm still actually in development on this so I can still modify that the code is contained within there and have it executed And then it comes with all the configuration is done in any files, you know, so you'll have a development any a production any For one for all your different environments And we have this P serve to allow you then to start serving the files up And once very similar to Django once you've run this kind of P serve on your your different configuration file Then it's going to stand up a server for you and present you with this lovely web Very red web page in this instance Now once if we're using it as a in this finished big kind of way So as a much larger kind of framework rather than using it as a micro framework on a single page Then we're very similar to what we had with With Django, and we've got a couple of different configuration files to edit and it's one. They actually put it all in your init.py And so we have this pyramid.config We're telling you where to lift its settings from we're setting up our roots So we don't have separate URLs that pyre anything like that for it sold on within this configuration And then we're telling it just in this instance just to scan our our views file and find any any views that are in there So switch from using just a single kind of Function of a decorator in this one in this instance now instead. We're actually switched to a class-based view Again, it has the same kind of benefits as what I was outlining with Django We set a lot easier to test and it makes it a lot easier to To override different methods and to create mix-ins etc And we can see here that I have created a really simple kind of roots that again is just returning This Python object is going to be automatically encoded for main adjacent returned with the the correct application type So the URL for pyramid there and if we look at the two kind of side-by-side We can see even with Pyramids kind of finished big mentality. There's not a huge amount of difference between the two So pyphons or Django's is a little bit more scattered three different files some of that's not really necessarily required That's just my personal preference Things like having an additional URLs that pie It's not actually needed. You could just put it all in your in your First URLs. In fact, there's actually a project out there that will turn Django into a single file Framework much the same as flask or anything were micro frameworks. It's disgusting So the the good thing about any of these kind of large frameworks over the micro frameworks is that There is conventions in there, you know, there is ways you should follow to get things done There's lots of books and things out there that explain Vagango two scoops is probably the main one, you know, I'll go through all the best practices and Hopefully if you approach one Django project, you know, it should look very similar to any other Django project You're gonna be structured very much the same way You're gonna your models are gonna be using the same ORM in order to access a database You know, your views are gonna be structured in very similar ways Okay, you might have some use functional base use rather than class base use But again, it should all be in a logical kind of place And you should be able to navigate the directory structure and find what you need very quickly Micro frameworks, they're slightly different in that. Well, they just give you the very very basics and leave the rest up to yourself And for developers sometimes that even for larger projects, that seems like a great idea you know, we don't want to be constrained by Other people's ways of doing things sometimes, you know, we've got this grand grand plan of what we're gonna build You know, we're gonna pour a heart and soul into this project and it's gonna be fantastic And we're not gonna make any of the mistakes that Django made or any mistakes that pyramid made, you know Our use case is unique to us So we're gonna start with the most basic framework we can and then we're gonna like start adding in all the different Things that we need that are written exactly for us and just the way that we need them You know, we're not gonna worry about the fact that you know, obviously Django is a great framework There's a lot of work to be put into it But concessions have probably had to be made because well, it's it's not geared exactly to what we need So instead you you start off a micro framework and then you might add in like sequel alchemy Or you might start adding in like some of your own ORM stuff Of course, these are all interesting problems and that's what developers like to do So that's why we do it. Why would we use somebody else's ORM? You know when it might not do it exactly the way we want So we write our own and we integrate that instead and well, that's the interesting part Documentation is not interesting. So it's all documentation. Nobody does documentation so the next developer comes along and they Maybe they like what you did. Maybe they don't like what you did, you know, they might Like it meant it slightly differently or they may not quite understand the way we have meant it There's no documentation. So they might use it slightly differently to what you'd use that They might not even see what you've done previously and they might start a completely new way of accessing the database And then a third developer comes along and they actually they don't want to rule their own So they just go and like Google it and take the first stack overflow answer and start doing it that way instead You know and suddenly this lovely framework that you designed in your head starts to look a little bit different You know, I've seen this happen as well in Countless different places where they go. We're gonna we're not gonna use Django because you know, we don't like the way in which it handles Views or we're not gonna use pyramid because we don't like the way in which it's its package for deployment Or we're not gonna use, you know, list your favorite frameworks here, you know We're gonna we're gonna build it ourselves because we can do better, you know probably not Okay, so we're running for this really quickly, but we're now on to our async So we're gonna start off with probably a granddaddy of all async ones, which is tornado the benefits of async Most people think of immediately is kind of speed Tornado is actually slower than Django Considerably slower than Django if you're talking about first response times to render a piece of Jason to the to the browser It's considerably slower like I think a factor of two But where it really excels is in concurrency And also in accuracy So whereas with Django as your number of concurrent users in increases your error rate also increases With tornado it tends to stay pretty consistent and pretty low as well You know, so it's gonna be able to handle requests might be slightly slower But it's gonna handle a lot more concurrent requests with a lot lower failure rate So let's look at how tornadoes kind of set up then Again, it's gonna be pretty straightforward It's much the same as a lot of the micro frameworks. You can use kind of last class based views You can structure it a lot differently. It doesn't really put a lot of kind of conventions around you here We can see I'm just defining a a class with a get method I'm configuring my my roots again, and I'm starting my application Now this Will work, but if we look at this section here We can see it's not as you're gonna work for next one next one requires that to be a list Even though there's one only one action occurring in there. It has to be a list Now if I try turning that into a list and running it in tornado, we're gonna get this You know, it's gonna throw an exception because of that that security vulnerability that we talked about earlier It's a really nice exception actually and it explains why it's going to do it But it's trying to stop me from introducing a security vulnerability in my code You know, but as you've talked about earlier like I will find a way to ship myself into food My tornado doesn't have a way of me just to go, you know, see if equals false and allow me to do it It just blocks it, you know, it's It's saying that this is a security vulnerability. You should not be doing this. We're not gonna let you do it But it's it's a Python class, you know It's got all this lovely we can go in we can look at the actual The code for it. We can see it's got all this error checking in there, you know, it's looking to ensure that That it's either bytes a unicode type or a dictionary, you know, it's making sure that it's not going to be an array There's an array is going to return that that exception But we're professionals You know error checking is for people who do not have confidence in their code So we're gonna get rid of all of that, you know, and because it's a class-based view We can just strip all that stuff out. We can overwrite their their right method. We can remove all that all that Error checking, you know, let's we will be wholly and solely responsible for introducing all the security vulnerabilities We want in our code. Damn it. It's our code. And if we want to be insecure, we will be So we remove all their error checking It now doesn't even check to see what kind of thing we're passing it It's just gonna be everything's gonna be Jason from now on. That's that's that's fine We're just gonna always return Jason And we we run this line. It's gonna work So it's returning them Now the the last kind of one that we're we're gonna look at and I know we've gone through seven already I really wish I brought some of that water up on the desk. Um, yes, the last one we're gonna look at is Is Sonic So whenever I first came across Sonic, I actually completely and artfully dismissed it. Thank you so much. Um, I Thought it was a joke to be honest I it came up in like hacker news. I went to the get hub page and this is their mascot Very enterprise friendly You know, I have for people who don't wear it's just really bad drawing of Sonic and hence Sonic But yeah, it actually completely turned me off from the project, you know And even when you start off the terminal like you get this in the terminal like they've really gone all in on this mascot And It I I immediately assumed it was a joke. I thought okay, so somebody's done basically a flask, but for async And I I completely dismissed it like I didn't really look into it anymore I didn't go back to it for probably like 18 months until at another conference somebody was raving about this this Framework I completely forgotten all about it. I'm whenever I went to look it up. I was like seriously This is still a thing. That's a long-running joke But no, it's actually great And I don't know if this is I don't know the moral here is like I ever don't judge a book by its cover or maybe branding matters I'm not sure but Yeah, I know I know people sometimes have a go at the whole Django like Pegasus unicorn type thing and how it's not You know, it's not enterprise friendly. It's not very professional Yeah, it could be worse Yeah So Sonic came up by basically because of UV loop and so in in Python from 3.4 I think we've had kind of async There's not a drop-in replacement for kind of the built in a second Python call UV loop. It's a lot faster And Sonic really just came as a way to take full advantage of that Much that we have before it's really simple to get up and running, you know, we're we're just defining a a Function and we're going to add our decorator on that to say what the root should be So it's always gonna be this ncco for any of our our calls here And then we just we just run it from the command line with our our Python Hello.py. I think we call these and we're gonna get this similar this output. Thankfully this I should say this only appears If you've got debug set to true We don't get the lovely mascot if and your production when we're running it. So it's not quite so bad But it can also support class-based views So we can see here that It looks very similar to some of the ones we've had, you know, I've defining our class We have this and in this case, so we're using async So we've got this async methods that's gonna return our JSON for us and then we can just run that as we did before So our sonic one Now as I was going through Writing the code for all eight of these different ones By the way, that's that's that was a fantastic idea of mine. Let's let's let's do a conference talk I need to write the same code eight bloody times That's going to be right in the code as you start to notice that it's really similar So here is how we define our our root in flask and here is it in sonic and Here is it in hug You know, we've got very very similar You know, okay, so it's app dot root app dot root hug dot get, you know, but it's it's a very similar kind of structure You know, and I said those are things like a pyramid, you know, so whenever we're defining our roots there, okay It's not app dot root, but it's again, it's you know, if you come figure in a root name or whenever we're looking at Our class base views, you know, we've just got these get methods and then on tornado We've got a get methods and on Django. We've got a get method and on falcon. We've got an on get You know again very similar And then I started noticing things like someone falcon there. We've got this API add root as well You know, which kind of looks like tornadoes, you know first to configuring it was kind of looks like pyramids for configuring it You know throughout all these like the actual similarities to many of them were well very similar So it's it's kind of an odd one then if you know What's how do you choose a trimmer to use or which one's the better one and to be honest? I've Got very little kind of differentiation between them Django would be really my favorite to go for for batteries included because I know it best If I'd started out my career writing pyramid, I'd probably be up here like using pyramid for most of my examples instead Whenever I come to use a micro framework again I'll normally use flask because that's the one I use first, you know, it's it's not because I couldn't Articulate that so my reasoning for it why I prefer flask over cherry pie or why I would use flask over Hug or or over falcon because it's it's not a case of oh It's this particular feature is a killer feature or that particular way that does it is the way that I really enjoy It's just it's the one I use first, you know, and I probably should explore that myself a little bit more because I probably am missing out on on better ways of doing things because I You know like most people I've stick with what's familiar now I stick with what I know and but what running a lease is turns out that actually You know the examples are at least the basics of each one is so similar that that reskilling or learning the different frameworks Didn't take very long at all But I guess that's kind of like the whole point of hyphen, you know There should be one and hopefully only one way of doing things apart from if it's string concatenation Then we should have lots of different ways apparently Okay, so I've been our ambassador. This has been my talk on eight different web frameworks Hopefully you got a chance to to Absorb a little bit of each one. I know there was an awful lot of code going through very very quickly there and I will post the I have a github repository that has everything I went through all the code examples With like explanations how to run each one and so that's all up on my github I'll tweet it out on our ambassador. I'll also put it on. I should probably go right about to the start there was a lot of slides and Just one or two here, and there we go. Here we go. Keep going. Oh, right and On next most account as well. So we have a next with dev account I'll put all the links to the slides links to get hub repositories Also the different blog posts that went through earlier, you know, so ones of Angular, Swift, Android, Django, Sanic, you know Express or peer-to-peer stuff all that kind of blog posts all up on our next one. I come to Again, they're going to be using all different frameworks. I've talked about today This is actually one from Mark. So mark is one of my colleagues You may have seen him. He's the other dude in the kill walking about who doesn't wear it quite so well So he's going to be talking actually around today, but about have to so I Recommend catching that as well if you can Other than that, we're going to be on the booth for the for the rest of the conference Please come say hello, and you've got any questions about like any of the frameworks and things that I went through I will try my best to answer them But as I said a lot for a lot of them, I'm really just a beginner as well I've just been using them because I thought they were interesting and trying to get some example code and stuff like that for people but yeah, so Again, that's my my Twitter Please fall along. I'll tweet out all links and things and thank you very much for your time Thanks, Aaron. Hey, that was quite nice of of you You mentioned at the end that you Probably would just go for flowers go just go for general because you're good got experience there When you look at the frameworks from a more Company or from a business decision, would you consider or have you looked into any? I don't know security Handling of those frameworks and how they compare to each other would that be a thing where you would make? decision-based on Yeah, so for me really the Reason that I probably would pick Django again and this was probably people will be able to tell me that all the frameworks of this I'm sure but is their deprecation schedule The way in which they handle kind of releases Stability of the actual framework is in my mind Crucial for really any kind of company and that feeds into the security stuff I've seen companies where they just feel to upgrade because there's too many breaking changes or the way in which the different frameworks have handled kind of Deprecation off of API's etc. Has been so bad in the past that they're really scared to do any kind of upgrades And that means they end up not doing even security upgrades as well So for me the fact that they have a stable release schedule a Published and deprecation schedule they stick to And the handling of their actual releases both security and and feature It's probably why I would stick with Django My question is is it you Could recommend some API over another if you plan to have a JavaScript framework managing the pronoun and more the backend site handled by some Django Python API and the other question Can you say again the website that you are using for Django reference? Yeah, sure. I'll I say I'll just put the let's get that slide back up sitting here somewhere Well, I have to move thing off Cholists up back on my face Let's just exit our list and let's just go direct with this slide. I kind of forgot just how many slides actually had Yeah Yeah, so for anybody you can't read it. It's cc bv code UK And it's a reference for Django's class piece views. It's incredibly useful so the first part of your question is is so if you're Essentially using the back end just as an API like so driving either. I'm assuming like react or or view your angular And The all of the ones we're looking at there had the ability built in to respond of Jason for some of them like flask It required using like jsonify rather than like the right regular response ones like Falcon are are really built to be API kind of back ends so you don't even need to specify that you're returning Jason as soon as it detects that the Your it's the object that you're returning from your view is a Python object rather than like one of their response objects Or just plain text. It's gonna And assume that you want that encoded this Jason anyway So most of the modern frameworks will be geared towards that that kind of way of working Django obviously is slightly different in that In order to turn it into really a API kind of back end you're gonna need to use something like Django REST framework Which is really mature If he's excessively on several kind of large projects and things so I've highly recommend that if you wanted to go Kind of the Django root Again, even with the async ones They're gonna be geared towards being API back ends as well You know so things like tornado again if you just provide it with a a Python object It's gonna assume that you want a Jason response So I wouldn't worry too much about you know whether or not they're gonna act as a Just isn't as an API gateway All of them are capable of doing that and they all handle it really well again It's just looking for whichever one kind of suits your your style or your requirements best Rob Hello Hi, thank you for the talk It's pretty nice being someone spending time to fight eight times the same thing and as he said there's a difference between But there is no real life code Yeah Usually So for For flask I know that they do flask has got a very mature kind of plug-in Kind of ecosystem around it. It's it's one of those ones as well that for things like database database access That there tends to be you know a preferred method of doing it So if you're giving around you're gonna find for flask, it's gonna be flask It's gonna be sequel welcoming and it's gonna be flask alchemy You know those those things combined is normally when most people do the database access But because the whole idea is it just does the minimum mind required and allows you to configure the rest yourself And I have come across situations where people will be using flask and using sequel alchemy But then they've written their own or M and top of it rather than using flask alchemy, etc For falcon and and hug which is based upon falcon. I'm not overly sure. I know they're fairly new I've not done a lot of research into what's available for them at the moment I do know for Most of the different frameworks to win through as well. They do have like for cherry pie essentially especially they have a very mature kind of Ecosystem around different extensions for it. So they will have a preferred method of doing it again The second for your question is if I've seen any major comparisons between all of them I haven't normally what you'll find is comparisons between maybe one or two, you know one or three like Okay, this is how you get database access and flask and this is how you do it in cherry pie You know or something I'll look at like okay, so here is that how you will do the preferred method in falcon But I've not seen so many do it for like all of the micro frameworks No problem