SlideShare a Scribd company logo
17.10.2010 JazzTeam.org Springsite.com Eclipse Foundation
Open Source CMS, MDD, TDD:
Pros and Cons
Eclipse Texo, Seam,
Alfresco, XForms,
Assembla
Real world project highlights
Дмитрий Горячко
независимый J2EE консультант, основатель команды JazzTeam,
Eclipse committer
JazzTeam.org Springsite.com Eclipse Foundation2/43
00 Введение
• О чём я расскажу
– Commercial outsourcing + open source
– Коротко об enterprise Java CMSs
– Презентация Texo Eclipse project
– Alfresco introduction and tips
– Open Source customization
– Project highlights
• Постараюсь, чтобы рассказ был не
сухим и был интересным не только для
java разработчиков
JazzTeam.org Springsite.com Eclipse Foundation3/43
Yageo.com
• Самый крупный
производитель
деталей для
электроники
• Исторически сайт
создавался
компанией
springsite.com
• Web 2.0 фаза
JazzTeam.org Springsite.com Eclipse Foundation4/43
Yageo.com
JazzTeam.org Springsite.com Eclipse Foundation5/43
JazzTeam.org Springsite.com Eclipse Foundation6/43
Как появился заказчик
• Всегда вкладывай в людей, с которыми
работаешь
– Получена рекомендация
• У думающих людей не бывает плохого
опыта
– Экспертиза fits requirements (Epam CMS)
• Мой вопрос к Аркадию Добкину и его ответ про
продуктовые и аутсорсинговые компании
• Мысль материальна
– Заказчик из мира Open Source
JazzTeam.org Springsite.com Eclipse Foundation7/43
Задачи
• Integrate enterprise CMS
• Contact management
• Complicated search among all the
products (including competitors)
• E-news, subscribers management
• Products management (batch update too)
• Web statistics
• Support all possible roles, flows (editor,
admin, technical admin)
• All should be friendly-administrated
JazzTeam.org Springsite.com Eclipse Foundation8/43
Let us scrum
киевское метро
JazzTeam.org Springsite.com Eclipse Foundation9/43
Особенности организации
проекта
JazzTeam.org Springsite.com Eclipse Foundation10/43
Особенности организации
проекта
• Distributed scrum team
• Customer is Open Source contributor
– Open for architecture changes
– No fear, motivated to new
– Not formal, friendly attitude
• Доверяйте интуиции
– Первая оплата через 2 месяца после
начала проекта
– Проект на 2 года с большой плотностью
инноваций весь срок
JazzTeam.org Springsite.com Eclipse Foundation11/43
Why not to use Mind Maps for
project documentation
JazzTeam.org Springsite.com Eclipse Foundation12/43
Why not to use Mind Maps for
project documentation
JazzTeam.org Springsite.com Eclipse Foundation13/43
Open for architecture changes
• Feel free to customize if need
(coding)
– Seam
– Alfresco
– Chiba (OS W3C XForms
implementation)
– Hibernate
– Eclipse Texo
• New phase of development (project Teneo)
JazzTeam.org Springsite.com Eclipse Foundation14/43
No fear, motivated to new
• We need apply recursion into XForms
and implement/built in recursive AJAX UI
– let us invest time/money into it and gain
knowledge on this area deeper
– Конечно, позволял заказчик
– 2 человека-месяца (с высокой
квалификацией)
• Alfresco server debug
• Complicated UI (hundreds of recursive controls,
which are widgets itself)
JazzTeam.org Springsite.com Eclipse Foundation15/43
Recursive XSD widgets (xs:switch)
AJAX based
JazzTeam.org Springsite.com Eclipse Foundation16/43
Recursive XSD widgets (xs:switch)
AJAX based
JazzTeam.org Springsite.com Eclipse Foundation17/43
Recursive XSD widgets (xs:switch)
AJAX based
Jazz Koktebel
JazzTeam.org Springsite.com Eclipse Foundation18/43
Deployment
JazzTeam.org Springsite.com Eclipse Foundation19/43
01 Технологии
• Alfresco & ECMSs
• Texo
• Seam
• MDD & TDD
JazzTeam.org Springsite.com Eclipse Foundation20/43
Alfresco notes
• State of art. Wanna grow in Java
– study sources of Alfresco or
Seam
• Modularity
• All is node and services around
– Not only document
management
– Everything related to node could
be implemented
• Node type
• Flows, Web Forms and many
other things
– extendable
• XSD + XSLT (other templating
language) = XML, HTML, JS,
Java, JSF – anything
• Web scripting
• The same model as Epam CMS
• It is possible to have XSD
describing layout
Крым, Симферополь,
Детский джазовый концерт
JazzTeam.org Springsite.com Eclipse Foundation21/43
Texo Eclipse project presentation
By springsite.com
JazzTeam.org Springsite.com Eclipse Foundation22/43
Texo Eclipse project presentation
XML
Java
In memory
JSON/Rest
Web Services
Under development by me
GWT UI part
Planned
Your own format
TDD
XSD
ORM JPA
Hibernate
Eclipse link
EMF ECore
JazzTeam.org Springsite.com Eclipse Foundation23/43
Seam
• JSF
• Creator of Hibernate
• Contexts
• Interceptors without AoP
• Built in IoC
• Rather new community
• Sometimes it is hard to debug and
investigate what is wrong
• Good community
• State of art (contexts)
JazzTeam.org Springsite.com Eclipse Foundation24/43
Seam
• xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://jboss.com/products/seam/components
http://jboss.com/products/seam/components-2.1.xsd
http://jboss.com/products/seam/core
http://jboss.com/products/seam/core-2.1.xsd
http://jboss.com/products/seam/persistence
http://jboss.com/products/seam/persistence-2.1.xsd
http://jboss.com/products/seam/transaction
http://jboss.com/products/seam/transaction-2.1.xsd
http://jboss.com/products/seam/security
http://jboss.com/products/seam/security-2.1.xsd
http://jboss.com/products/seam/international
http://jboss.com/products/seam/international-2.1.xsd
http://jboss.com/products/seam/mail
http://jboss.com/products/seam/mail-2.1.xsd
http://jboss.com/products/seam/async
http://jboss.com/products/seam/async-2.1.xsd">
JazzTeam.org Springsite.com Eclipse Foundation25/43
Seam
• <core:manager conversation-timeout="120000"
concurrent-request-timeout="500"
conversation-id-parameter="cid" />
• <transaction:entity-transaction entity-
manager="#{em}" />
• <persistence:entity-manager-factory
name="yageo" />
• <persistence:managed-persistence-context
name="em" auto-create="true"
entity-manager-factory="#{yageo}" />
• <core:init transaction-management-
enabled="false" />
JazzTeam.org Springsite.com Eclipse Foundation26/43
XForms & chiba
• Server and client
model
• XML
• XSD description of
structured form (even
recursive – if your
framework supports it
)
• http://en.wikipedia.org/wiki/XForms
• Not only for internet
• Could be MVC
From http://www.w3.org/MarkUp/Forms/
JazzTeam.org Springsite.com Eclipse Foundation27/43
XForms & chiba
• <xs:complexType abstract="true" name="PublicationType"><xs:sequence>
<xs:element name="Title" type="xs:string"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Author" type="xs:string"/>
</xs:sequence>
</xs:complexType>
• <xf:instance id="instance_0">
<yageo:Catalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:yageo="http://www.yageocom/cms/article">
<yageo:Publication xsi:nil="true" xsi:type="BookType">
<yageo:Title/>
<yageo:Author alf:prototype="true"/>
<yageo:ISBN/>
<yageo:Publisher/>
</yageo:Publication>
</yageo:Catalogue>
</xf:instance>
• <xf:bind id="bind_0" xf:maxOccurs="1" xf:minOccurs="1" xf:nodeset="/yageo:Catalogue" xf:readonly="false()"
xf:required="false()">
• <xf:group id="alfresco-xforms-root-group" xf:appearance="full">
<xf:label id="label_0">Catalogue</xf:label>
<xf:group id="group_1" xf:appearance="repeated">
• <xf:trigger id="repeat_1-delete" xf:bind="bind_5">
<xf:label id="label_25">delete selected</xf:label>
<xf:action id="C56">
<xf:delete id="delete_1" xf:at="xf:index('repeat_1')"
xf:nodeset="/yageo:Catalogue/yageo:Publication
[index('repeat_0')]/yageo:Author"/>
JazzTeam.org Springsite.com Eclipse Foundation28/43
02 a little bit jump into project
В Крыму
JazzTeam.org Springsite.com Eclipse Foundation29/43
Alfresco based TDD layouts flow
XSD
Layout
content block
ECore
Texo
POJO Java
Texo meta
Html design
divs
Templates
Xslt/freemarket
Alfresco
web forms
User
xml
Seam JSF
ResourceBundle,
Configs,
Even web.xml
Restart
publish
etc
JazzTeam.org Springsite.com Eclipse Foundation30/43
Texo based TDD flow
XSD Java POJO
EMF ECore Java Texo
meta model
Java Texo
Core
Templates
ORM
UI: JS jQuery
widget
has access to all
JazzTeam.org Springsite.com Eclipse Foundation31/43
Layouts flow
• Content block позволяют
рассматривать новый функционал
как UI плагины (виджеты).
Автоматически поддержка CMS.
JazzTeam.org Springsite.com Eclipse Foundation32/43
Project data exchange
JazzTeam.org Springsite.com Eclipse Foundation33/43
Open Source contribution results
• Eclipse Teneo (only ORM) > Texo
– One more Eclipse member
• Chiba changes contribution
• Tries to discuss XForms standard changes
• Seam forum participating
– Issue with contexts
• Alfresco changes
– Dramatic
• WCM AJAX, layout to manage renditions, others
– A wish to become commercial committer
– Contribution is sent but particularly ignored
JazzTeam.org Springsite.com Eclipse Foundation34/43
Типы кастомизаций
• IoC, reflexion через файлы настроек
• Скачать сырцы, что-то изменить,
переподложить под сервер
• Сырцов нету
(multivalent.sourceforge.net). Decompile,
adjust, compile
• Два последних варинта рискованны,
если продукт будет долго развиваться.
JazzTeam.org Springsite.com Eclipse Foundation35/43
Open Source model of project
• vertical model - OOP > reusable
components > frameworks > open
source > usage at next projects
• Motivation
• Convenient way to touch with
partners
– Ask them to join your OS project and
see what happens
• All that is done for free in minutes, and
results in a week (productivity etc)
JazzTeam.org Springsite.com Eclipse Foundation36/43
Open Source cons (то, что
всплыло на проекте)
• Weak communities
• Not always user
centric development
• Смешение
технологий – for
handy people
• Нет успокоения (но
и нет старпёрства)
• Customizations,
customizations,
customizations
• Effort on R&D
Из интерьера знаменитой
49 квартиры
JazzTeam.org Springsite.com Eclipse Foundation37/43
Money?
• Become committer with potential
customer
• Long investments
• Create popular industry/direction
(что сейчас делается в проекте
Texo)
• Конференции, где бывают
заказчики мира Java Open
Source
• Independent consulting
• Name
• A way to start cooperation with
people immediately
– For eclipse – not one month of
contribution
– For sourceforge etc.
• Create user
• Add to project
• Develop Use Case
Способный customer facer
Могу дать телефон
JazzTeam.org Springsite.com Eclipse Foundation38/43
CMS
• Good to have XSD support
– And recursion
• Good to become an entry point for all the
management/admin pages
• Good to be node specific
• Good to have web scripting
• finally flows
• And convenient management of renditions
• E-CMS integration should allow to do (web.xml,
configs, bundles, localization) in the way you use
wordpress
JazzTeam.org Springsite.com Eclipse Foundation39/43
Bonus 00: j2ee vs ruby (basing on
mashpit trainings)• Context handling
• Много времени для
вхождения новичкам
• Хостинг дешевеет, clouding
• Java is up to have closures
• Byte code manipulators
• Aop, IoC, OSGI
• Simple syntax
• Proved technology
• MVC frameworks: spring,
struts, seam. Tons of views,
TDD
• ORM and JPA
• Ant, Maven
• Good to have compilation
errors
Стенсил во Львове
JazzTeam.org Springsite.com Eclipse Foundation40/43
Bonus 01: расширяемое
программирование in Java
• Пляшем от полиморфизма
• Generics
• IoC(spring, self-made, seam, web.xml, context.xml)
• Dependency injection (interceptors, chains), AoP (joints)
• Patterns
• Plugins (self made, OSGI, etc.)
• WS-* (service mix, equinox, wsdl, JSON, REST)
• Bytes manipulation (create classes on the flight,
interception on the flight – hard to debug)
• Polymorphic systems (ruby frontend – java backend)
• Class loading art
• UI: widgets, web scripting
• MDD, TDD, CMS took important role
• Built in scripting
JazzTeam.org Springsite.com Eclipse Foundation41/43
Выше показан один из возможных
вариантов развития проекта и
команды. Нет единого рецепта.
Балкончик без лесенки
Open Source company?
Product based company?
Outsourcing?
Trainings?
I do not know 
JazzTeam.org Springsite.com Eclipse Foundation42/43
Спасибо! Надеюсь, было
интересно и полезно!
Вопросы?
Презентацию можно найти здесь
jazzteam.org/devcamp10
• Zmicer.harachka@gmail.com
• Zmicer.com
JazzTeam.org Springsite.com Eclipse Foundation43/43
Opportunities
• Вы желаете обучаться или работать на java
• Участвовать в Open Source
• Вам нравятся небольшие Scrum команды
• Вы думаете об удалённой работе
• Хотелось бы поработать за границей, но не
знаете как
• Тренинг повышения эффективности Java
программиста Java Brains Reloading
Давайте пообщаемся после презентации!

