<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Antoine Mottier</title>
    <description>The latest articles on DEV Community by Antoine Mottier (@amottier).</description>
    <link>https://dev.to/amottier</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F457509%2F9ec6580c-fbfc-438b-93ff-1e9e0d3cc6b2.jpeg</url>
      <title>DEV Community: Antoine Mottier</title>
      <link>https://dev.to/amottier</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amottier"/>
    <language>en</language>
    <item>
      <title>The troubles of modern software dependency management and what to do about them</title>
      <dc:creator>Antoine Mottier</dc:creator>
      <pubDate>Wed, 05 May 2021 13:01:14 +0000</pubDate>
      <link>https://dev.to/amottier/the-troubles-of-modern-software-dependency-management-and-what-to-do-about-them-9cm</link>
      <guid>https://dev.to/amottier/the-troubles-of-modern-software-dependency-management-and-what-to-do-about-them-9cm</guid>
      <description>&lt;p&gt;In order to help developers tracking dependencies, FASTEN provides a new intelligent package management framework, on top of existing dependency management tools.&lt;/p&gt;

&lt;p&gt;The FASTEN European research project wants to support DevOps teams by helping them managing and mastering dependencies, at a finer grain level compare to what they are currently doing.&lt;/p&gt;

&lt;p&gt;The FASTEN consortium is preparing an intelligent dependency management solution that will bring innovation such as: a more accurate evaluation of the impact of dependencies, security vulnerabilities, license compliance, risk management, and evaluation of the consequences of library API changes on users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eIdqFlyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3x6cfahskism62sktt8h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eIdqFlyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3x6cfahskism62sktt8h.jpg" alt="FASTEN tracks the dependencies in components down to a very fine-grained level — the function, or method."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is led by a team of researchers from the Dutch University TU Delft associated with academics in Milan and Athens, industry engineers from SMEs Endocode, SIG, XWiki and OW2 open source community. This article evokes the first results obtained after more than 2 years of cooperation started in January 2019 and funded by the European Commission for three years.&lt;/p&gt;

&lt;p&gt;Software produced as part of FASTEN project is open source. As a result, any developers team can provide feedback and help improve the tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  FASTEN wants to tame dependencies
&lt;/h2&gt;

&lt;p&gt;FASTEN addresses a fundamental problem of developers, that is, the way they manage the dependencies of their projects. Reusing existing dependencies (usually opened source) is quite easy thanks to automation build tools and package managers. However, several risks should be identified and assessed beforehand. Indeed, when a developer re-uses existing third-party tools or libraries to save time, he or she lower the control over the code that will be part of his application. Software systems may depend on multiple external libraries and components that evolve separately, without centralized coordination. Therefore, several questions arise, in relation to the integrated functionalities. Such questions relate to trust, security or missing notifications regarding the evolution of a software component.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How to verify that the functions provided by a dependency correspond to what is expected, without any security implications?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How one can guarantee that a dependency update won’t prevent the end-user application from running?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Costly consequences
&lt;/h2&gt;

&lt;p&gt;In the recent years, we have witnessed several spectacular ecosystem failures with severe implications on client programs, end users and the further adoption of OSS:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A dispute over a library name in the NPM ecosystem led to the removal of a library called left-pad. The package removal led to the collapse of thousands of libraries which directly or transitively depended on leftpad, and hence a major disruption for client programs. Even after the leftpad incident, a study estimated that libraries exist whose removal can affect more that 30% of the core components of the network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A company named Equifax leaked over 100.000 credit card records due to a dependency that was not updated. The compromised systems included a vulnerable version of the Apache Struts library, whose update was postponed as the Equifax security team erroneously underestimated the impact of the bug on their codebase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malicious developers uploaded to the Python package manager repository (PyPI) libraries whose name was deliberately misspelled, being almost identical to the original libraries (e.g.,urllib in-stead of urllib3). The intention was to steal information from client applications of developers who had accidentally mistyped the library name in the dependency file.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Development teams should guard against such technical issues, or legal problems including incompatible open source licenses. In particular, the consequences of the slightest code change should be known by the team in charge of maintaining the applications in operational condition and by the IT cybersecurity team, which is not easily doable today.&lt;/p&gt;

&lt;p&gt;A better way to manage dependencies is therefore necessary and this is precisely the goal of the FASTEN project (Fine-Grained Analysis of Software Ecosystems as Networks).&lt;/p&gt;

&lt;h2&gt;
  
  
  An analysis of dependent functions
&lt;/h2&gt;

