Tribe - a content structuring and collaborative framework
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 542 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/61476 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 20231 / 542
2
5
10
14
15
16
22
24
27
29
31
36
43
48
56
63
74
78
83
87
89
95
96
99
104
106
107
117
119
121
122
125
126
128
130
132
134
135
136
141
143
146
148
152
155
157
159
161
165
166
168
170
173
176
180
181
185
191
194
196
197
198
199
206
207
209
210
211
212
216
219
220
227
228
229
231
232
233
236
250
252
256
258
260
263
264
267
271
273
275
276
278
282
286
292
293
298
299
300
302
312
316
321
322
324
339
341
342
343
344
351
352
354
355
356
357
359
369
370
372
373
376
378
379
380
382
383
387
390
394
395
401
405
406
410
411
413
415
416
421
426
430
437
438
440
441
443
444
445
446
448
449
450
451
458
464
468
472
475
476
479
481
493
494
498
499
502
509
513
516
517
520
522
524
525
531
534
535
537
538
541
00:00
Diagram
00:52
Data managementSoftware frameworkContent (media)Data managementPresentation of a groupSoftware frameworkGradientCollaborationismProjective planeDifferent (Kate Ryan album)Computer animationMeeting/Interview
01:03
Software developerProcess (computing)Different (Kate Ryan album)Content (media)Software frameworkJSONXML
01:27
BitPresentation of a groupCollaborationismOpen sourceMeeting/Interview
01:35
Software frameworkStack (abstract data type)CollaborationismOpen sourceBitJSONXMLMeeting/Interview
01:49
Presentation of a groupBuildingSpacetimeObject (grammar)Computer animation
02:00
Object (grammar)Meeting/Interview
02:08
State of matterConstraint (mathematics)BuildingJSON
02:33
Variable (mathematics)Scripting languageWaveoutputFormal languageFront and back endsRelational databaseMeeting/Interview
02:45
BitInternet forumProcess (computing)InformationoutputField (computer science)JSON
03:00
Content (media)Cartesian coordinate systemSoftware developerProjective planeBuildingWebsiteTable (information)BitInformationRevision controlCollaborationismEvent horizonService (economics)Subject indexingComputing platformNatural languageProduct (business)Term (mathematics)Web browserAndroid (robot)Content (media)Object (grammar)Core dumpChatterbot
03:48
Revision controlFront and back endsCartesian coordinate systemMeeting/Interview
04:00
Decision theoryOvalBit1 (number)IterationFront and back ends
04:16
DatabasePhysical systemTable (information)DatabaseConstraint (mathematics)Software developerSubject indexingBit rateQuantumGame theoryJSONXML
04:33
Cache (computing)Internet service providerSubject indexingMeeting/Interview
04:43
Tape driveDatabaseCoding theoryPhysical systemSoftware developerThomas BayesMultiplication signAliasingTheory of relativityJSONXML
04:51
CodeDatabaseData managementPhysical systemMultiplication signFront and back endsSoftware developerContent (media)Process (computing)Perspective (visual)Projective planeDecimalTask (computing)CollaborationismComputer programmingMeeting/InterviewJSONXML
05:33
DatabasePhysical systemData managementLevel (video gaming)Meeting/InterviewJSONXML
05:47
Tape driveRevision controlArithmetic meanComputer architectureElement (mathematics)Core dumpComputer animation
05:56
Configuration spaceComputer fileCartesian coordinate systemInformationDistanceComputer architectureTerm (mathematics)JSON
06:12
Web pageTerm (mathematics)Meeting/Interview
06:23
Data modelTable (information)DatabaseEquivalence relationState of matterTape driveDatabaseTable (information)Formal languageMathematical singularityForm (programming)Disk read-and-write headDescriptive statisticsData modelHierarchyXML
06:53
Modul <Datentyp>Data modelEquivalence relationRelational databaseContent management systemField (computer science)outputCAN busModule (mathematics)Module (mathematics)Computer fileRevision controlEndliche ModelltheorieTheory of relativityComplex (psychology)Attribute grammarTable (information)Link (knot theory)Source codeJSONXML
07:25
Endliche ModelltheorieoutputField (computer science)Module (mathematics)Canadian Mathematical SocietyHierarchyMeeting/Interview
07:36
Attribute grammarData modelEquivalence relationRelational databaseoutputField (computer science)Content management systemModule (mathematics)CAN busMetadataModule (mathematics)Endliche ModelltheorieXML
07:46
outputCASE <Informatik>Module (mathematics)MetadataAttribute grammarInstance (computer science)Front and back endsEndliche ModelltheorieField (computer science)Object (grammar)VarianceElectronic mailing listView (database)Scripting languageSource codeJSON
08:34
Object (grammar)Instance (computer science)Data modelEquivalence relationFloating pointEquivalence relationObject (grammar)Instance (computer science)Level (video gaming)NumberFunctional (mathematics)Endliche ModelltheorieTape driveRow (database)Module (mathematics)Cartesian coordinate systemXMLComputer animation
09:09
Moment (mathematics)Revision controlJSONXML
09:18
Revision controlComputer-generated imageryComputer fileJunction (traffic)Content management systemRevision controlMedical imagingComputer fileSpacetimeDifferent (Kate Ryan album)Object (grammar)Data managementPhysical systemView (database)Junction (traffic)Canadian Mathematical SocietyContent (media)Software frameworkElectronic mailing listFront and back endsMeeting/InterviewXML
09:47
Drag (physics)PlastikkarteObject (grammar)View (database)WordAdditionMeeting/Interview
09:57
FreewareRevision controlAssociative propertyMedical imagingWordBuildingJunction (traffic)JSONXMLUML
10:16
Integral domainReal numberArtificial neural networkBuildingComputer animation
10:26
WebsiteComputer animationMeeting/Interview
10:38
JSONComputer animation
10:52
Program flowchart
Transcript: English(auto-generated)
00:55
Hello everyone. This presentation is about TRIBE. TRIBE is a collaborative project management
01:02
framework. It is collaborative as in it affects the ways in which people work together, people from different teams, UX, design, content and development. It gives a set of conventions to work together, kind of smoothens the collaborative process. We call it a framework
01:23
because it has a well-defined folder structure. It has a set of conventions that are extendable and we are putting them out in the community so that we can together extend them further. It has a defined tech stack which is again extendable. It has a set of licenses which enable open source collaborations. And through this presentation, we'll be taking you through
01:46
all of these aspects to some extent. I'll talk a bit about the Hall of Nations which has been used through this presentation as a metaphor. It was a beautiful building and exhibition space in New Delhi built in 1972. It was built to house exhibitions.
02:03
The brief given to the architects was that it must be able to exhibit objects of varying sizes from books to satellites. So the architects, they came up with a design solution through the constraints of available building material, available skill set, cost constraints, and all of that. They broke convention by imagining a building without
02:25
pillars. Also, the building material for it was not prefabricated. It was built on-site. Coming back to Tribe, firstly, I'll give a brief introduction about Tribe. Tribe has been progressively built to provide one language or a unified set of conventions to the following
02:44
three aspects. Relational database structure, variable type handling in backend scripts, and handling HTML input fields typically used in CMSs to smoothen the data entry, data editing, and moderation processes within a project. A bit of info about our team. We
03:03
are a team of four. We run a small services company called Postcode. It was through our collaborations that Tribe was progressively built. Over the last three years, we've done around 90 projects. We've worked with various external development teams, UX folks, design
03:22
studios, and content teams. We have used Tribe to build websites, products, applications, Android iOS applications, platforms, and chatbots. In terms of text stack, the core
03:45
browser packages whenever required based on projects. Tribe provides API support with JSON API version 1.1 to support any kind of front-end. We typically use Node.js applications on the front-end. Before we delve deep into the technicalities of how Tribe works,
04:05
I'd like to talk a bit about why did we create Tribe. We needed more backend agility to support iterations of UX, content, design, and front-end decision making. To work on how we build a more agile backend, we needed to know the things that slow down backend
04:22
development. So we figured out constraints of database structure. The rigid table structure does not allow us to constantly change the column names and table names. We wanted to accommodate the agility that JSON provides while taking advantage of indexing and caching and searchability that MySQL provides. Then, while coding API layers, we truly realized
04:47
the importance of conventions. Looking at how JSON API has been drawn out really helped us think of more possibilities that could reduce time spent in backend development. Variable type handling in PHP takes up a lot of time and was not very agile in our
05:03
experience. In the collaborative process, if, for example, we look from a content person's perspective, it seems like a very simple ask when they say they need a multi-select instead of a single-select. Such a simple ask can be a relatively complex task for
05:21
a backend programmer, especially if it is on a project that is live with significant user data. Also, we wanted a dead simple CMS, something that we could have across all our projects. We wanted a single place to keep all our assets and uploads arranged by some convention so that things are predictably located and can be looked for at a later stage.
05:49
Now, let's go deeper in the architecture of Tribe. One of the core elements of Tribe is a config file called types.json. It is a pure JSON file that can be configured
06:04
and reconfigured quickly. It defines the information architecture of the application with precision. And it looks somewhat like this. And there are a few other terms that will help me explain types.json and its usage better. The first term is types. A type can
06:28
be thought of as a data model or a table in a database. It is non-hierarchical as it you cannot have subtypes. All types are equal on the hierarchy. It can accommodate
06:41
metadata, which is extendable. A basic example would be a description of a type, its singular or plural form or how it would be called in a different language. This is how a type looks within types.json file. Then there are modules. Modules are
07:05
equivalent to columns in a table or attributes in a model. They allow for complex relational references. For example, you could reference and link a module from one type to another module from another type or a module from one type could dynamically link to another type.
07:26
Because types are non-hierarchical, modules allow types to be referenced, thereby creating a hierarchy if needed. Modules themselves are non-hierarchical, so submodules cannot be created. A module also defines usage in input fields for CMS.
07:43
Like types, metadata of modules is extendable. This is an example of how modules look. There are four important aspects to notice here. Metadata starting with input underscore tells how the module must be used in an input field. Metadata starting with list
08:04
underscore tells how the module must be listed in a list view. Metadata starting with var underscore defines how the module must be utilized by the PHP backend scripts. Input underscore slug can be used as name of the variable in PHP, name of the input field
08:25
in the frontend, and the name of the JSON attribute in MySQL JSON, thereby combining all of these use cases. Then there are objects. An object is an instance of a model.
08:42
It is the equivalent of rows in a table. It has a universal ID that never repeats. This is particularly unique to the way tribe functions. This allows for objects to be shifted from one type to another even after the application goes live and at any stage. An object is stored as a JSON object that retains the type and module structure in
09:05
readable slugs rather than numbered references. This is how an object looks like. Coming to uploads convention. Uploads folder follows a very simple convention, year, month,
09:21
day. Currently on tribe, image file versions are created automatically. Junction is our content management front-end system. It is a headless CMS. It is a front-end system built on EmberJS, which is a Node.js-based framework. It also connects to the uploads
09:41
folder. The view you are seeing is the list view of a single type. And this one is an editing view of a single object. Towards the end, just reiterating our belief that convention is key to collaboration. And a word about licenses. A tribe is in GPL version 3.
10:05
Junction, which is the CMS, it uses the MIT license. And types.json uses the creative commons license. That's image called C. Raja Rawal associates the people who built the beautiful
10:22
building. A few shots of the building. And that's it then. Thank you, everyone.