Comments (3)
Möglicherweise interessant als "Tech Ausblick"
- Chaträume mittels Matrix und/oder XMPP
- Ideen und Projekte mittels Matrix und/oder ActivityPub föderieren
Matrix ist aktuell im Feldtest bei der Bundeswehr und wird flächendeckend von der französischen Regierung verwendet. Praktisch handelt es sich bei Matrix um eine eventually consistent distributed json object database.
ActivityPub oder XMPP wären alternativen als mögliche Föderationstechnik, aber weit ungeeigneter.
from deine-idee.
- Rust
- GraphQL
- React JS/ TypeScript (Entwicklerzufriendheit ist höher wegen IDE Autocompletion etc.) (Frontend)
- Postgres DB
- Kubernetes
from deine-idee.
Um das Projekt auf technischer Ebene skalierbar umzusetzen wird auf folgende Technologien gesetzt:
- Rust
- GraphQL
- React JS inkl. TypeScript
- Postgres DB
- Kubernetes
WebUI
React JS
Für die Gestaltung der Benutzeroberfläche wird React JS benutzt. React besticht durch seine große Entwicklergemeinde und darauf aufbauend durch das Vorhandensein zahlreicher Komponenten-Bibliotheken, die frei verwendet werden können und nicht noch entwickelt werden müssen. React unterstützt moderne Programmierparadigmen im Frontend und ist für seine gute Performance bekannt. Dadurch wird die User Experience gesteigert und die Hürde zur Akzeptanz der Plattform aus UX-Sicht vermindert. Ebenfalls eignet sich React JS für die schnelle Entwicklung von Prototypen als auch für die Umsetzung von unternehmenskritischen Anwendungen mit langjähriger Laufzeit. Dadurch kann ein schnelles iteratives Vorgehen, bei welchem in jeder Iteration Feedback/Evaluationsschleifen integriert sind, gut umgesetzt werden.
Für die skalierte Entwicklung wird React JS mit TypeScript kombiniert, da dadurch eine eindeutige Typenverwendung gewährleistet wird. Gleichzeitig erfreut sich TypeScript in Entwicklerkreisen größer Beliebtheit, da die Integration in die eigene Entwicklungsumgebung (IDE) einfach ist und dadurch spezielle Features solcher IDEs wie bspw. die Autovervollständigung und Typenprüfung eingeschaltet werden können. Dies ermöglicht es auf eine große Entwicklergemeinde zurückzugreifen.
Mobil
Für die Anbindung einer mobilen Applikation (App) wird ReactNative genutzt. ReactNative ist ein Framework welches die hybride Programmierung von Apps ermöglicht. Damit müssen native Apps nicht für jedes unterschiedliche Smartphone OS wie iOS oder Android extra entwickelt werden. Für die Verwendung von ReactNative spricht des Weiteren die Wiederverwendung vieler Komponenten aus der WebUI, welche mit React entwickelt wird. Hier ergeben sich automatisch Synergie- und Effizienzeffekte, da bereits entwickelte Komponente fast 1:1 auf den mobilen Kontext übertragbar sind und somit der Entwicklungsaufwand minimiert wird.
Messenger
Um die Kommunikation zwischen den Teilnehmenden durch einen Echtzeit-Messenger zu unterstützen wird Matrix als Kommunikationsprotokoll verwendet. Dadurch kann bspw. das Chatclient-Programm Riot an die Plattform angebunden werden. Durch eine End-zu-Ende-Verschlüsselung ist gewährleistet das die Kommunikation zwischen den Teilnehmenden sicher abläuft.
Backend/API
Das Backend besteht bei der entwickelten Architektur aus verschiedenen Komponenten die im folgenden aufgeführt und erläuter werden.
Rust
Rust ist eine innovative Programmiersprache, die vor allem durch Ihre Performance und sehr effizienten Speicherverwaltung, da hier keine klassische Speicherbereinigung stattfindet, hervorsticht. Ein weiterer Vorteil von Rust ist, dass eine nebenläufige Programmierung sehr einfach zu gestalten ist. Die Sprache ist darauf ausgelegt gängige Fehlerquellen zu vermeiden und bietet dadurch von Grund auf einen hohe Codequalität und Entwicklerfreundlichkeit.
Auf Grund der oben dargestellten Vorteile wird die Implementierung des Backends und seiner Business Logik in Rust programmiert werden. Nachteilig an Rust kann die relativ hohe Einstieghürde sein, da die Sprache nicht einfach zu lernen ist und vor allem als Systemprogrammierungssprache und nicht als Webapplikationssprache verwendet wird.
GraphQL
GraphQL ist eine Abfragesprache bei der eine eigene Mittelschicht zur Verfügung gestellt wird. Dadurch können (Frontend-)Entwickler ihre eigenen Schemata basierend auf dem vom Backend bereitgestellten Schemata definieren und dieses Abfragen. Dadurch werden die Abfragekosten (Anfragen von Ressourcen, Verarbeitung des Ergebnisses, Auffinden neuer abhängiger Ressourcen, Abfragen neuer abhängiger Ressourcen) gemindert. Gleichzeitig bietet GraphQL ein eigenes Typensystem, welches in Bezug auf die im Backend verwendete Sprache Rust durch die Bibliothek Juniper komfortabel bereitgestellt wird. Dadurch können Typendefinitionen eins zu eins vom Backend bis zum Frontend durchgereicht werden und es kann auf der Entwicklungsseite, egal ob Frontend oder Backend, keine Unsicherheit aufkommen. Die Einfachheit die sich hier vor allem auf der Frontendseite ergibt muss allerdings im Backend abgefangen werden, damit es nicht zu Performanceproblemen kommt.
Postgres DB
Für die Datenhaltung wird die Open Source Datenbank PostgreSQL verwendet. Diese bietet zum einen eine Server-Client-Architektur und zum anderen können neben dem Ausführen von Mengenoperationen auf einen oder mehreren Tabellen Abfragen mit hoher Komplexität (Subselects, Outerjoins etc.) durchgeführt werden. Des Weiteren besticht PostgreSQL durch Security-Features die eine hohe Sicherheit garantieren.
Container und Orchestration
Container ermöglichen es Software-Komponenten ohne das Bereitstellen von virtuellen Machinen und den damit verbundenem Overhead auszuführen. Warum ein ganzes Betriebssystem in einer VM installieren wenn es doch nur um bestimmte spezifische Funktionen geht?
- Docker
- Podman
- Nomad
Kubernetes und Nomad
Für die technische Skalierung werden die einzelnen technischen oben aufgeführten Komponenten in Containern ausgeführt und mit dem Orchestrierungstool Kubernetes verwaltet werden. Die einzelnen Komponten kommunizieren dann über Microservices miteinander. Dadurch wird zum einen schon bei der lokalen Entwicklung die technische Skalierung mitgedacht und getestet und zum anderen können mit diesem Architekturaufbau zukünfigt entwickelte Komponenten einfach integriert werden.
Machine Learning Integration
Auf der Plattform werden verschiedene Ideen gesammelt. Diese müssen für eine bessere Auffindbarkeit und damit auch Benutzerfreundlichkeit Verschlagwortet werden. Die Verschlagwortung oder das Tagging kann auf drei Arten geschehen. Erstens kann ein Kategoriensystem bereitgestellt werden (Taxonomie), zweitens kann ein Kategoriensystem frei Hand durch die Nutzer der Plattform entstehen (Folksonomie) und drittens kann ein hybrider Ansatz genutzt werden in dem einerseits Kategorien vorgegeben werden, diese aber durch freie Tags angereichert werden.
Bei der ersten Variante ist der Vorteil, dass es ein eindeutiges Commitment auf die Semantik der Tags gibt. Nachteilig allerdings ist der Aufwand er im Vorfeld betrieben werden muss, um zu solch einer inhaltliche konsistenten Taxonomie zu kommen. Bei der zweiten Variante ist der Aufwand der Erstellung geringer, jedoch besteht hier das Problem der inhaltlichen Bedeutung eines Tags (Semantik) und auch die Schreibweise. Bei der dritten Variante ist der Vorteil, dass ein Kategoriensystem bereits besteht und auf dieses aufgebaut werden kann. Hier fließen die o.g. Vor- und Nachteile ein.
Daher wird zur Verbesserung der Benutzerfreundlichkeit und der Auffindbarkeit von relevanten Ideen für einen Nutzer eine Machine Learning Komponente integriert. Diese Komponente beinhaltet vor allem Python basierte Bibliotheken wie bspw. NLTK zur Natürlich-Sprachlichen-Verarbeitung (NLP) um z.B. die Suchergebnisse zu vervollständigen. Weiterhin können u.a. folgende Algorithmenklassen in der Plattform verwendet werden, um die User Experience zu steigern:
- Kollaboratives Filtern: Dadurch könnne Nutzerinteressen vorhergesagt werden und den Nutzenden können Ideen vorgeschlagen werden, die er oder sie vielleicht noch gar nicht im Blick hatte.
- Empfehlungssysteme: Dadurch können den Nutzenden Ideen auf Grund der bereits von Ihnen berarbeitenden Ideen vorgeschlagen werden.
- Topic Modelling: Dadurch können Themen die in den einzelnen Communities adressiert werden automatisch extrahiert werden und z.B. die Schlagwortsuche verbessern.
All diese Algorithmen stehen gemäß dem Open Source Gedanken frei zur Verfügung und können von der Gesellschaft verifiziert und ggf. angepasst werden.
Zusammenfassung
-mobile App
-weitere Devices (Alexa, GoogleAssitant, etc.)
from deine-idee.
Related Issues (15)
- Konzeption HOT 6
- Namensfindung HOT 4
- Projektbeschreibung und Pitch-Präsentation HOT 13
- Sammlung existierender Plattformen / potentieller Kollaborationspartner HOT 10
- Datenbank
- Suchfunktion
- Importierung der WirVsVirus Ideen & Projekte HOT 2
- Benutzerkonto
- Benutzerkonto mit Twitterkonto verbinden
- Dezentralisierung HOT 1
- Open Data / Öffentliche API HOT 3
- Responsive / Mobile UI
- Internationalisierung / Übersetzung
- OpenSource Alternativen für Tooling rund um Ideen/Projektmanagement HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from deine-idee.