More Related Content

Similar to Open Source CMS, MDD, TDD: Pros and Cons

Getting Started with JDK Mission Control
Getting Started with JDK Mission ControlGetting Started with JDK Mission Control
Getting Started with JDK Mission Control
Marcus Hirt
 
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
Derek Ashmore
 
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
Derek Ashmore
 
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
Derek Ashmore
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series
Open Mainframe Project
 
Drupal Efficiency - Coding, Deployment, Scaling
Drupal Efficiency - Coding, Deployment, ScalingDrupal Efficiency - Coding, Deployment, Scaling
Drupal Efficiency - Coding, Deployment, Scaling
smattoon
 
Terraform Modules and Continuous Deployment
Terraform Modules and Continuous DeploymentTerraform Modules and Continuous Deployment
Terraform Modules and Continuous Deployment
Zane Williamson
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJSTim Sommer
 
Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13
Dominopoint - Italian Lotus User Group
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
Leon Chen
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation Systems
National Cheng Kung University
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern Clouds
Nic Jackson
 
Drupal Efficiency using open source technologies from Sun
Drupal Efficiency using open source technologies from SunDrupal Efficiency using open source technologies from Sun
Drupal Efficiency using open source technologies from Sun
smattoon
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesUlrich Krause
 
15 EMF projects in 25 minutes
15 EMF projects in 25 minutes15 EMF projects in 25 minutes
15 EMF projects in 25 minutes
Cédric Brun
 
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and PrestoStorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
Alluxio, Inc.
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
jClarity
 
