Liebe Community.
Ich habe im vergangenen dreiviertel Jahr an einem Projekt gearbeitet, aus dem langsam aber sicher sich ein Framework gebildet hat. Mittlerweile programmiert seit 2 Monaten ein Kumpel von mir, der mit mir zusammen wohnt und Informatik an der Goethe Uni studiert, ebenfalls am Projekt mit.
Da das Framework nun immer mehr Form annimmt und ich es demnächst über die Crowd-Funding-Plattform startnext.de einstellen möchte, wollte ich es hier vorstellen um ein wenig Kritik einzuholen :).
(Sollte dies nicht der richtige Ort für eine Projektvorstellung sein - sorry, konnte nichts besseres finden :>)
Hauptziel des Frameworks ist, dem Entwickler Zeit zu sparen (daher auch der Name "Riesenfaultier"). Es soll komplexe Vorgänge des alltäglichen Programmierens mit einfachen Schnittstellen zur Verfügung stellen.
Komponenten
Probleme
Wir haben ein großes Problem: Wir möchten auch eine standardisierte grafische Oberfläche benutzen. Diese muss dynamisch genug sein, damit Templates kleine Änderungen einführen können.
Unsere einzige Idee wäre derzeit HTML, da die Swing-UI nicht dynamisch genug ist. Oder irre ich mich? :>
Repository-Server
Über Repository-Server können Listen von Paketen abgerufen werden. Dabei wollen wir eine grundlegende Repository-Software ebenfalls Open Source zur Verfügung stellen. Bei der kostenpflichtigen Version ist es möglich, Pakete nicht nur anzubieten, sondern auch zu verkaufen - wobei auf eine Förderung von Open Source Projekten auf zwei Wegen geachtet wird:
1. Förderung von Open Source Projekten
Folgendes Szenario: Entwickler A entwickelt das Paket A1 und stellt dies Open Source zur Verfügung. Entwickler B entwickelt das Paket B1, welches auf A1 basiert, und möchte dieses verkaufen. Nun hat Entwickler B die natürlich Möglichkeit, Entwickler A Geld als Dank für die abgenommene Arbeit zu spenden - er kann aber seinen eigenen Gewinn auch direkt an die Abgaben an Entwickler A binden, sodass Entwickler A einen Prozentsatz des Gewinns von Entwickler B erhält.
Im Gegenzug gehen vom Gewinn von Entwickler B ein geringerer Anteil an den Betreiber des Servers ab.
2. Förderung von Sozialen Projekten
Um soziale Projekte und Ideen zu Unterstützen, können Entwickler, die ein Paket verkaufen wollen, einen zweiten Preis nennen od. das Paket für soziale Projekte kostenfrei zur Verfügung stellen. Diesen Preis müssen Leute zahlen, die die Software für soziale Projekte nutzen möchten. Dies geht nur unter Angabe einer ausgearbeiteten Projektidee (die nicht veröffentlicht wird), um sicher zu stellen, dass es sich tatsächlich um ein soziales/gesellschaftliches Projekt handelt.
Geplante Software
Wir haben aktuell folgende Software für das Projekt fest eingeplant, die auch veröffentlicht und anderen Entwicklern/Projektleitern zur Verfügung gestellt werden soll:
Und damit verabschiede ich mich auch schon. Was sagt ihr zu der Idee? Die Framework-Komponenten sind bereits umgesetzt, sie müssen lediglich noch ausgearbeitet und anschließend von mehreren Entwicklern getestet werden. Habt ihr noch Ideen, wie man das ganze verbessern könnte?
Wenn ihr nähere Infos haben wollt, dann sagt Bescheid - eine umfangreiche Dokumentation ist auch bereits in Arbeit :).
Liebe Grüße,
SargTeX
Codebeispiele
Damit ihr euch auch etwas darunter vorstellen könnt - hier einige Codebeispiele!
1. Ein Objekt erstellen
Wir wollen ein Objekt in der Datenbank hinterlegen. Oder im Dateispeicher. Dies ist einfach:
2. Ein Objekt bearbeiten (ID = 42)
3. Ein Objekt bearbeiten (Key = "meinname")
4. Ein Paket installieren
Ich habe im vergangenen dreiviertel Jahr an einem Projekt gearbeitet, aus dem langsam aber sicher sich ein Framework gebildet hat. Mittlerweile programmiert seit 2 Monaten ein Kumpel von mir, der mit mir zusammen wohnt und Informatik an der Goethe Uni studiert, ebenfalls am Projekt mit.
Da das Framework nun immer mehr Form annimmt und ich es demnächst über die Crowd-Funding-Plattform startnext.de einstellen möchte, wollte ich es hier vorstellen um ein wenig Kritik einzuholen :).
(Sollte dies nicht der richtige Ort für eine Projektvorstellung sein - sorry, konnte nichts besseres finden :>)
Hauptziel des Frameworks ist, dem Entwickler Zeit zu sparen (daher auch der Name "Riesenfaultier"). Es soll komplexe Vorgänge des alltäglichen Programmierens mit einfachen Schnittstellen zur Verfügung stellen.
Komponenten
- Paketsystem - das Framework ist komplett modularisiert und bietet als Schnittstelle für Erweiterungen eine umfangreiche Paketverwaltung an. Ein einfaches Paket besteht aus einer kurzen XML-Konfigurationsdatei sowie einer jar-Datei. Fehlende Pakete können über ein zentrales Repository nachgeladen werden oder bei der Entwicklung eines eigenen Paketes beigelegt werden.
- Speicherverwaltung - ob Daten nun im lokalen Dateispeicher, in einer Datenbank oder auf einem weit entfernten Server gespeichert werden sollen - die zentrale Speicherverwaltung übernimmt dies und bietet dem Entwickler einfache Methoden an, um Daten zwischen lokalem Speicher und entfernten Server zu synchronisieren.
- Events - das Auslösen und Abfangen von Ereignissen stellt den grundlegenden Aufgabenbereich eines Frameworks dar. Dabei darf es hier natürlich auch nicht fehlen - dank der Java-Reflect-API auch mit dynamischen Inhalten statt nur mit umständlichen Interfaces.
- Mehrsprachigkeit - übersetzt man seine Anwendung von Deutsch auf Englisch, so erreicht man mit wenig Aufwand viele neue potentielle Kunden. Doch die meisten Programme werden am Anfang nicht auf Mehrsprachigkeit ausgelegt oder die Einarbeitung mehrsprachiger Inhalte ist umständlich - hier wurde Mehrsprachigkeit als ein zentrales Konzept implementiert und steht euch von Anfang an zur Verfügung.
- Plattformunabhängigkeit - Windows, Linux oder Mac? Server, Desktop-PC oder Handy? Das Framework kann auf sämtlichen Plattformen (getestet bei Servern mittels Tomcat) ausgeliefert werden und bietet so eine unglaublich hohe Flexibilität.
- Templatesystem - Wir bauen das Templatesystem "StringTemplate" mit ein. Dadurch wird es möglich, in Sprachvariablen z.B. dynamische Inhalte einzubauen, um Grammatik (wie Ein- und Mehrzahl) anzuwenden.
- Flexibilität - Nicht nur, dass das Framework sowohl auf Servern als auch PCs läuft: Sämtliche Bibliotheken (wie z.B. StringTemplate) sind über eigene Interfaces verfügbar, sodass man später aus div. Gründen eine Bibliothek einfach austauschen kann - man muss nur die Interfaces überschreiben.
- Konfiguration - Konfigurationsdateien können einfach erstellt und verwaltet werden.
- Debugging - Ein Tool ist in Planung (Open Source), dass hilft, Fehlermeldungen mittels unterschiedlicher Level anzuzeigen bzw. auszublenden.
Probleme
Wir haben ein großes Problem: Wir möchten auch eine standardisierte grafische Oberfläche benutzen. Diese muss dynamisch genug sein, damit Templates kleine Änderungen einführen können.
Unsere einzige Idee wäre derzeit HTML, da die Swing-UI nicht dynamisch genug ist. Oder irre ich mich? :>
Repository-Server
Über Repository-Server können Listen von Paketen abgerufen werden. Dabei wollen wir eine grundlegende Repository-Software ebenfalls Open Source zur Verfügung stellen. Bei der kostenpflichtigen Version ist es möglich, Pakete nicht nur anzubieten, sondern auch zu verkaufen - wobei auf eine Förderung von Open Source Projekten auf zwei Wegen geachtet wird:
1. Förderung von Open Source Projekten
Folgendes Szenario: Entwickler A entwickelt das Paket A1 und stellt dies Open Source zur Verfügung. Entwickler B entwickelt das Paket B1, welches auf A1 basiert, und möchte dieses verkaufen. Nun hat Entwickler B die natürlich Möglichkeit, Entwickler A Geld als Dank für die abgenommene Arbeit zu spenden - er kann aber seinen eigenen Gewinn auch direkt an die Abgaben an Entwickler A binden, sodass Entwickler A einen Prozentsatz des Gewinns von Entwickler B erhält.
Im Gegenzug gehen vom Gewinn von Entwickler B ein geringerer Anteil an den Betreiber des Servers ab.
2. Förderung von Sozialen Projekten
Um soziale Projekte und Ideen zu Unterstützen, können Entwickler, die ein Paket verkaufen wollen, einen zweiten Preis nennen od. das Paket für soziale Projekte kostenfrei zur Verfügung stellen. Diesen Preis müssen Leute zahlen, die die Software für soziale Projekte nutzen möchten. Dies geht nur unter Angabe einer ausgearbeiteten Projektidee (die nicht veröffentlicht wird), um sicher zu stellen, dass es sich tatsächlich um ein soziales/gesellschaftliches Projekt handelt.
Geplante Software
Wir haben aktuell folgende Software für das Projekt fest eingeplant, die auch veröffentlicht und anderen Entwicklern/Projektleitern zur Verfügung gestellt werden soll:
- Repository-Server Frei - soll Open Source für die Betreibung eines eigenen Repository-Servers für kostenlose Pakete zur Verfügung gestellt werden
- Repository-Server kommerziell - basiert auf dem freien Repository-Server und bietet (siehe oben) diverse Funktionen für die kommerzielle Verwendung von Paketen; wird verkauft werden
- Cloud Storage Communicators - bietet eine einheitliche Schnittstelle für unterschiedliche Cloud-Storage-Anbieter (Dropbox, Google Drive, Mega) an; mögliche Verwendung: Backup von privaten Daten über die Cloud, Cloud Storage Client
- Debugging Tool - Ein OpenSource Tool, dass hilft, Fehlermeldungen anhand unterschiedlicher Fehlerlevel (schwere der Fehler) auszuwerten.
- Server Installation Tool - Ein OpenSource Tool, dass hilft, Pakete bei Server-Applikationen zu installieren und diese zu aktualisieren/installieren.
Und damit verabschiede ich mich auch schon. Was sagt ihr zu der Idee? Die Framework-Komponenten sind bereits umgesetzt, sie müssen lediglich noch ausgearbeitet und anschließend von mehreren Entwicklern getestet werden. Habt ihr noch Ideen, wie man das ganze verbessern könnte?
Wenn ihr nähere Infos haben wollt, dann sagt Bescheid - eine umfangreiche Dokumentation ist auch bereits in Arbeit :).
Liebe Grüße,
SargTeX

Codebeispiele
Damit ihr euch auch etwas darunter vorstellen könnt - hier einige Codebeispiele!
1. Ein Objekt erstellen
Wir wollen ein Objekt in der Datenbank hinterlegen. Oder im Dateispeicher. Dies ist einfach:
2. Ein Objekt bearbeiten (ID = 42)
3. Ein Objekt bearbeiten (Key = "meinname")
4. Ein Paket installieren
Quellcode
- try {
- ModuleSetup setup = new ModuleSetup("pfad/zum/modul.zip");
- setup.install();
- } catch (ModuleValidationException ex1) {
- System.err.println("Bei dem Archiv handelt es sich um kein gültiges Modul.");
- } catch (ModuleInstallationException ex) {
- System.err.println("Die Paketinstallation ist aus folgendem Grund fehlgeschlagen und wurde rückgängig gemacht: "+ex.getMessage());
- }
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von SargTeX ()