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
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
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
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
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
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.
89. More information about Cytoscape?
http://cytoscape.org
Interested in Collaborating?
http://nrnb.org
27
Editor's Notes
\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