Bosc talk 7-15-2011x
Upcoming SlideShare
Loading in...5
×
 

Bosc talk 7-15-2011x

on

  • 577 views

 

Statistics

Views

Total Views
577
Views on SlideShare
577
Embed Views
0

Actions

Likes
0
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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

Bosc talk 7-15-2011x Bosc talk 7-15-2011x Presentation Transcript

  • 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. Attribute Data ExpressionValue YCL040W = 0.542 YDL130W = -0.123 YDR382W = -0.058 YFL039C = 0.192 YHR179W = 0.078 3
  • 4
  • 4
  • Cytoscape’s most important feature? 5
  • Cytoscape’s most important feature? Our Plugin Architecture! Photo credit: Samuel L. Livingston 5
  • 6
  • Plugins allow for customization 6
  • Plugins allow for customizationPrimary analysis mechanism 6
  • Plugins allow for customization Primary analysis mechanismBuilds a community of stakeholders 6
  • 7
  • 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
  • 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 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
  • 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
  • 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 12
  • !!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible 12
  • !!! A tangled mess of inter-dependencies!!! Every public class is part of the API!!! Backwards compatibility is impossible!!! Poor deprecation and versioning strategy 12
  • Hurts core developers,plugin writers, and users! 12
  • 13
  • Cytoscape 3.0! 13
  • Make{using, supporting, developing, extending} Cytoscape easier! 13
  • 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 14
  • 1. Clearly define API2. Enforce separation of API and implementation3. Clearly define what can change and when4. Sensible dependencies 14
  • 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
  • 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 − provides micro service architecture 16
  • Cytoscape Application Stack OSGi − provides runtime container − defines module boundaries − provides micro service architecture Spring-DM − hides OSGi API 16
  • 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 20
  • VERSION: major.minor.patchpatch - backwards compatible bug fixesminor - backwards compatible new featuresmajor - backwards INcompatible changes 20
  • Because versions have a functionalmeaning, we can reason about ranges! 21
  • Because versions have a functionalmeaning, we can reason about ranges! [3.1,4) 21
  • 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
  • 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
  • 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 23
  • 1. OSGi - To enable/enforce modularity2. Semantic Versioning - To define how and when changes happen3. Maven - To organize, build, and release 23
  • 24
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Risks? Photo credit: notorious d.a.v. 25
  • Risks? No ropes!!! Climber Photo credit: notorious d.a.v. 25
  • Risks? No ropes!!! Rewriting anything is much harder than it looks! Climber Photo credit: notorious d.a.v. 25
  • 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
  • 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
  • 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.
  • 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 27