Цель создания платформы четко определена: сделать разработку приложений и клиентов для Голоса проще, дешевле и быстрее.
Идея создания платформы во многом основана на моем опыте: после полугода работы с блокчейнами Голоса и Стима мне понятно, что developer experience при работе с JSONRPC API неоптимален. Практика также показывает, что для создания альтернативного клиента недостаточно фронтенд приложения и работающей ноды Golos, необходимо создавать прокладку, например в виде SQL базы данных.
При успешной реализации проекта платформа даст возможность создавать продвинутые фронтенд и мобильные клиенты без необходимости написания бекенд кода, а ее внедрение поможет разработчикам сконцентрироваться на создании ценности для экосистемы Голоса и пользователей приложения/клиента.
Название платформы и проекта в целом пока неопределено. Код платформы будет выпущен под одной из свободных лицензий в рамках #открытый-код.
Планируемый функционал
- удобный websockets API для доступа к данным блокчейна
- быстрая скорость загрузки данных пользователями приложений
- продвинутый функционал фильтров и настроек отображения контента
- интеграция с IPFS
- поддержка GraphQL
- риалтайм потоки событий блокчейна c доступом к обогащенным данным
- in-memory база данных объектов блокчейна
- минимиум церемоний при разворачивании платформы
- ..много другого
Платформа будет состоять из следующих элементов:
- бекенд сервер взаимодействующий с golosd (будет разработан в первую очередь)
- мультифункциональный фронтенд клиент с поддержкой реалтайм обновлений
- докер кластер
Сценарии использования
- статический блог одного автора
- статический блог нескольких авторов
- реалтайм SPA
- блокчейн эксплорер
- базовые статистические инструменты
- ... и другие
Стек бекенд сервера
Elixir/OTP обеспечит бесперебойность и масштабируемость работы платформы. Phoenix будет использован для высокого уровня производительности и поддержки двусторонней реалтайм коммуникации с помощью websockets. Использование существующих библиотек Phoenix для Android, iOS и C# позволит сократить время разработки мобильных приложений. Mnesia позволит использовать in-memory базу данных для обеспечения быстрого ответа сервера на пользовательские запросы.
Возможно, окажется, что Mnesia недостаточно для некоторых классов приложений. В таком случае в платформу будет добавлена SQL база данных.
Планируемый первый релиз
Первый релиз позволит автору Голоса быстро запустить статический блог на своем домене с минимум конфигурации и настроек.
Экосистема
Буду рад приоритизировать функционал необходимый клиентам, уже находящимся в разработке (пингую @dark.sun, @lehard, @on0tole) или только планируемых. Для связи: [email protected] или chat.golos.io
В ближайшее время я также запущу цикл образовательных постов о Elixir/OTP и Phoenix сфокусированный на взаимодействий с блокчейном и кастомизации платформы для своих целей и потребностей.
Хорошая идея и похоже что она действительно назрела. Уважаю твоё фанатичное увлечение Elixir и желание сделать на нём платформу для приложений на базе блокчейна Голос. Чем больше разных вариантов для начала работы в экосистеме Голоса, тем лучше.
Однако возникает вопрос, а не будет ли эффективней развивать общую кодовую базу, чем плодить сущности. У нас уже есть оупенсорсный клиент Golos.io, на базе которого команда Голоса будет строить свою экосистему.
Мы запилили ALFA-версию mapala.net на Yii2, которая также является оупенсорсной, лежит в открытом доступе, но к сожалению не задокументирована и далека от идеала. Хотя позволяет быстро запустить свой клиент с минимальными затратами и при этом адаптировав его под свои нужды. Завтра мы как раз опубликуем пост о дальнейших планах на нашу ALFA и какую пользу она может послужить будущим проектам, встающим на путь реализации своих идей на блокчейне Голос.
Сейчас мы доделываем свою BETA-версию, которая будет на стеке технологий Django/VueJS. Код тоже будет оупенсорсный и мы будем над ним постоянно работать и улучшать для решения своих задач.
Вот и возникает вопрос, не слишком ли мы маленькие (сообщество Голос) для такого количества разных технологий? Может стоит сконцентрировать наши усилия?
Хорошие замечания. Тут есть несколько важных моментов:
Архитектура платформы будет с самого начала разрабатываться с учетом различных сценариев и типов приложений. Я вижу ее как экосистемный продукт, использующийся для решения задач отличающихся друг от друга проектов (например мобильных клиентов).
Django/VueJS хороший стек, но у меня, например, нет опыта работа с ним, поэтому я не могу быть эффективным контрибьютором.
Если с платформой все пойдет по плану, то потенциально она сможет заменить текущий бекенд (не JS клиент) golos.io.
Нам будет непросто скоцентрировать усилия, т.к. разработка двигается в несколько отличающихся направлениях. Но я с удовольствием пообщаюсь, чтобы понять, можете ли вы использовать какую-то часть функционала платформы, чтобы уменьшить затраты времени/ресурсов на разработку.
Я, наконец, написал свой первый пост в Голосе. Еще раз спасибо, что рассказал мне об этом, и мне помогает.
@ontofractal, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
Почему ваш аватар не отображается правильно ?
Это потому, что URL-адрес вашего аватара не ссылается на файл образа с расширение .jpg, .jpeg или .png
Markdown не может отобразить эту картинку. Таким образом, я заменил свой аватар с другого изображения.
Для решения этой проблемы:
?
)Лайк за IPFS. Ещё бы интеграцию и шлюзы в ZeroNet, I2P и Tor, и ващё шикардос. =)
Очень хорошая инициатива. Весьма необходим простой и понятный API, с разнообразными методами. Так как сейчас даже при наличии годы Golos, не очень понятно, какие методы там есть,плюс держать постоянное соединение через сокет возможно затратно в плане трафика (хотя могу ошибаться).
Спасибо за предложение, определенно будем ждать, т.к. прокладка в виде SQL базы c удобным API пошла бы очень даже на пользу. Хоть у нас и нет девов со стеком Erlang/Elixir но в теории возможно использование Вашей платформы как "черного ящика" через API и без знаний Elixir. (хотя тут будет определенная зависимость от реализованного функционала, но думаю это не проблема)
Возможно ли будет на вашей платформе реализовать функционал групп (ограниченный доступ к некоторому контенту и система прав пользователей). Можно ли будет шифровать чувствительные данные?
База данных платформы будет постоянно синхронизироваться с блокчейном Голоса, поэтому ограниченный доступ к контенту -- вопрос несколько иной архитектуры. Конечно, всегда есть варианты.
Да, например, используя memo ключ каждого пользователя.
Ой, а поясните плиз нубу, для каких данных будет достаточно Mnesia? Просто in-memory хранение это уже кеш какой-то получается, а не БД.
Можно сказать и так, данные в базу данных импортируются из блокчейна. Mnesia не поддерживает аналитические запросы. А так все необходимые данные о постах, голосах, аккаунтов могут хранится в mnesia.
Супер-инициатива!
Во всем написанном главный и самый тяжелый минус - это стек технологий. Много ли людей, способных разрабатывать на новом (пусть и хорошим) языке программирования Elixir? Вот в этом и есть главный затык сей идеи. Платформа будет, а пользоваться ей - нужно учиться.
Ситуация будет, в основном, такая: я не кодер и вообще не шарю, но у меня есть видение и желание чего-нибудь смастерить, протестировать концепт взаимодействия с блокчейном Голос. Я могу подключить друга-самоучку, который накодит за выходные мне чего-нибудь нужное, и сделает это бесплатно, если это просто и не требует самообучения.. Но чтобы найти специалиста под Elixir, нужно постараться. А чтобы найти того, кто поможет это сделать бесплатно.. ну наверное тут кроме @ontofractal никого и не найдется)) По-крайней мере пока..
Получается, все может упереться в денежные ресурсы, коих у простых людей нет.
Ты все правильно говоришь, поэтому я и планирую архитектуру платформы так, чтобы у большинства разработчиков клиентов/приложений для типичных сценариев не было необходимости модифицировать бекенд.
edit: убрал салат из слов :)
Круто!
Когда ждать?
Цитируя классиков опен сорса: "когда будет готово" :D
Если серьезно, то в ближайшее время.
=)
Как поучаствовать?
Ну то есть как только, так сразу) Ок, я тогда буду ждать, а то что-то подобное тоже хотел делать, чтоб не было два велосипеда))