SlideShare a Scribd company logo
1 of 89
Architecture for Extension



  Mike Smoot              BOSC
Cytoscape 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   YHR179W




2. 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 customization



Primary analysis mechanism




                                  6
Plugins allow for customization



  Primary analysis mechanism



Builds a community of stakeholders
                                     6
7
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph
BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin
clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba
Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence
GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE
NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution
OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ
RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution
Re 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 TransClust
VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin
BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin
CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-
Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin
NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web
Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb
SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch
Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter
MONET BiNGO BubbleRouter ClueGO CommonAttributes
DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose
CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink
PythonScriptingEngine RubyScriptingEngine ScriptEngineManager
addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool
coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3
GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin
NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts
PhyloTree 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 BLAST2SimilarityGraph
BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin
clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba
Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence
GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE
NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution
OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ
RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution
Re 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 TransClust
VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin
BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin
CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-
Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin
NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web
Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb
SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch
Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter
MONET BiNGO BubbleRouter ClueGO CommonAttributes
DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose
CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink
PythonScriptingEngine RubyScriptingEngine ScriptEngineManager
addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool
coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3
GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin
NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts
PhyloTree VennDiagrams
                                                                                               9
AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph
BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin
clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba
Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence
GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE
NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution
OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ
RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution
Re 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 TransClust
VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin
BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin
CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML-
Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin
NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web
Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb
SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch
Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter
MONET BiNGO BubbleRouter ClueGO CommonAttributes
DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose
CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink
PythonScriptingEngine RubyScriptingEngine ScriptEngineManager
addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool
coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3
GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin
NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts
PhyloTree 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 API

2. Enforce separation of API and implementation




                                                  14
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when




                                                  14
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies




                                                  14
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy


                                                  14
How?



       15
1. OSGi




          15
1. OSGi

2. Semantic Versioning




                         15
1. OSGi

2. Semantic Versioning

3. 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
 enables
Modularity



      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.patch


patch - backwards compatible bug fixes




                                         20
VERSION: major.minor.patch


patch - backwards compatible bug fixes


minor - backwards compatible new features




                                            20
VERSION: major.minor.patch


patch - backwards compatible bug fixes


minor - backwards compatible new features


major - backwards INcompatible changes



                                            20
Because versions have a functional
meaning, we can reason about ranges!




                                       21
Because versions have a functional
meaning, we can reason about ranges!

              [3.1,4)




                                       21
Because versions have a functional
meaning, we can reason about ranges!

              [3.1,4)

As long as we version honestly,
 your plugin will always work!


                                       21
Because versions have a functional
meaning, 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
Maven

Organize




           22
Maven

Organize

 Build



           22
Maven

Organize

 Build

Release

           22
1. OSGi

2. Semantic Versioning

3. Maven

                         23
1. OSGi
   - To enable/enforce modularity



2. Semantic Versioning

3. Maven

                                    23
1. OSGi
   - To enable/enforce modularity



2. Semantic Versioning
   - To define how and when changes happen



3. Maven

                                             23
1. OSGi
   - To enable/enforce modularity



2. Semantic Versioning
   - To define how and when changes happen



3. Maven
   - To organize, build, and release



                                             23
24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy

                                                  24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy

                                                  24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy

                                                  24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy

                                                  24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. Make writing and maintaining plugins easy

                                                  24
1. Clearly define API

2. Enforce separation of API and implementation

3. Clearly define what can change and when

4. Sensible dependencies

5. 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

More Related Content

Similar to Bosc talk 7-15-2011x

What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesMatt Turner
 
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...South Tyrol Free Software Conference
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2bdemchak
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONMicroservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONAdrian Cockcroft
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android lBin Yang
 
Cloud native programming model comparison
Cloud native programming model comparisonCloud native programming model comparison
Cloud native programming model comparisonEmily Jiang
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusEmily Jiang
 
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey GordeychikCODE BLUE
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane Michelle Holley
 
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowYannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowMarynaHoldaieva
 
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Lviv Startup Club
 
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...IO Visor Project
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitMarco Ferrigno
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps ParadigmNaLUG
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s QAware GmbH
 

Similar to Bosc talk 7-15-2011x (20)

What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your Microservices
 
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...
SFScon22 - Sara Tumiati - Goffice 2.0 - Open-Source Microservices for the Sou...
 
