# Separating View from Data, Plugins, Modularity

**URL:** https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612
**Category:** Support
**Created:** [August 14, 2016, 11:46am UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612 "2016-08-14T11:46:47Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![phisch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/phisch/32/70265_2.png) [@phisch](https://meta.discourse.org/u/phisch)
#### Post date: [August 14, 2016, 11:46am UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612/1 "2016-08-14T11:46:47Z")

</div>

Hi,  
How modular is Discourse internally? Will it easily be possible to develop a plugin which uses a different approach to discussion for a certain category?  
Does Discourse use the MVVM principle or something similar, so that a discussion tree (or network) can be displayed in a different manner than it is now?

Basic example: Show Discussion as a tree rather than a list (this is not what I want to do)

If not, is it planned to achieve more modularity?

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [August 14, 2016, 12:17pm UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612/2 "2016-08-14T12:17:51Z")

</div>

These are very diffuse questions. You can find your answer to “how modular” by perusing our #Customization > Plugin directory and see what people have done with it. Then check out these beginner’s guides:

> [@Developing Discourse Plugins - Part 1 - Create a basic plugin](https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins/30515):
>
> Building a plugin in Discourse can be really simple, once you learn a couple of quirks. The goal of this post is to create a skeleton plugin and introduce you to the basics. Your development environment Make sure you have a development environment of Discourse running on your computer. I recommend you use [the appropriate setup guide](https://meta.discourse.org/tag/dev-install) and come back when you’re done. plugin.rbtada Use [GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub](https://github.com/discourse/discourse-plugin-skeleton) to create a complete di…

> [@Learn how to start building stuff for Discourse if you're newbie (like myself)](https://meta.discourse.org/t/how-to-start-building-stuff-for-discourse-if-youre-newbie-like-myself/45954):
>
> There are a few ‘how to start’ guides for working with Discourse already and a wealth of useful info on meta, but I thought it might help to give an insight to the mental processes of starting from little, if any, prior coding experience to building substantial Discourse plugins. Discourse is written by experienced developers and has a large codebase. This can feel intimidating. This intimidation factor can be a significant barrier for novice developers. This is a kind of ‘psychological primer’…

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [August 15, 2016, 1:35pm UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612/3 "2016-08-15T13:35:36Z")

</div>

> [@phisch](#):
>
> Does Discourse use the MVVM principle or something similar,

Read the Source, Luke

[https://github.com/discourse/discourse](https://github.com/discourse/discourse)

PS: Discourse is an Ember app powered by a Rest API, so yes.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [February 23, 2019, 8:12am UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612/4 "2019-02-23T08:12:45Z")

</div>



---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [February 23, 2019, 8:40am UTC](https://meta.discourse.org/t/separating-view-from-data-plugins-modularity/48612/5 "2019-02-23T08:40:19Z")

</div>


