GStreamer has been a great inspiration for us regarding the abstraction layer it provides. However, we have decided to take a different approach to implementation. First of all, GStreamer, in our opinion, would not excel in highly scalable applications due to its monolithic design, dependency on GLib with its MainLoop and lack of Virtual Machine giving the benefit of real-time inspection as well as failure isolation preventing a single error from causing total system shutdown. Membrane is written in Elixir which means it is based on battle-tested Erlang VM. Moreover, GStreamer has grown big - it supports virtually every format being in use – but that functionality comes at the expense of quality. We prefer to maintain a smaller set of higher quality elements. We also have chosen a different release strategy. We don’t bundle plugins in huge packages like GStreamer does, but each plugin is a separate library you can easily link to your application without adding too many dependencies.