Upload
matilda-george
View
215
Download
1
Tags:
Embed Size (px)
Citation preview
17.10.2010 JazzTeam.org Springsite.com Eclipse Foundation
Eclipse
Project
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/42
Eclipse
Project
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/42
Eclipse
Project
Yageo.com
• Самый крупный производитель деталей для электроники
• Исторически сайт создавался компанией springsite.com
• Web 2.0 фаза
JazzTeam.org Springsite.com Eclipse Foundation4/42
Eclipse
Project
Yageo.com
JazzTeam.org Springsite.com Eclipse Foundation5/42
Eclipse
Project
JazzTeam.org Springsite.com Eclipse Foundation6/42
Eclipse
Project
Как появился заказчик
• Всегда вкладывай в людей, с которыми работаешь– Получена рекомендация
• У думающих людей не бывает плохого опыта – Экспертиза fits requirements (Epam CMS)
• Мой вопрос к Аркадию Добкину и его ответ про продуктовые и аутсорсинговые компании
• Мысль материальна– Заказчик из мира Open Source
JazzTeam.org Springsite.com Eclipse Foundation7/42
Eclipse
Project
Задачи• 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/42
Eclipse
Project
Let us scrum
киевское метро
JazzTeam.org Springsite.com Eclipse Foundation9/42
Eclipse
Project
Особенности организации проекта
JazzTeam.org Springsite.com Eclipse Foundation10/42
Eclipse
Project
Особенности организации проекта
• 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/42
Eclipse
Project
Why not to use Mind Maps for project documentation
JazzTeam.org Springsite.com Eclipse Foundation12/42
Eclipse
Project
Why not to use Mind Maps for project documentation
JazzTeam.org Springsite.com Eclipse Foundation13/42
Eclipse
Project
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/42
Eclipse
Project
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/42
Eclipse
Project
Recursive XSD widgets (xs:switch) AJAX based
JazzTeam.org Springsite.com Eclipse Foundation16/42
Eclipse
Project
Recursive XSD widgets (xs:switch) AJAX based
JazzTeam.org Springsite.com Eclipse Foundation17/42
Eclipse
Project
Recursive XSD widgets (xs:switch) AJAX based
Jazz Koktebel
JazzTeam.org Springsite.com Eclipse Foundation18/42
Eclipse
Project
Deployment
JazzTeam.org Springsite.com Eclipse Foundation19/42
Eclipse
Project
01 Технологии
• Alfresco & ECMSs• Texo• Seam• MDD & TDD
JazzTeam.org Springsite.com Eclipse Foundation20/42
Eclipse
Project
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/42
Eclipse
Project
Texo Eclipse project presentation
By springsite.com
JazzTeam.org Springsite.com Eclipse Foundation22/42
Eclipse
Project
Texo Eclipse project presentation
XML
JavaIn memory
JSON/Rest Web Services
Under development by me
GWT UI partPlanned
Your own formatTDD
XSD
ORM JPAHibernate
Eclipse link
EMF ECore
JazzTeam.org Springsite.com Eclipse Foundation23/42
Eclipse
Project
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/42
Eclipse
Project
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.xsdhttp://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/42
Eclipse
Project
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/42
Eclipse
Project
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/42
Eclipse
Project
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/42
Eclipse
Project
02 a little bit jump into project
В Крыму
JazzTeam.org Springsite.com Eclipse Foundation29/42
Eclipse
Project
Layouts flow
XSDLayout
content block
ECore
TexoRequired Java
Html designdivs
TemplatesXslt/freemarket
Alfrescoweb forms
User
xml
Seam JSFResourceBundle,
Configs,Even web.xml
Restartpublish
etc
JazzTeam.org Springsite.com Eclipse Foundation30/42
Eclipse
Project
Layouts flow
• Content block позволяют рассматривать новый функционал как UI плагины (виджеты). Автоматически поддержка CMS.
JazzTeam.org Springsite.com Eclipse Foundation31/42
Eclipse
Project
Project data exchange
JazzTeam.org Springsite.com Eclipse Foundation32/42
Eclipse
Project
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 Foundation33/42
Eclipse
Project
Типы кастомизаций
• IoC, reflexion через файлы настроек• Скачать сырцы, что-то изменить,
переподложить под сервер• Сырцов нету
(multivalent.sourceforge.net). Decompile, adjust, compile
• Два последних варинта рискованны, если продукт будет долго развиваться.
JazzTeam.org Springsite.com Eclipse Foundation34/42
Eclipse
Project
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 Foundation35/42
Eclipse
Project
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 Foundation36/42
Eclipse
Project
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 Foundation37/42
Eclipse
Project
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 Foundation38/42
Eclipse
Project
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 Foundation39/42
Eclipse
Project
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 Foundation40/42
Eclipse
Project
Выше показан один из возможных вариантов развития проекта и
команды. Нет единого рецепта.
Балкончик без лесенки
Open Source company?Product based company?Outsourcing?Trainings?
I do not know
JazzTeam.org Springsite.com Eclipse Foundation41/42
Eclipse
Project
Спасибо! Надеюсь, было интересно и полезно!
Вопросы?
Презентацию можно найти здесь jazzteam.org/devcamp10
• [email protected]• Zmicer.com
JazzTeam.org Springsite.com Eclipse Foundation42/42
Eclipse
Project
Opportunities• Вы желаете обучаться или работать на java• Участвовать в Open Source • Вам нравятся небольшие Scrum команды• Вы думаете об удалённой работе • Хотелось бы поработать за границей, но не знаете как• Тренинг повышения эффективности Java программиста Java Brains Reloading
Давайте пообщаемся после презентации!