Cytoscape CI Chapter 2
Cytoscape CI Chapter 2Cytoscape CI Chapter 2
Cytoscape CI Chapter 2
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONMicroservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
 
Update from android kk to android l
Update from android kk to android lUpdate from android kk to android l
Update from android kk to android l
 
Cloud native programming model comparison
Cloud native programming model comparisonCloud native programming model comparison
Cloud native programming model comparison
 
Build Programming Language Runtime with LLVM
Build Programming Language Runtime with LLVMBuild Programming Language Runtime with LLVM
Build Programming Language Runtime with LLVM
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
 
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
[CB20] Vulnerabilities of Machine Learning Infrastructure by Sergey Gordeychik
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane
 
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowYannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflow
 
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
 
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps Paradigm
 
Simplify Networking for Containers
Simplify Networking for ContainersSimplify Networking for Containers
Simplify Networking for Containers
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s
 

More from Bioinformatics Open Source Conference

More from Bioinformatics Open Source Conference (20)

Running workflows through galaxy bosc presentation
Running workflows through galaxy bosc presentationRunning workflows through galaxy bosc presentation
Running workflows through galaxy bosc presentation
 
Talk1 ben sadi for_gmod_bosc_2011
Talk1 ben sadi for_gmod_bosc_2011Talk1 ben sadi for_gmod_bosc_2011
Talk1 ben sadi for_gmod_bosc_2011
 
Bosc mercer
Bosc mercerBosc mercer
Bosc mercer
 
Mobyle 1 0_new_features_new_types_of_service
Mobyle 1 0_new_features_new_types_of_serviceMobyle 1 0_new_features_new_types_of_service
Mobyle 1 0_new_features_new_types_of_service
 
Bosc2011 arakawa
Bosc2011 arakawaBosc2011 arakawa
Bosc2011 arakawa
 
Bosc2011 isobar-fbp
Bosc2011 isobar-fbpBosc2011 isobar-fbp
Bosc2011 isobar-fbp
 
Talk6 biopython bosc2011
Talk6 biopython bosc2011Talk6 biopython bosc2011
Talk6 biopython bosc2011
 
Bosc2011 ntino-krampis-full
Bosc2011 ntino-krampis-fullBosc2011 ntino-krampis-full
Bosc2011 ntino-krampis-full
 
F02-Cloud-Cloud BioLinux
F02-Cloud-Cloud BioLinuxF02-Cloud-Cloud BioLinux
F02-Cloud-Cloud BioLinux
 
B07-GenomeContent-Biomart
B07-GenomeContent-BiomartB07-GenomeContent-Biomart
B07-GenomeContent-Biomart
 
G03-SemanticWeb-OntoCAT
G03-SemanticWeb-OntoCATG03-SemanticWeb-OntoCAT
G03-SemanticWeb-OntoCAT
 
F06-Cloud-Enabling NGS
F06-Cloud-Enabling NGSF06-Cloud-Enabling NGS
F06-Cloud-Enabling NGS
 
D03-NextGen-Bio-NGS
D03-NextGen-Bio-NGSD03-NextGen-Bio-NGS
D03-NextGen-Bio-NGS
 
C03-Visualization-Webapollo
C03-Visualization-WebapolloC03-Visualization-Webapollo
C03-Visualization-Webapollo
 
F01-Cloud-Mygene.info
F01-Cloud-Mygene.infoF01-Cloud-Mygene.info
F01-Cloud-Mygene.info
 
A01-Openness in knowledge-based systems
A01-Openness in knowledge-based systemsA01-Openness in knowledge-based systems
A01-Openness in knowledge-based systems
 
C02-Visualization-Applying visual analytics
C02-Visualization-Applying visual analyticsC02-Visualization-Applying visual analytics
C02-Visualization-Applying visual analytics
 
B04-GenomeContent-EasyDAS
B04-GenomeContent-EasyDASB04-GenomeContent-EasyDAS
B04-GenomeContent-EasyDAS
 
D02-NextGenSeq-MOLGENIS
D02-NextGenSeq-MOLGENISD02-NextGenSeq-MOLGENIS
D02-NextGenSeq-MOLGENIS
 
G09-Misc-EMBOSS
G09-Misc-EMBOSSG09-Misc-EMBOSS
G09-Misc-EMBOSS
 

