<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
    <title>Sirius | Resources</title>
  
    <meta name="description" content="The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks">
    <link rel="shortcut icon" type="image/png" href="/sirius/images/favicon_sirius.ico"/>
  
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
    <link rel="stylesheet" href="/sirius/common_assets/css/styles.css">
    <link rel="stylesheet" href="/sirius/common_assets/css/animate.css">
    <link rel="stylesheet" href="/sirius/common_assets/css/media.css"/>
    <link rel="stylesheet" href="/sirius/assets/css/main.css"/>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="/sirius/common_assets/js/magnific-popup.video.js"></script>
    <script src="/sirius/common_assets/js/magnific-popup.min.js"></script>

    <!-- Eclipse Foundation Google Tag Manager -->
	<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
        <!-- End Google Tag Manager -->  
        
        <!-- Eclipse Foundation cookie consent: -->
        <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
        <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>  
        
        <script src= "/sirius/assets/js/ga.js"></script>

    <!-- Old version of font awesome for some icons -->
    <script src="https://use.fontawesome.com/b51f77a16a.js"></script>    
    <!-- Bootstrap JS -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
    
    <script>
        jQuery(function($){ $(".hasTooltip").tooltip({"html": true,"container": "body"}); });
    </script>
    <!-- Triggers tooltips -->
    <script>
        jQuery(document).ready(function() {
            jQuery('.hasTooltip').tooltip();
        });
    </script>
</head>
  
  <body>

    <!-- Navigation -->
<header id="top-bar" class="navbar navbar-expand-xl fixed-top">
    <div class="container">
        <div id="super-menu" class="d-flex">
            <nav class="main-menu ml-auto">
                <ul class="nav navbar-nav">
                    <li class="current"><a href=".">Sirius Desktop</a></li>
                    <li><a class="txt_purple" href="sirius-web.html">Sirius Web</a></li>
                </ul>
            </nav>
        </div>
        <div class="d-flex" id="main-menu-items">
            <a class="navbar-brand" href="/sirius">
                <img src="/sirius/common_assets/images/logos/logo_sirius.png" alt="Logo Sirius">
            </a>
            <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive"
                aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
                <i class="fa fa-bars"></i>
            </button> 
            <nav class="navbar-collapse collapse" id="navbarResponsive">
                <div class="main-menu ml-auto">
                    <ul class="nav navbar-nav">
                        <li>
                            <a href="overview.html">Overview</a>
                        </li>
                        <li>
                            <a href="gallery.html">Gallery</a>
                        </li>
                        <li>
                            <a href="getstarted.html">Get Started</a>
                        </li>
                        <li>
                            <a href="features.html">Features</a>
                        </li>
                        <li>
                            <a href="resource-center.html">Resources</a>
                        </li>
                        <li>
                            <a href="support.html">Support</a>
                        </li>
                        <li id="dwnld">
                            <a href="download.html">Download</a>
                        </li>
                    </ul>
                </div>
            </nav>
        </div>
    </div>
</header>
<section id="sirius-web-bar" class="bg_purple">
    <div class="container">
        <div class="row">
            <div class="col-md-1 col-xs-12 my-auto">
                <p class="cloud txt_white text-center"><i class="fas fa-cloud" aria-hidden="true"></i></p>
            </div>
            <div class="col-md-8 col-xs-12">
                <h5 class="txt_white">Web version is now available!</h5>
                <p class="descr txt_white">What you like in Sirius Desktop, in a modern cloud-based stack.</p>
            </div>                                
            <div class="col-md-3 col-xs-12 my-auto">
                <p><a class="text-uppercase txt_yellow" href="sirius-web.html" target="">Discover Sirius Web <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i></a></p>
            </div>
        </div>
    </div>
</section>
    
    <section id="" class="text-center">
    <div class="container">
        <div class="row">
			<div class="col-sm-4 col-xs-12 wow fadeInLeft" data-wow-duration="300ms" data-wow-delay="0ms">
                <div><i class="far fa-newspaper fa-3x pa2 txt_indigo"></i></div>
                <h4>Articles</h4>
                <p><a data-wow-delay=".1s" href="https://blog.obeosoft.com/tags/sirius" target="_blank">Obeo Blog <i class="fa fa-external-link" aria-hidden="true"></i></a></p>
                <p><a data-wow-delay=".2s" href="https://scholar.google.fr/scholar?q=eclipse+sirius" target="_blank">Search on Google Scholar <i class="fa fa-external-link" aria-hidden="true"></i></a></p>
            </div>
            <div class="col-sm-4 col-xs-12 wow fadeInLeft" data-wow-duration="300ms" data-wow-delay="0ms">
                <div><i class="far fa-play-circle fa-3x pa2 txt_indigo" aria-hidden="true"></i></div>
                <h4>Videos</h4>
                <p><a href="https://www.youtube.com/watch?v=XUD4nqIOzLc&list=PLDCKzuGIN_Zxq2SavbeeXku4qpEAQ-z4f" target="_blank">
					[Obeo Playlist] The Technology <i class="fa fa-external-link" aria-hidden="true"></i></a></p>
				<p><a href="https://www.youtube.com/watch?v=T5HGcvRchOE&list=PLDCKzuGIN_ZyNvkPsRPeb34xuY5odpcMz" target="_blank">[Obeo Playlist] - The Community <i class="fa fa-external-link" aria-hidden="true"></i></a></p>
				<p><a href="https://www.youtube.com/results?search_query=eclipse+sirius" target="_blank">Search on Youtube <i class="fa fa-external-link" aria-hidden="true"></i></a></p>
            </div>
            
            <div class="col-sm-4 col-xs-12 wow fadeInLeft" data-wow-duration="300ms" data-wow-delay="100ms">
                <div><i class="fab fa-slideshare fa-3x pa2 txt_indigo" aria-hidden="true"></i></div>
                <h4>Presentations</h4>
				<p><a href="https://www.slideshare.net/search/slideshow?searchfrom=header&q=eclipse+sirius" target="_blank">
                    Search on Slideshare <i class="fa fa-external-link" aria-hidden="true"></i></a></p>              
            </div>
        </div>
	</div>