Akeebalize Your Extensions
Akeebalize Your ExtensionsAkeebalize Your Extensions
Akeebalize Your Extensions
Alan Hartless
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3
Opersys inc.
 

Similar to Open Source CMS, MDD, TDD: Pros and Cons (20)

Getting Started with JDK Mission Control
Getting Started with JDK Mission ControlGetting Started with JDK Mission Control
Getting Started with JDK Mission Control
 
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
 
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06
 
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
 
iSoligorsk #3 2013
iSoligorsk #3 2013iSoligorsk #3 2013
iSoligorsk #3 2013
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series
 
Drupal Efficiency - Coding, Deployment, Scaling
Drupal Efficiency - Coding, Deployment, ScalingDrupal Efficiency - Coding, Deployment, Scaling
Drupal Efficiency - Coding, Deployment, Scaling
 
Terraform Modules and Continuous Deployment
Terraform Modules and Continuous DeploymentTerraform Modules and Continuous Deployment
Terraform Modules and Continuous Deployment
 
T4T Training day - NodeJS
T4T Training day - NodeJST4T Training day - NodeJS
T4T Training day - NodeJS
 
Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation Systems
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern Clouds
 
Drupal Efficiency using open source technologies from Sun
Drupal Efficiency using open source technologies from SunDrupal Efficiency using open source technologies from Sun
Drupal Efficiency using open source technologies from Sun
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPages
 