Recently uploaded

AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...JojoEDelaCruz
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxVanesaIglesias10
 

Recently uploaded (20)

YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptx
 

Bosc talk 7-15-2011x

  • 1. Architecture for Extension Mike Smoot BOSC Cytoscape Chief July 15, 2011
  • 2. 2
  • 7. 1. Network Data YDR382W pp YDL130W YDR382W pp YFL039C YFL039C pp YCL040W VizMapper YFL039C pp YHR179W 2. Attribute Data ExpressionValue YCL040W = 0.542 YDL130W = -0.123 YDR382W = -0.058 YFL039C = 0.192 YHR179W = 0.078 3
  • 8. 4
  • 9. 4
  • 11. Cytoscape’s most important feature? Our Plugin Architecture! Photo credit: Samuel L. Livingston 5
  • 12. 6
  • 13. Plugins allow for customization 6
  • 14. Plugins allow for customization Primary analysis mechanism 6
  • 15. Plugins allow for customization Primary analysis mechanism Builds a community of stakeholders 6
  • 16. 7
  • 17. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution Re 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 TransClust VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML- Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter MONET BiNGO BubbleRouter ClueGO CommonAttributes DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink PythonScriptingEngine RubyScriptingEngine ScriptEngineManager addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3 GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts PhyloTree VennDiagrams 7
  • 18. So everything’s coming up roses, right? 8
  • 19. So everything’s coming up roses, right? Photo credit: CHRIS230*** 8
  • 20. 9
  • 21. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution Re 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 TransClust VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML- Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter MONET BiNGO BubbleRouter ClueGO CommonAttributes DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink PythonScriptingEngine RubyScriptingEngine ScriptEngineManager addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3 GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts PhyloTree VennDiagrams 9
  • 22. AllegroMCODE APCluster APID2NET BioQualiPlugin BLAST2SimilarityGraph BNMatch CABIN CalculateNodeDegree CentiScaPe ChemViz clusterExplorerPlugin clusterMaker ClusterONE ClusterViz COMA CommFinder CyClus3D CyOog cytoHubba Cytomcl DualLayout dynamicXpr EnhancedSearch EnrichmentMap ExprEssence GraMoFoNe GraphletCounter HiderSlider jActiveModules mcl-new MCODE MINE NeMo NetAtlas NetCirChro netMatch NetworkAnalyzer NetworkEvolution OmicsAnalyzer OmicsViz OrthoNets PanGIA PerturbationAnalyzer PinnacleZ RandomNetworks RDFScsape Reactome FIs RemainingDegreeDistribution Re 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 TransClust VennDiagramGenerator VistaClaraPlugin WordCloud BiNoM bioCycPlugin BiogridPlugin BiomartClient BioNetBuilder BisoGenet ConsensusPathDBplugin CoryneRegNetLoader CyThesaurus-ID-Mapping CytoSQL DroID Genoscape GPML- Plugin GraphMLReader IntActWSClient iRefScape KGMLReader MetScape MiMIplugin NCBIClient NCBIEntrezGeneUserInterface Pathintegrator PhosphositePlus Web Service Client Module PICRClient PSICQUICUniversalClient ReConn SessionForWeb SFLDLoader StringWSClient Superpathways-Plugin 3DScape AgilentLiteratureSearch Cytoprophet DisGeNET DomainGraph ExpressionCorrelation GeneMANIA MetaNetter MONET BiNGO BubbleRouter ClueGO CommonAttributes DisplayNetworkFromFlatFile FluxViz FunNetViz HyperEdgeEditor PiNGO CyGoose CytoscapeRPC GroovyScriptingEngine JavaScriptEngine MiSink PythonScriptingEngine RubyScriptingEngine ScriptEngineManager addParentNeighbors AdvancedNetworkMerge batchTool BiLayout commandTool coreCommands CyAnimator edgeLengthPlugin edgeLister EpiTrace FERN FM3 GoogleChartFunctions GroupTool MetaNodePlugin2 MultilevelLayoutPlugin NamedSelection NatureProtocolsWorkflow NeighborHighlight NetLink nodeCharts PhyloTree VennDiagrams 10
  • 23. So what’s the problem? 11
  • 24. 11
  • 25. 11
  • 26. 11
  • 27. 12
  • 28. !!! A tangled mess of inter-dependencies 12
  • 29. !!! A tangled mess of inter-dependencies !!! Every public class is part of the API 12
  • 30. !!! A tangled mess of inter-dependencies !!! Every public class is part of the API !!! Backwards compatibility is impossible 12
  • 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. Hurts core developers, plugin writers, and users! 12
  • 33. 13
  • 35. Make {using, supporting, developing, extending} Cytoscape easier! 13
  • 36. 14
  • 38. 1. Clearly define API 2. Enforce separation of API and implementation 14
  • 39. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 14
  • 40. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 14
  • 41. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 14
  • 42. How? 15
  • 43. 1. OSGi 15
  • 44. 1. OSGi 2. Semantic Versioning 15
  • 45. 1. OSGi 2. Semantic Versioning 3. Maven 15
  • 47. Cytoscape Application Stack  OSGi − provides runtime container − defines module boundaries − provides micro service architecture 16
  • 48. Cytoscape Application Stack  OSGi − provides runtime container − defines module boundaries − provides micro service architecture  Spring-DM − hides OSGi API 16
  • 50. OSGi enables Modularity Photo credit: Maurice Koop 17
  • 52. OSGi enforces Modularity Photo credit: BlackmanVision 18
  • 53. 19
  • 57. VERSION: major.minor.patch patch - backwards compatible bug fixes 20
  • 58. VERSION: major.minor.patch patch - backwards compatible bug fixes minor - backwards compatible new features 20
  • 59. VERSION: major.minor.patch patch - backwards compatible bug fixes minor - backwards compatible new features major - backwards INcompatible changes 20
  • 60. Because versions have a functional meaning, we can reason about ranges! 21
  • 61. Because versions have a functional meaning, we can reason about ranges! [3.1,4) 21
  • 62. Because versions have a functional meaning, we can reason about ranges! [3.1,4) As long as we version honestly, your plugin will always work! 21
  • 63. Because versions have a functional meaning, 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. 22
  • 65. Maven 22
  • 69. 1. OSGi 2. Semantic Versioning 3. Maven 23
  • 70. 1. OSGi - To enable/enforce modularity 2. Semantic Versioning 3. Maven 23
  • 71. 1. OSGi - To enable/enforce modularity 2. Semantic Versioning - To define how and when changes happen 3. Maven 23
  • 72. 1. OSGi - To enable/enforce modularity 2. Semantic Versioning - To define how and when changes happen 3. Maven - To organize, build, and release 23
  • 73. 24
  • 74. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 75. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 76. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 77. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 78. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 79. 1. Clearly define API 2. Enforce separation of API and implementation 3. Clearly define what can change and when 4. Sensible dependencies 5. Make writing and maintaining plugins easy 24
  • 80. Risks? Photo credit: notorious d.a.v. 25
  • 81. Risks? No ropes!!! Climber Photo credit: notorious d.a.v. 25
  • 82. Risks? No ropes!!!  Rewriting anything is much harder than it looks! Climber Photo credit: notorious d.a.v. 25
  • 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. 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. 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. 26
  • 87. NIH GM070743-01 P01 HG005062 26
  • 88. National Resource for Network Biology P41 RR031228 26
  • 89. More information about Cytoscape? http://cytoscape.org Interested in Collaborating? http://nrnb.org 27

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. 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
  10. Example of variety.\n\n
  11. Example of variety.\n\n
  12. Example of variety.\n\n
  13. \n
  14. \n
  15. \n
  16. 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
  17. 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
  18. 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
  19. \n
  20. \n
  21. \n
  22. \n
  23. Of the plugins that work, only a few have actually been tested against the release.\n
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. Specifically, we want to\n
  44. Specifically, we want to\n
  45. Specifically, we want to\n
  46. Specifically, we want to\n
  47. Specifically, we want to\n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. OSGi provides a definition of modules\nOSGi provides runtime engine for loading modules\nOSGi provides the micro services architecture for communicating between modules.\n
  57. 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
  58. \n
  59. \n
  60. 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
  61. 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
  62. 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
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. Specifically, we want to\n
  74. Specifically, we want to\n
  75. Specifically, we want to\n
  76. Specifically, we want to\n
  77. Specifically, we want to\n
  78. Specifically, we want to\n
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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
  103. 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
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. \n