Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
decidim
Decidim’s software architectureGoals & abstractions guiding its development
github.com/josepjaumetwitter.com/josepjaume
decidim
codegram.comgithub.com/codegramtwitter.com/codegram
decidim
da-ce-deemCatalan for: “We decide | let’s decide”
decidim
decidim
decidim
decidim
decidim
decidim
Inspired by consul
decidim
BUT Y?
decidim
Chapter 1: Goals and principles
decidim
configurable collaborableextendabledistributable
decidim
!applicationlibrary
decidim
decidim ~= frameworkdecidim ~= ecosystem
decidim github.com/decidim/decidim
decidim rubygems.org
decidim
Chapter 2: Installation
decidim
ruby & rails 5postgresql
decidim
Generating an application$ gem install decidim
$ decidim jam
decidim
decidim
decidim
Gemfile
decidim
Configuration: config/initializers/decidim.rb
decidim
Customization: app/assets/stylesheets/decidim.scss
decidim
Chapter 3:internals & abstractions
decidim
Organization● Multi-tenancy● Infrastructure sharing● Shared database● Independent data
decidim.rocks
admin
users
...
decidim.ninja
admin
users
...
1..n
admin
decidim_application_instance
decidim
decidim
decidim
Participatory SpaceWhy:
● Defines the terms of participation● Holds functionalities
Implementations:
● Participatory Process● Assembly● Iniciative
decidim.rocks
participatory_process1
step_1 step_n
assembly1
managers
iniciative1
author supporters
iniciative2
author supporters
decidim
ComponentsRegistered against Core
● Participatory spaces hold components
● Mini-applications● Exposed via a manifest
Core components:
● Proposals● Surveys● Participatory Budgets● Meetings● Pages● Accountability
decidim
decidim
decidim
decidim
decidim
decidim
decidim
decidim
Component manifest● Component name● Engines● Configurable settings● Resources● Statistics● Exportable artifacts● Actions
decidim
decidim
decidim-coredecidim-admin
decidim-proposals
decidim-comments decidim-api
decidim-accountability decidim-surveys
decidim
Decidim::AuthorizationDecidim::NotifiableDecidim::CommentableDecidim::ResourceDecidim::Followable
decidim
Decidim::MenuDecidim::FormBuilderDecidim::ExporterDecidim::AuthorableDecidim::Reportable
decidim
good abstractions ==
decidim
/api/graphql
/api/graphql
decidim
Chapter 4:Core development & testing
decidim
Developing
decidim Development application
$ git clone [email protected]:decidim/decidim$ cd decidim$ bundle install$ rake development_app
decidim
decidim
development_app -> ../decidim
decidim
Testing
decidim
rspeccapybara + phantomjs
decidim Testing
$ rake decidim:generate_test_app$ rake test_all…F…….……….………F…..
# alternatively$ cd decidim-proposals$ rspec rspec spec/features/proposals_spec.rb………….F…….F…………..
decidim Continuous Integration
decidim
Chapter 5:Vanity metrics ¯\_(ツ)_/¯
decidim
~ 14 months old
decidim
21 code contributors
decidim
~1.300 PRs merged
decidim
~63k ruby loc~5k typescript loc~2k javascript loc
decidim
~98% test coverage
decidim
~100% documentation
decidim
~ 42 releases
decidim
> 15 working installations
decidim decidim-monitor
decidim
> 10 languages
decidim
~ 40k users
decidim
~ 120 smashed
decidim
future ahead
decidim
thanks! questions?
gitter.im/decidimgithub.com/decidim