Architecture for Extension  Mike Smoot              BOSCCytoscape Chief       July 15, 2011
2
Desktop Application written in Java                                      2
Biological Network Visualization + Analysis   2
Free Software - LGPL                       2
~3000 downloads per month   2
1. Network Data YDR382W   pp   YDL130W YDR382W   pp   YFL039C YFL039C   pp   YCL040W   VizMapper YFL039C   pp   YHR179W2. ...
4
4
Cytoscape’s most important feature?                                      5
Cytoscape’s most important feature?     Our Plugin Architecture!                                Photo credit: Samuel L. Li...
6
Plugins allow for customization                                  6
Plugins allow for customizationPrimary analysis mechanism                                  6
Plugins allow for customization  Primary analysis mechanismBuilds a community of stakeholders                             ...
7
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz c...
So everything’s coming up roses, right?                                          8
So everything’s coming up roses, right?                                 Photo credit: CHRIS230***   8
9
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz c...
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz c...
So what’s the problem?                         11
11
11
11
12
!!! A tangled mess of inter-dependencies                                           12
!!! A tangled mess of inter-dependencies!!! Every public class is part of the API                                         ...
!!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible...
!!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible...
Hurts core developers,plugin writers, and users!                             12
13
Cytoscape 3.0!                 13
Make{using, supporting, developing, extending}             Cytoscape              easier!                                 ...
14
1. Clearly define API                        14
1. Clearly define API2. Enforce separation of API and implementation                                                  14
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when            ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
How?       15
1. OSGi          15
1. OSGi2. Semantic Versioning                         15
1. OSGi2. Semantic Versioning3. Maven                         15
Cytoscape Application Stack                              16
Cytoscape Application Stack    OSGi    −   provides runtime        container    −   defines module        boundaries    − ...
Cytoscape Application Stack    OSGi    −   provides runtime        container    −   defines module        boundaries    − ...
Photo credit: Maurice Koop   17
OSGi enablesModularity      Photo credit: Maurice Koop   17
Photo credit: BlackmanVision   18
OSGi enforces Modularity                      Photo credit: BlackmanVision   18
19
Semantic Versioning:                       19
Semantic Versioning:Version numbers have meaning!                                19
VERSION: major.minor.patch                             20
VERSION: major.minor.patchpatch - backwards compatible bug fixes                                         20
VERSION: major.minor.patchpatch - backwards compatible bug fixesminor - backwards compatible new features                 ...
VERSION: major.minor.patchpatch - backwards compatible bug fixesminor - backwards compatible new featuresmajor - backwards...
Because versions have a functionalmeaning, we can reason about ranges!                                       21
Because versions have a functionalmeaning, we can reason about ranges!              [3.1,4)                               ...
Because versions have a functionalmeaning, we can reason about ranges!              [3.1,4)As long as we version honestly,...
Because versions have a functionalmeaning, we can reason about ranges!                    [3.1,4)As long as we version hon...
22
Maven        22
MavenOrganize           22
MavenOrganize Build           22
MavenOrganize BuildRelease           22
1. OSGi2. Semantic Versioning3. Maven                         23
1. OSGi   - To enable/enforce modularity2. Semantic Versioning3. Maven                                    23
1. OSGi   - To enable/enforce modularity2. Semantic Versioning   - To define how and when changes happen3. Maven          ...
1. OSGi   - To enable/enforce modularity2. Semantic Versioning   - To define how and when changes happen3. Maven   - To or...
24
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible ...
Risks?     Photo credit: notorious d.a.v.   25
Risks?                                No ropes!!!                                          Climber     Photo credit: notor...
Risks?                                   No ropes!!!    Rewriting anything    is much harder than    it looks!           ...
Risks?                                   No ropes!!!    Rewriting anything    is much harder than    it looks!    Is the...
Risks?                                   No ropes!!!    Rewriting anything    is much harder than    it looks!    Is the...
Risks?                                    No ropes!!!    Rewriting anything    is much harder than    it looks!    Is th...
26
NIH GM070743-01                  P01 HG005062                             26
National Resource for  Network Biology     P41 RR031228                        26
More information about Cytoscape?    http://cytoscape.org   Interested in Collaborating?       http://nrnb.org            ...
Upcoming SlideShare
Loading in...5
×