&lt;p&gt;FASTEN’s goal is to strengthen software ecosystems through smarter application dependencies analysis. The implementation of its analysis tools is under development for popular programming languages ​​such as Java, Python and C.&lt;/p&gt;

&lt;p&gt;At the heart of the project, a &lt;em&gt;knowledge base that will store functions call graphs that cover both library internal calls and inter libraries calls&lt;/em&gt;. The developers team can benefit from this knowledge base thanks to the integration provided by FASTEN in popular build automation tools. Schema below illustrate FASTEN architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DQLLN8At--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4uqqbaxkxaeh2sll3yb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DQLLN8At--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4uqqbaxkxaeh2sll3yb6.png" alt="An overview of FASTEN architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The network formed from the dependency call graphs provides valuable information on how the dependencies are used and what is their impact. Hence, developers can be aware of how many customers will be really affected by the last change of their code. Likewise, operators will be reassured before updating a particular library. They will also know if a dependency released under the free GPL license, for example, affects their application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CSc9DPEG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xxzbkpc43h5nkj18mi9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CSc9DPEG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xxzbkpc43h5nkj18mi9d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The developers team will therefore be able to check the constraints in relation to the use of new dependencies, on a technical and legal level, each license bringing rights but also obligations.&lt;/p&gt;

&lt;p&gt;In particular, engineers will know how many maintainers are involved in the evolution of an external code artifact, how many users have already put a certain library into production and what are the known vulnerabilities that affect the dependency. Many other variables can be also collected, at the function level, and then the team may decide whether or not to perform an upgrade of a particular framework or library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrated with most popular package managers
&lt;/h2&gt;

&lt;p&gt;The FASTEN project will be integrated into popular package managers for the Java, C, and Python programming languages, such as Maven and PyPI. Plugins for PyPi and Maven are already under development and will be ready for public testing soon. Developers will have access to the FASTEN knowledge base by just using their package manager and will be able to explore the FASTEN knowledge base to find information regarding libraries or projects. For instance, when developers want to update a dependency, the estimated impact of this update on their machine will be communicated by the package manager. Developers will also be notified about any security issue (e.g. if they are using the piece of code where the vulnerability is spotted; if any new issue affects transitive dependencies; or if an update is required). Compare to current solution that notify the user of security vulnerability, FASTEN will bring major improvement as it will only notify the user if he/she actually uses the part of the library that include the security issue. The Figure below provides an example of a FASTEN workflow with PyPi and illustrates how the technology can support DevOps teams and help developers making the rights decisions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1QdYr8Y2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sc62dvpb27ldgk694xw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1QdYr8Y2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sc62dvpb27ldgk694xw.png" alt="![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sc62dvpb27ldgk694xw.png)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FASTEN has received funding from the European Union’s Horizon 2020 research and innovation programme. It is carried out by a Consortium composed of AUEB, TUDelft, University of Milan-Bicocca, Endocode, OW2, SIG, and XWIKI. The project started in January 2019 and will run until December 2021.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FASTEN GitHub repository: &lt;a href="https://github.com/fasten-project"&gt;https://github.com/fasten-project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FASTEN website: &lt;a href="https://www.fasten-project.eu/"&gt;https://www.fasten-project.eu/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FASTEN presentation video: &lt;a href="https://www.youtube.com/watch?v=4gqPTZ3ASU8"&gt;https://www.youtube.com/watch?v=4gqPTZ3ASU8&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FASTEN beta-testing campaign on the Java Call Graph Generator: &lt;a href="https://www.fasten-project.eu/view/Events/FASTEN_Beta-testing%20_Campaign_%231"&gt;https://www.fasten-project.eu/view/Events/FASTEN_Beta-testing%20_Campaign_%231&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>build</category>
      <category>dependency</category>
      <category>graph</category>
    </item>
    <item>
      <title>Streaming prerecorded online conference on YouTube live</title>
      <dc:creator>Antoine Mottier</dc:creator>
      <pubDate>Mon, 24 Aug 2020 13:17:32 +0000</pubDate>
      <link>https://dev.to/amottier/streaming-prerecorded-online-conference-on-youtube-live-12ee</link>
      <guid>https://dev.to/amottier/streaming-prerecorded-online-conference-on-youtube-live-12ee</guid>
      <description>&lt;p&gt;In this article I'll explain how you can easily stream a prerecorded video on YouTube Live using open source software.&lt;/p&gt;