15 EMF projects in 25 minutes
15 EMF projects in 25 minutes15 EMF projects in 25 minutes
15 EMF projects in 25 minutes
 
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and PrestoStorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
 
Akeebalize Your Extensions
Akeebalize Your ExtensionsAkeebalize Your Extensions
Akeebalize Your Extensions
 
Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3Android On Development Boards at AnDevCon3
Android On Development Boards at AnDevCon3
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 

Recently uploaded (20)

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 

Open Source CMS, MDD, TDD: Pros and Cons

  • 1. 17.10.2010 JazzTeam.org Springsite.com Eclipse Foundation Open Source CMS, MDD, TDD: Pros and Cons Eclipse Texo, Seam, Alfresco, XForms, Assembla Real world project highlights Дмитрий Горячко независимый J2EE консультант, основатель команды JazzTeam, Eclipse committer
  • 2. JazzTeam.org Springsite.com Eclipse Foundation2/43 00 Введение • О чём я расскажу – Commercial outsourcing + open source – Коротко об enterprise Java CMSs – Презентация Texo Eclipse project – Alfresco introduction and tips – Open Source customization – Project highlights • Постараюсь, чтобы рассказ был не сухим и был интересным не только для java разработчиков
  • 3. JazzTeam.org Springsite.com Eclipse Foundation3/43 Yageo.com • Самый крупный производитель деталей для электроники • Исторически сайт создавался компанией springsite.com • Web 2.0 фаза
  • 4. JazzTeam.org Springsite.com Eclipse Foundation4/43 Yageo.com
  • 6. JazzTeam.org Springsite.com Eclipse Foundation6/43 Как появился заказчик • Всегда вкладывай в людей, с которыми работаешь – Получена рекомендация • У думающих людей не бывает плохого опыта – Экспертиза fits requirements (Epam CMS) • Мой вопрос к Аркадию Добкину и его ответ про продуктовые и аутсорсинговые компании • Мысль материальна – Заказчик из мира Open Source
  • 7. JazzTeam.org Springsite.com Eclipse Foundation7/43 Задачи • Integrate enterprise CMS • Contact management • Complicated search among all the products (including competitors) • E-news, subscribers management • Products management (batch update too) • Web statistics • Support all possible roles, flows (editor, admin, technical admin) • All should be friendly-administrated
  • 8. JazzTeam.org Springsite.com Eclipse Foundation8/43 Let us scrum киевское метро
  • 9. JazzTeam.org Springsite.com Eclipse Foundation9/43 Особенности организации проекта
  • 10. JazzTeam.org Springsite.com Eclipse Foundation10/43 Особенности организации проекта • Distributed scrum team • Customer is Open Source contributor – Open for architecture changes – No fear, motivated to new – Not formal, friendly attitude • Доверяйте интуиции – Первая оплата через 2 месяца после начала проекта – Проект на 2 года с большой плотностью инноваций весь срок
  • 11. JazzTeam.org Springsite.com Eclipse Foundation11/43 Why not to use Mind Maps for project documentation
  • 12. JazzTeam.org Springsite.com Eclipse Foundation12/43 Why not to use Mind Maps for project documentation
  • 13. JazzTeam.org Springsite.com Eclipse Foundation13/43 Open for architecture changes • Feel free to customize if need (coding) – Seam – Alfresco – Chiba (OS W3C XForms implementation) – Hibernate – Eclipse Texo • New phase of development (project Teneo)
  • 14. JazzTeam.org Springsite.com Eclipse Foundation14/43 No fear, motivated to new • We need apply recursion into XForms and implement/built in recursive AJAX UI – let us invest time/money into it and gain knowledge on this area deeper – Конечно, позволял заказчик – 2 человека-месяца (с высокой квалификацией) • Alfresco server debug • Complicated UI (hundreds of recursive controls, which are widgets itself)
  • 15. JazzTeam.org Springsite.com Eclipse Foundation15/43 Recursive XSD widgets (xs:switch) AJAX based
  • 16. JazzTeam.org Springsite.com Eclipse Foundation16/43 Recursive XSD widgets (xs:switch) AJAX based
  • 17. JazzTeam.org Springsite.com Eclipse Foundation17/43 Recursive XSD widgets (xs:switch) AJAX based Jazz Koktebel
  • 18. JazzTeam.org Springsite.com Eclipse Foundation18/43 Deployment
  • 19. JazzTeam.org Springsite.com Eclipse Foundation19/43 01 Технологии • Alfresco & ECMSs • Texo • Seam • MDD & TDD
  • 20. JazzTeam.org Springsite.com Eclipse Foundation20/43 Alfresco notes • State of art. Wanna grow in Java – study sources of Alfresco or Seam • Modularity • All is node and services around – Not only document management – Everything related to node could be implemented • Node type • Flows, Web Forms and many other things – extendable • XSD + XSLT (other templating language) = XML, HTML, JS, Java, JSF – anything • Web scripting • The same model as Epam CMS • It is possible to have XSD describing layout Крым, Симферополь, Детский джазовый концерт
  • 21. JazzTeam.org Springsite.com Eclipse Foundation21/43 Texo Eclipse project presentation By springsite.com
  • 22. JazzTeam.org Springsite.com Eclipse Foundation22/43 Texo Eclipse project presentation XML Java In memory JSON/Rest Web Services Under development by me GWT UI part Planned Your own format TDD XSD ORM JPA Hibernate Eclipse link EMF ECore
  • 23. JazzTeam.org Springsite.com Eclipse Foundation23/43 Seam • JSF • Creator of Hibernate • Contexts • Interceptors without AoP • Built in IoC • Rather new community • Sometimes it is hard to debug and investigate what is wrong • Good community • State of art (contexts)
  • 24. JazzTeam.org Springsite.com Eclipse Foundation24/43 Seam • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.1.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd http://jboss.com/products/seam/international http://jboss.com/products/seam/international-2.1.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.1.xsd">
  • 25. JazzTeam.org Springsite.com Eclipse Foundation25/43 Seam • <core:manager conversation-timeout="120000" concurrent-request-timeout="500" conversation-id-parameter="cid" /> • <transaction:entity-transaction entity- manager="#{em}" /> • <persistence:entity-manager-factory name="yageo" /> • <persistence:managed-persistence-context name="em" auto-create="true" entity-manager-factory="#{yageo}" /> • <core:init transaction-management- enabled="false" />
  • 26. JazzTeam.org Springsite.com Eclipse Foundation26/43 XForms & chiba • Server and client model • XML • XSD description of structured form (even recursive – if your framework supports it ) • http://en.wikipedia.org/wiki/XForms • Not only for internet • Could be MVC From http://www.w3.org/MarkUp/Forms/
  • 27. JazzTeam.org Springsite.com Eclipse Foundation27/43 XForms & chiba • <xs:complexType abstract="true" name="PublicationType"><xs:sequence> <xs:element name="Title" type="xs:string"/> <xs:element maxOccurs="unbounded" minOccurs="0" name="Author" type="xs:string"/> </xs:sequence> </xs:complexType> • <xf:instance id="instance_0"> <yageo:Catalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:yageo="http://www.yageocom/cms/article"> <yageo:Publication xsi:nil="true" xsi:type="BookType"> <yageo:Title/> <yageo:Author alf:prototype="true"/> <yageo:ISBN/> <yageo:Publisher/> </yageo:Publication> </yageo:Catalogue> </xf:instance> • <xf:bind id="bind_0" xf:maxOccurs="1" xf:minOccurs="1" xf:nodeset="/yageo:Catalogue" xf:readonly="false()" xf:required="false()"> • <xf:group id="alfresco-xforms-root-group" xf:appearance="full"> <xf:label id="label_0">Catalogue</xf:label> <xf:group id="group_1" xf:appearance="repeated"> • <xf:trigger id="repeat_1-delete" xf:bind="bind_5"> <xf:label id="label_25">delete selected</xf:label> <xf:action id="C56"> <xf:delete id="delete_1" xf:at="xf:index('repeat_1')" xf:nodeset="/yageo:Catalogue/yageo:Publication [index('repeat_0')]/yageo:Author"/>
  • 28. JazzTeam.org Springsite.com Eclipse Foundation28/43 02 a little bit jump into project В Крыму
  • 29. JazzTeam.org Springsite.com Eclipse Foundation29/43 Alfresco based TDD layouts flow XSD Layout content block ECore Texo POJO Java Texo meta Html design divs Templates Xslt/freemarket Alfresco web forms User xml Seam JSF ResourceBundle, Configs, Even web.xml Restart publish etc
  • 30. JazzTeam.org Springsite.com Eclipse Foundation30/43 Texo based TDD flow XSD Java POJO EMF ECore Java Texo meta model Java Texo Core Templates ORM UI: JS jQuery widget has access to all
  • 31. JazzTeam.org Springsite.com Eclipse Foundation31/43 Layouts flow • Content block позволяют рассматривать новый функционал как UI плагины (виджеты). Автоматически поддержка CMS.
  • 32. JazzTeam.org Springsite.com Eclipse Foundation32/43 Project data exchange
  • 33. JazzTeam.org Springsite.com Eclipse Foundation33/43 Open Source contribution results • Eclipse Teneo (only ORM) > Texo – One more Eclipse member • Chiba changes contribution • Tries to discuss XForms standard changes • Seam forum participating – Issue with contexts • Alfresco changes – Dramatic • WCM AJAX, layout to manage renditions, others – A wish to become commercial committer – Contribution is sent but particularly ignored
  • 34. JazzTeam.org Springsite.com Eclipse Foundation34/43 Типы кастомизаций • IoC, reflexion через файлы настроек • Скачать сырцы, что-то изменить, переподложить под сервер • Сырцов нету (multivalent.sourceforge.net). Decompile, adjust, compile • Два последних варинта рискованны, если продукт будет долго развиваться.
  • 35. JazzTeam.org Springsite.com Eclipse Foundation35/43 Open Source model of project • vertical model - OOP > reusable components > frameworks > open source > usage at next projects • Motivation • Convenient way to touch with partners – Ask them to join your OS project and see what happens • All that is done for free in minutes, and results in a week (productivity etc)
  • 36. JazzTeam.org Springsite.com Eclipse Foundation36/43 Open Source cons (то, что всплыло на проекте) • Weak communities • Not always user centric development • Смешение технологий – for handy people • Нет успокоения (но и нет старпёрства) • Customizations, customizations, customizations • Effort on R&D Из интерьера знаменитой 49 квартиры
  • 37. JazzTeam.org Springsite.com Eclipse Foundation37/43 Money? • Become committer with potential customer • Long investments • Create popular industry/direction (что сейчас делается в проекте Texo) • Конференции, где бывают заказчики мира Java Open Source • Independent consulting • Name • A way to start cooperation with people immediately – For eclipse – not one month of contribution – For sourceforge etc. • Create user • Add to project • Develop Use Case Способный customer facer Могу дать телефон
  • 38. JazzTeam.org Springsite.com Eclipse Foundation38/43 CMS • Good to have XSD support – And recursion • Good to become an entry point for all the management/admin pages • Good to be node specific • Good to have web scripting • finally flows • And convenient management of renditions • E-CMS integration should allow to do (web.xml, configs, bundles, localization) in the way you use wordpress
  • 39. JazzTeam.org Springsite.com Eclipse Foundation39/43 Bonus 00: j2ee vs ruby (basing on mashpit trainings)• Context handling • Много времени для вхождения новичкам • Хостинг дешевеет, clouding • Java is up to have closures • Byte code manipulators • Aop, IoC, OSGI • Simple syntax • Proved technology • MVC frameworks: spring, struts, seam. Tons of views, TDD • ORM and JPA • Ant, Maven • Good to have compilation errors Стенсил во Львове
  • 40. JazzTeam.org Springsite.com Eclipse Foundation40/43 Bonus 01: расширяемое программирование in Java • Пляшем от полиморфизма • Generics • IoC(spring, self-made, seam, web.xml, context.xml) • Dependency injection (interceptors, chains), AoP (joints) • Patterns • Plugins (self made, OSGI, etc.) • WS-* (service mix, equinox, wsdl, JSON, REST) • Bytes manipulation (create classes on the flight, interception on the flight – hard to debug) • Polymorphic systems (ruby frontend – java backend) • Class loading art • UI: widgets, web scripting • MDD, TDD, CMS took important role • Built in scripting
  • 41. JazzTeam.org Springsite.com Eclipse Foundation41/43 Выше показан один из возможных вариантов развития проекта и команды. Нет единого рецепта. Балкончик без лесенки Open Source company? Product based company? Outsourcing? Trainings? I do not know 
  • 42. JazzTeam.org Springsite.com Eclipse Foundation42/43 Спасибо! Надеюсь, было интересно и полезно! Вопросы? Презентацию можно найти здесь jazzteam.org/devcamp10 • Zmicer.harachka@gmail.com • Zmicer.com
  • 43. JazzTeam.org Springsite.com Eclipse Foundation43/43 Opportunities • Вы желаете обучаться или работать на java • Участвовать в Open Source • Вам нравятся небольшие Scrum команды • Вы думаете об удалённой работе • Хотелось бы поработать за границей, но не знаете как • Тренинг повышения эффективности Java программиста Java Brains Reloading Давайте пообщаемся после презентации!