Bosc talk 7-15-2011x

491

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
491
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Cytoscape is fundamentally about network visualization.\n\nIt’s about integrating network topology data with attribute or state information about the nodes and edges.\n\nFor example P-values or expression levels from from a microarray experiment can be easily integrated with an interaction network. \n\nExplain this example!!! Provide experimental context.\n
  • Example of variety.\n\n
  • Example of variety.\n\n
  • Example of variety.\n\n
  • \n
  • \n
  • \n
  • Aside from being open source and free software.\nCytoscape is extensible\nWe provide a plugin interface \nProgrammers can extend the functionality of Cytoscape by writing small bits of code to perform some specific task or analysis. The core Cytoscape framework provides basic capabilities, but all advanced functionality comes from plugins\nPlugins represent the primary analysis mechanism in Cytoscape\nPlugins are very popular!\n\n
  • Aside from being open source and free software.\nCytoscape is extensible\nWe provide a plugin interface \nProgrammers can extend the functionality of Cytoscape by writing small bits of code to perform some specific task or analysis. The core Cytoscape framework provides basic capabilities, but all advanced functionality comes from plugins\nPlugins represent the primary analysis mechanism in Cytoscape\nPlugins are very popular!\n\n
  • Aside from being open source and free software.\nCytoscape is extensible\nWe provide a plugin interface \nProgrammers can extend the functionality of Cytoscape by writing small bits of code to perform some specific task or analysis. The core Cytoscape framework provides basic capabilities, but all advanced functionality comes from plugins\nPlugins represent the primary analysis mechanism in Cytoscape\nPlugins are very popular!\n\n
  • \n
  • \n
  • \n
  • \n
  • Of the plugins that work, only a few have actually been tested against the release.\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • Changing one part of the code impacts others, often in poorly understood ways.\n\nWe can’t separate out individual bits of functionality.\n\nThe entire\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • OSGi provides a definition of modules\nOSGi provides runtime engine for loading modules\nOSGi provides the micro services architecture for communicating between modules.\n
  • We can change the guts of our code without worrying that we’ll break anything that you’re using.\n\nWhat we do behind closed doors is our business and you can’t get in!\n
  • \n
  • \n
  • patch - really only bug fixes. No changes to the API.\n\nminor - Any new methods, new packages, new classes etc. But everything must be backwards compatible. E.g. you can’t change a listener interface.\n\nmajor - Anything that is not backwards compatible. Remove a method, remove a class, change an interface, etc..\n
  • patch - really only bug fixes. No changes to the API.\n\nminor - Any new methods, new packages, new classes etc. But everything must be backwards compatible. E.g. you can’t change a listener interface.\n\nmajor - Anything that is not backwards compatible. Remove a method, remove a class, change an interface, etc..\n
  • patch - really only bug fixes. No changes to the API.\n\nminor - Any new methods, new packages, new classes etc. But everything must be backwards compatible. E.g. you can’t change a listener interface.\n\nmajor - Anything that is not backwards compatible. Remove a method, remove a class, change an interface, etc..\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • Specifically, we want to\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • We’re reusing as much as we can and hiding the messy bits.\n\nIt has taken much longer than we thought.\n\nWe intend to help developers do the initial port.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • Cytoscape is developed by a consortium of companies and institutions.\n\nThe source code is owned by the Cytoscape Consortium a 501c3 non profit in California\n\nYou can join the consortium by contributing development effort.\n\nWe recently received a NIH center grant that allowed us to establish the NRNB or the National Resource for Network Biology. \n\nThe NRNB now coordinates all Cytoscape development, training, and outreach.\n
  • \n
  • Transcript of "Bosc talk 7-15-2011x"

    1. 1. Architecture for Extension Mike Smoot BOSCCytoscape Chief July 15, 2011
    2. 2. 2
    3. 3. Desktop Application written in Java 2
    4. 4. Biological Network Visualization + Analysis 2
    5. 5. Free Software - LGPL 2
    6. 6. ~3000 downloads per month 2
    7. 7. 1. Network Data YDR382W pp YDL130W YDR382W pp YFL039C YFL039C pp YCL040W VizMapper YFL039C pp YHR179W2. Attribute Data ExpressionValue YCL040W = 0.542 YDL130W = -0.123 YDR382W = -0.058 YFL039C = 0.192 YHR179W = 0.078 3
    8. 8. 4
    9. 9. 4
    10. 10. Cytoscape’s most important feature? 5
    11. 11. Cytoscape’s most important feature? Our Plugin Architecture! Photo credit: Samuel L. Livingston 5
    12. 12. 6
    13. 13. Plugins allow for customization 6
    14. 14. Plugins allow for customizationPrimary analysis mechanism 6
    15. 15. Plugins allow for customization Primary analysis mechanismBuilds a community of stakeholders 6
    16. 16. 7
    17. 17. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPluginclusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubbaCytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssenceGraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINENeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolutionOmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZRandomNetworks RDFScsape Reactome FIs RemainingDegreeDistributionRe Orie nt Plug i n S h o r t e s t P a t h P l u g i n S i m Tr e k s tr uctureViz TransClustVennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPluginBiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBpluginCoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIpluginNCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus WebService Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWebSFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearchCytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetterMONET BiNGO BubbleRouter ClueGO CommonAttributesDisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGooseCytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSinkPythonScriptingEngine RubyScriptingEngine ScriptEngineManageraddParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandToolcoreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPluginNamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeChartsPhyloTree VennDiagrams 7
    18. 18. So everything’s coming up roses, right? 8
    19. 19. So everything’s coming up roses, right? Photo credit: CHRIS230*** 8
    20. 20. 9
    21. 21. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPluginclusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubbaCytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssenceGraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINENeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolutionOmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZRandomNetworks RDFScsape Reactome FIs RemainingDegreeDistributionRe Ori en tP l ugin S h o r t e s tP a t h P l u g i n S i m Tr e k st ructureViz TransClustVennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPluginBiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBpluginCoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIpluginNCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus WebService Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWebSFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearchCytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetterMONET BiNGO BubbleRouter ClueGO CommonAttributesDisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGooseCytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSinkPythonScriptingEngine RubyScriptingEngine ScriptEngineManageraddParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandToolcoreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPluginNamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeChartsPhyloTree VennDiagrams 9
    22. 22. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraphBNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPluginclusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubbaCytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssenceGraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINENeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolutionOmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZRandomNetworks RDFScsape Reactome FIs RemainingDegreeDistributionRe Ori en tP l ugin S h o r t e s tP a t h P l u g i n S i m Tr e k st ructureViz TransClustVennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPluginBiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBpluginCoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIpluginNCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus WebService Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWebSFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearchCytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetterMONET BiNGO BubbleRouter ClueGO CommonAttributesDisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGooseCytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSinkPythonScriptingEngine RubyScriptingEngine ScriptEngineManageraddParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandToolcoreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPluginNamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeChartsPhyloTree VennDiagrams 10
    23. 23. So what’s the problem? 11
    24. 24. 11
    25. 25. 11
    26. 26. 11
    27. 27. 12
    28. 28. !!! A tangled mess of inter-dependencies 12
    29. 29. !!! A tangled mess of inter-dependencies!!! Every public class is part of the API 12
    30. 30. !!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible 12
    31. 31. !!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible!!! Poor deprecation and versioning strategy 12
    32. 32. Hurts core developers,plugin writers, and users! 12
    33. 33. 13
    34. 34. Cytoscape 3.0! 13
    35. 35. Make{using, supporting, developing, extending} Cytoscape easier! 13
    36. 36. 14
    37. 37. 1. Clearly define API 14
    38. 38. 1. Clearly define API2. Enforce separation of API and implementation 14
    39. 39. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when 14
    40. 40. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies 14
    41. 41. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 14
    42. 42. How? 15
    43. 43. 1. OSGi 15
    44. 44. 1. OSGi2. Semantic Versioning 15
    45. 45. 1. OSGi2. Semantic Versioning3. Maven 15
    46. 46. Cytoscape Application Stack 16
    47. 47. Cytoscape Application Stack OSGi − provides runtime container − defines module boundaries − provides micro service architecture 16
    48. 48. Cytoscape Application Stack OSGi − provides runtime container − defines module boundaries − provides micro service architecture Spring-DM − hides OSGi API 16
    49. 49. Photo credit: Maurice Koop 17
    50. 50. OSGi enablesModularity Photo credit: Maurice Koop 17
    51. 51. Photo credit: BlackmanVision 18
    52. 52. OSGi enforces Modularity Photo credit: BlackmanVision 18
    53. 53. 19
    54. 54. Semantic Versioning: 19
    55. 55. Semantic Versioning:Version numbers have meaning! 19
    56. 56. VERSION: major.minor.patch 20
    57. 57. VERSION: major.minor.patchpatch - backwards compatible bug fixes 20
    58. 58. VERSION: major.minor.patchpatch - backwards compatible bug fixesminor - backwards compatible new features 20
    59. 59. VERSION: major.minor.patchpatch - backwards compatible bug fixesminor - backwards compatible new featuresmajor - backwards INcompatible changes 20
    60. 60. Because versions have a functionalmeaning, we can reason about ranges! 21
    61. 61. Because versions have a functionalmeaning, we can reason about ranges! [3.1,4) 21
    62. 62. Because versions have a functionalmeaning, we can reason about ranges! [3.1,4)As long as we version honestly, your plugin will always work! 21
    63. 63. Because versions have a functionalmeaning, we can reason about ranges! [3.1,4)As long as we version honestly, your plugin will always work! (At least until the next major version update) 21
    64. 64. 22
    65. 65. Maven 22
    66. 66. MavenOrganize 22
    67. 67. MavenOrganize Build 22
    68. 68. MavenOrganize BuildRelease 22
    69. 69. 1. OSGi2. Semantic Versioning3. Maven 23
    70. 70. 1. OSGi - To enable/enforce modularity2. Semantic Versioning3. Maven 23
    71. 71. 1. OSGi - To enable/enforce modularity2. Semantic Versioning - To define how and when changes happen3. Maven 23
    72. 72. 1. OSGi - To enable/enforce modularity2. Semantic Versioning - To define how and when changes happen3. Maven - To organize, build, and release 23
    73. 73. 24
    74. 74. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    75. 75. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    76. 76. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    77. 77. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    78. 78. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    79. 79. 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies5. Make writing and maintaining plugins easy 24
    80. 80. Risks? Photo credit: notorious d.a.v. 25
    81. 81. Risks? No ropes!!! Climber Photo credit: notorious d.a.v. 25
    82. 82. Risks? No ropes!!! Rewriting anything is much harder than it looks! Climber Photo credit: notorious d.a.v. 25
    83. 83. Risks? No ropes!!! Rewriting anything is much harder than it looks! Is the new API too Climber limiting? Photo credit: notorious d.a.v. 25
    84. 84. Risks? No ropes!!! Rewriting anything is much harder than it looks! Is the new API too Climber limiting? Porting plugins more trouble than it’s worth? Photo credit: notorious d.a.v. 25
    85. 85. Risks? No ropes!!! Rewriting anything is much harder than it looks! Is the new API too Climber limiting? Porting plugins more trouble than it’s worth? Is OSGi just too 25 Photo credit: notorious d.a.v.
    86. 86. 26
    87. 87. NIH GM070743-01 P01 HG005062 26
    88. 88. National Resource for Network Biology P41 RR031228 26
    89. 89. More information about Cytoscape? http://cytoscape.org Interested in Collaborating? http://nrnb.org 27
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×