&lt;p&gt;We use it at &lt;a href="https://www.ow2.org"&gt;OW2&lt;/a&gt; for our own online conference: &lt;a href="https://www.ow2con.org/view/2020/OW2online_Intro?year=2020&amp;amp;event=OW2con20"&gt;OW2online&lt;/a&gt; and as it did run flawlessly I thought it'd be a good idea to share my experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ow2con.org/view/2020/OW2online_Intro?year=2020&amp;amp;event=OW2con20"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JtAuOENq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ow2con.org/download/2020/WebHome/OW2online20-RVB_Evolution_279x120.png" alt="OW2online logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  YouTube
&lt;/h2&gt;

&lt;p&gt;Obviously the first step is to create an account on YouTube.&lt;/p&gt;

&lt;p&gt;Next you need to create a new stream:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to YouTube Studio live: &lt;a href="https://studio.youtube.com/channel/UC/livestreaming"&gt;https://studio.youtube.com/channel/UC/livestreaming&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;In the menu in the left click on "Stream" to create a new stream&lt;/li&gt;
&lt;li&gt;Configure the new stream:

&lt;ul&gt;
&lt;li&gt;Title: choose a short meaningful title.&lt;/li&gt;
&lt;li&gt;For visibility you have 3 options: public, private (only you) or unlisted (only users with the link).&lt;/li&gt;
&lt;li&gt;Provide a description and make sure that it includes keywords that can help potential viewers to find your stream (if public).&lt;/li&gt;
&lt;li&gt;Pick up a category.&lt;/li&gt;
&lt;li&gt;You are probably planning your live event ahead so check the option "Schedule for later" and select a date and time.&lt;/li&gt;
&lt;li&gt;Upload a thumbnail that will be displayed to users when they try to view your stream before it actually starts.&lt;/li&gt;
&lt;li&gt;Select the appropriate option to define the targeted audience.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J4-jR1Cy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7xmecf89waudks66tu2g.png" alt="Screenshot of YouTube stream configuration"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click on "Create stream" button.&lt;/li&gt;
&lt;li&gt;All the default settings are usually just fine.&lt;/li&gt;
&lt;li&gt;Copy the stream key for later use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With that the YouTube part should be ready and now you can move on to the streaming part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Broadcast with Open Broadcaster Studio
&lt;/h2&gt;

&lt;p&gt;Open Broadcaster Studio (OBS) is an open source software that will let you stream your prerecorded video content to YouTube. &lt;/p&gt;

&lt;p&gt;First you need to &lt;a href="https://obsproject.com/"&gt;download&lt;/a&gt; and install OBS.&lt;/p&gt;

&lt;p&gt;Once installed start OBS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o45SFhpT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/odj9xbm6xgxg3altra3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o45SFhpT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/odj9xbm6xgxg3altra3a.png" alt="OBS on first start"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Settings
&lt;/h3&gt;

&lt;p&gt;On the first start you will be asked if you want to run the auto-configuration wizard.&lt;br&gt;
Choose no, we will do a manual configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T0EfpOlU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0evy69wtlae4siz7oo3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T0EfpOlU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0evy69wtlae4siz7oo3y.png" alt="OBS first start waiting for confirmation if auto-configuration wizard should be executed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the "Settings" button&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BGeqDXtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/meho19te7gyal64128yh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BGeqDXtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/meho19te7gyal64128yh.png" alt="Location of OBS settings button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and apply the following modifications (assuming you plan to stream a video recorded in Full HD 1080p without downgrading the quality):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General:

&lt;ul&gt;
&lt;li&gt;Select "Show confirmation dialog when stopping streams". This will prevent you from accidentally stopping the stream.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Stream:

&lt;ul&gt;
&lt;li&gt;Service: "YouTube".&lt;/li&gt;
&lt;li&gt;Server: "Primary YouTube ingest server". You can stream same content from another computer as a backup. On this second computer you should choose "Backup YouTube ingest server".&lt;/li&gt;
&lt;li&gt;Stream key: paste the key you copied when creating the stream in YouTube Studio.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Output:

&lt;ul&gt;
&lt;li&gt;Output Mode: "Advanced".&lt;/li&gt;
&lt;li&gt;Streaming tab:&lt;/li&gt;
&lt;li&gt;Encoder: "x264".&lt;/li&gt;
&lt;li&gt;Rate Control: "VBR".&lt;/li&gt;
&lt;li&gt;Bitrate: 8000 Kbps.&lt;/li&gt;
&lt;li&gt;Recording tab (in case you plan to also record locally your streaming):&lt;/li&gt;
&lt;li&gt;Recording Format: "mp4".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Audio:

&lt;ul&gt;
&lt;li&gt;Sample Rate: "48kHz".&lt;/li&gt;
&lt;li&gt;Desktop Audio: "Disabled". You usually don't want to stream sounds coming from the OS.&lt;/li&gt;
&lt;li&gt;Mic/Auxiliary Audio: "Disabled". This will prevent from streaming sound from your microphone over your prerecorded video.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Video:

&lt;ul&gt;
&lt;li&gt;Base (Canvas) Resolution: 1920x1080 (this assume that your screen is a full HD).&lt;/li&gt;
&lt;li&gt;Output (Scaled) Resolution: 1920x1080 (you want the Aspect Ratio to be 16:9 to match YouTube recommendation).&lt;/li&gt;
&lt;li&gt;Common FPS Values: "30".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click on "OK" to close settings window and on "Yes" to restart OBS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Content to stream
&lt;/h3&gt;

&lt;p&gt;In order to control when our playback and stream will start we want to configure two "scenes". Each scene will include a single source.&lt;br&gt;
The first scene will include a source with a static image (usually the same as the thumbnail configured in YouTube).&lt;br&gt;
The second scene will include a source that is actually your video file.&lt;/p&gt;

&lt;p&gt;In order to stream the static image you need to create and configure a "source" on the already existing default scene (named "Scene"):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the "Sources" area of OBS window click on the "+" icon.&lt;/li&gt;
&lt;li&gt;Select "Image" in the list of source types.&lt;/li&gt;
&lt;li&gt;Choose the option create a new source and keep the default name: "Image".&lt;/li&gt;
&lt;li&gt;Click on "OK" button.&lt;/li&gt;
&lt;li&gt;Click on the "Browse" button to select the image file to stream.&lt;/li&gt;
&lt;li&gt;Click on "OK" button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VYzlZYh9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vipp2ox17iim0s6q298i.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VYzlZYh9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vipp2ox17iim0s6q298i.gif" alt="Adding a source (an image) to a scene"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to stream a video you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new scene by clicking on the "+" icon in the "Scenes" area of OBS window.&lt;/li&gt;
&lt;li&gt;Keep default name "Scene 2" and click on "OK" button.&lt;/li&gt;
&lt;li&gt;In the "Sources" area of OBS window click on the "+" icon.&lt;/li&gt;
&lt;li&gt;Select "Media Source" in the list of source types.&lt;/li&gt;
&lt;li&gt;Choose the option create a new source and keep the default name "Media Source".&lt;/li&gt;
&lt;li&gt;Click on "OK" button.&lt;/li&gt;
&lt;li&gt;Click on the "Browse" button to select the video file to stream.&lt;/li&gt;
&lt;li&gt;Select the option "Use hardware decoding when available" for better performance.&lt;/li&gt;
&lt;li&gt;Click on "OK" button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RjkxzS65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6sscl2ea5jghic02mndi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RjkxzS65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6sscl2ea5jghic02mndi.png" alt="OBS ready for broadcast"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Streaming
&lt;/h3&gt;

&lt;p&gt;And now the final steps to start your live stream:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the scene with your static image.&lt;/li&gt;
&lt;li&gt;Click on "Start streaming" button.&lt;/li&gt;
&lt;li&gt;In YouTube click on "Go live" button.&lt;/li&gt;
&lt;li&gt;In OBS, select the scene with your video file.&lt;/li&gt;
&lt;li&gt;You are streaming your video live!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Doing live stream video event is quite easy and you can achieve professional results using exclusively open source software.&lt;/p&gt;

&lt;p&gt;We use this kind of setup for &lt;a href="https://www.ow2con.org/view/2020/OW2online_Intro?year=2020&amp;amp;event=OW2con20"&gt;OW2online&lt;/a&gt; live event. In an upcoming article I'll cover other aspect of the live event such as scheduling, participants registration and interaction with speaker.&lt;/p&gt;

&lt;p&gt;If you need more information you can reach me on Twitter &lt;a href="https://twitter.com/antoinemottier/"&gt;@antoinemottier&lt;/a&gt; or &lt;a href="//www.linkedin.com/in/antoine-mottier"&gt;LinkedIn&lt;/a&gt; and also checkout &lt;a href="https://www.ow2.org"&gt;OW2 activities&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>video</category>
      <category>stream</category>
      <category>opensource</category>
      <category>conference</category>
    </item>
  </channel>
</rss>