</section>
<section id="siriuscon" class="bg_indigo txt_white text-center">
    <div class="container">
        <div class="row d-inline">
			<p><a href="https://www.siriuscon.org"><img src="common_assets/images/logos/logo_siriuscon_2021_white.png" alt="Logo SiriusCon"></a></p>
			<p>Discover recordings and slides of users' feedback and advanced features <br>presented during SiriusCon, the Sirius community's conference</p>
			<p><a class="" href="https://www.siriuscon.org" target="_blank">Learn more <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i>
			</a></p>
		</div>
	</div>
</section>

<section class="bg_lightest_grey text-center">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">Best Practices</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-w ow-delay=".4s">Sirius committers have shared some of their best practices to help you take advantage of their experience<br /> and implement efficient graphical modeling tools (registration required)</p>



        <p><a class="btn btn-default" href="https://www.obeodesigner.com/en/best-practices" target="_blank">Improve Your Sirius Practices</a></p>
    </div>
</section>

<section id="support" class="text-center">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">Need Support?</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-w ow-delay=".4s"></p>




		<div class="row">
			<div class="col-md-4 col-xs-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">
    <div>
        <i class="fas fa-file-alt fa-3x pa2 txt_indigo" aria-hidden="true"></i>
    </div>                                
    <div>
        <h4>Documentation</h4>
        <p>Learn how to use Sirius, thanks to online complete user guides and reference manuals</p>
        <p><a class="" href="http://www.eclipse.org/sirius/doc/" target="">Learn more <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i>
        </a></p>                                
    </div>
</div>




			<div class="col-md-4 col-xs-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">
    <div>
        <i class="fas fa-comment fa-3x pa2 txt_indigo" aria-hidden="true"></i>
    </div>                                
    <div>
        <h4>Forum</h4>
        <p>Find relevant posts/answers. No solution yet to your concern? Come and ask your question</p>
        <p><a class="" href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=262" target="_blank">Learn more <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i>
        </a></p>                                
    </div>
</div>




			<div class="col-md-4 col-xs-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">
    <div>
        <i class="fas fa-life-ring fa-3x pa2 txt_indigo" aria-hidden="true"></i>
    </div>                                
    <div>
        <h4>Professional support</h4>
        <p>Obeo, co-leader of Sirius, provides training, expertise, custom development and support plans</p>
        <p><a class="" href="https://www.obeodesigner.com/en/services" target="_blank">Learn more <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i>
        </a></p>                                
    </div>
</div>



		</div>
    </div>
</section>


<footer>
  <div class="container">
      <div class="row">    
        
<div class="col-md-3">
    <p><a href="http://www.eclipse.org/"  target="_blank"><img src="/sirius/common_assets/images/logos/logo-eclipse-foundation.png" alt="Eclipse Foundation logo"></a></p>
    <p id="copyright">Copyright © 2021 Eclipse Foundation, Inc.<br>All Rights Reserved.</p>
</div>

<div class="col-md-3">
    <h6>Eclipse Foundation</h6>
    <ul>
        <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
        <li><a href="http://eclipse.org/" target="_blank">Eclipse</a></li>
        <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
        <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
        <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
        <li><a href="http://www.eclipse.org/org/foundation/contact.php" target="_blank"> Contact Us</a></li>
    </ul>
</div>

        
<div class="col-md-3">
    <h6>Project Links</h6>
    <ul>
        <li><a href="https://projects.eclipse.org/projects/modeling.sirius" target="_blank">About this project</a></li>
        <li><a href="https://wiki.eclipse.org/Sirius" target="_blank">Wiki</a></li>
        <li><a href="https://www.eclipse.org/forums/index.php?t=thread&frm_id=262" target="_blank">Forum</a></li>
        <li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=6776579&classification=Modeling&query_format=advanced&product=Sirius" target="_blank">Bugs</a></li>
        <li><a href="https://git.eclipse.org/c/sirius/org.eclipse.sirius.git" target="_blank">Source Code</a></li>
    </ul>
</div>
    </div>
  </div>
</footer>

    
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous" defer></script>

<script src="/sirius/common_assets/js/wow.min.js" defer></script>
<script src="/sirius/common_assets/js/main.js" defer></script>
<script src="/sirius/common_assets/js/magnific-popup.min.js" defer></script>
<script src="/sirius/common_assets/js/magnific-popup.video.js" defer></script>
<!-- Call wow function -->
<script>
        jQuery(document).ready(function(){
            "use strict";
            new WOW().init();
            jQuery('.smooth-scroll').scrollingTo();

            var url = window.location;
            // Will only work if string in href matches with location
            jQuery('ul.nav a[href="'+ url +'"]').parent().addClass('active');

            // Will also work for relative and absolute hrefs
            jQuery('ul.nav a').filter(function() {
                return this.href == url;
            }).parent().addClass('active');

            jQuery(".nav a").on("click", function(){
                jQuery(".nav").find(".active").removeClass("active");
                jQuery(this).parent().addClass("active");
            });
        });
</script>
  
  </body>
</html>
