[[BackLinksMenu]] [[TicketQuery(summary=PLATFORM_NFR_EXTENSIBILITY_R1, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == == Task requirements == * Review and expand existing Extensibility page. Change the future tense as this document is part of the specification. * Give more detailed explanation of modules, extensions and extension points. You may include a simple diagram and examples of usable plugins (language support, etc). * Give more detailed explanation of skins - what do they include? (icons, text, visual styles of which elements - native or added later.) * Define which of the templates are part of the extensibility and describe them (Are page and book templates part of the extensibility?) * Define what programming language is planned to be included. Find the corresponding tickets related to scripting and comment that these tasks are related somehow. * Link this page into the overview of the project as extensibility is one of the important advantages of the product. == Task result == Improved [wiki:PLATFORM_NFR_EXTENSIBILITY] == Implementation idea == * Include a diagram explaining several modules interact - several extensions connected to an extension point. * Include different frame editors as examples of plugins * Include language support as an example of plugin == Related == [wiki:PLATFORM_NFR_EXTENSIBILITY] [wiki:PLATFORM_NFR_EXTENSIBILITY_R0] == How to demo == Present [wiki:PLATFORM_NFR_EXTENSIBILITY] and explain improvements. = Design = Further explanation of modules will be linked. [wiki:PLUGIN_MODULE_STRUCTURE] ![[BackLinksMenu]] = Extensibility = Sophie2 is an open source extensible platform for creating interactive books with text and multimedia content in networked enviroment. Sophie2 is designed to be an extensible platform that has many advantages * Implementation of new features can be done by anyone without changing (and knowing) other parts of the application. * A feature can be improved with minimal effort. Each part of the application can be substituted with newer version or just with other plugin that provides the same functionality. * Non-used features can be disabled to save workspace, memory or disk space. This allows easy implementation of different editions such as reader, author and server. * Language and skinning support doesn't mix with programming - almost everything is changeable without source code modification * The actual document content is not limited to text and multimedia - every type of content is implementable. == Plug-ins == Sophie2 is plugin based platform. What we call plugin is a part of the application which interacts with other plugins but is independent - it holds group of functionalities. Plugins provide extensions and extension points. This model gives a well defined interface, which allows the programmers to design new plugins independently with backward (and in some cases forward) compatibility. This architechture provides easy and very powerful way to extend, subtitute and implement new functionalities without knowing the whole source or previous implementations of this feature. Plugins are explained further here. == Skins == Skins are part of plugin concept. For most of the applications, skins provide visual styles. In Sophie2 we give even more functionality to the skins - language support, tooltips and of course, visual styles. This allows non-programmers to contibute in translation and styling for example. == Templates == Templateing is one of the most charming features for most of the authoring applications - because people often design great elements that just worth reusing and sharing. Sophie2 supports book, page and frame templates. What a template really is decides the user - style, content, shape or everything. == Scripting == One of Sophie2 main purposes is to give each user what he expects - one should feel comfortable whatever his technical experience is. Scripting provides users with programming skills to ease their application usage by performing usual tasks fast and easy. = Implementation = ^(Implementation results should be described and linked here (from the wiki or the repository))^ = Testing = = Comments = ^(Write comments for this or later revisions here.)