Der perfekte Zeitpunkt zum Source Code veröffentlichen?

Mit dem ASP.NET MVC Demoprojekt "Oxite" hat Microsoft viel Wirbel gemacht. Auf der einen Seite ist es sehr schön den Source Code zu veröffentlichen, auf der anderen Seite hat Microsoft auch harte Kritik von den Alpha Geeks bekommen. Sollte man ein Projekt erst dann veröffentlichen wenn es "perfekt" ist?

Weiterlesen »

HowToCode "ReadYou": Community-getriebene professionelle Applikationsentwicklung

Der Posttitel klingt schon mal recht hochgegriffen und es ist für mich auch eine Art Experiment und hoffe, dass es (früher oder später) auch Feedback gibt ;)

Was ist “ReadYou”?

Trotz des “Web 2.0″-Zeitalters mag ich immer noch Bücher – seien es Fachbücher oder andere Romane. Da ich allerdings langsam den Überblick verliere und es meiner Freundin ähnlich geht, muss eine Plattform her, wo man solche “Bücherbestände” möglichst cool und einfach managen kann (und natürlich die ganzen anderen Community-Sachen die üblich sind).
ReadYou ist daher momentan mein Projektarbeitstitel – am Ende soll unter www.readyou.de eine kleine, schicke Web 2.0 Anwendung stehen.
Das Thema ist jetzt nicht unbedingt jedermanns Sache, allerdings sind meist die “Grundzüge” einer solchen Applikation immer gleich – um ReadYou mal mit markanten Web 2.0 Schlagwörtern zu beschreiben:

image

Ganz guten würden zudem noch Blogs in diesen Kontext reinpassen – aber das ist eine andere Geschichte :)

Aha… was hat das mit uns zutun?

Ich bin ein großer Fan von Rob Conerys MVC Storefront und hab bei seinen Videos einiges gelernt:

Da ich zumeist noch das Problem bei privaten Projekten hab, dass ich irgendwann die Lust verliere, mach ich es diesmal von Anfang an “offen” für jeden – damit ich es nicht irgendwann auf meiner Platte verliere. Dabei soll nicht nur der Source-Code “offen” sein, sondern auch warum ich diese und jene Entscheidung treffe oder warum ich das Tool nehmen möchte.
Es soll eine möglichst professionelle Applikation rauskommen, welche eine möglichst robuste Architektur aufweisst, gut getestet ist und auch (das leidige Thema der Entwickler) sogar dokumentiert ist – also ein möglichst professioneller Ansatz.

Da ich natürlich kein Experte in TDD, Dokumentieren, Toolauswahl, Architektur etc. bin, ist Feedback besonders wichtig :)

Was soll das bringen?

Am Ende soll möglichst eine Art “Leitfaden” entstehen (die Applikation ist quasi das Nebenprodukt), den Anfänger ebenfalls beschreiten können – und auch verstehen, warum diese und jene Entscheidungen getroffen wurden und auch (was sicherlich passieren wird), dass manche Entscheidungen vielleicht unklug waren.
Es sollte nicht als pure deutsche Kopie von Robs Videos zu sehen sein (ich glaub nicht, dass ich so gute Screencasts überhaupt machen könnte), sondern ein Lernexperiment für jedermann – vergleichbar mit einem größeren HowTo – diesmal “HowTo code ReadYou:)

Themen/ToDo´s die ich mir vornehme:

  • Welche Anforderungen hat das System:

Anforderungsmanagement ist ein wichtiger Punkt bei einem Software-Projekt. Da ich hier allerdings selber der Kunde bin, werde ich meine Anforderungen und ungefähren Designvorstellungen selber schreiben – Abschätzungen oder ähnliches werden aber nicht gemacht ;)

  • Architekturgedanken:

Anhand dieser Anforderungen muss eine entsprechende Architektur entworfen werden – dabei werde ich mir sicherlich die eine oder andere Idee bei Rob nochmal genauer anschauen.

  • Source Control & Build:

Als Source Control ist momentan Codeplex meine erste Wahl (TFS Infrastruktur). Hierbei muss ich mal schauen, wie weit man es da treiben kann – Stichwort Continuous Integration). Builds sollten möglichst automatisch ablaufen können – daher werde ich mich an dieser Stelle MSBuild widmen. Hier bin ich mir noch etwas unsicher was Codeplex bietet und wie ich das am cleversten anstelle – aber an dem Punkt bin ich ja noch nicht ;)

  • Implementation & Tests:

Ich versuche möglichst mich nach dem TDD Mantra “Test-First” zu richten – sodass eine möglichst robuste Applikation am Ende rauskommt. Auch Themen wie Dependency Injection, MSTest als Testframework, ASP.NET MVC nehm ich mir vor.

  • Dokumentation:

Da Source-Code möglichst dokumentiert sein sollte, soll auch hier mal von Anfang an daran gedacht werden – ich probier es mal mit Sandcastle (hier & hier gibt es einen guten “Überblick” über die neusten Versionen)

Feedback

Wie bereits oben erwähnt ist Feedback natürlich sehr wichtig – wenn ich aus eurer Sicht was vergessen hab, ihr das Konzept blöde findet oder was auch immer – (konstruktive) Krtik ist immer gut ;)

Ich hoffe ich kann in den nächsten Tagen die ersten Themen/ToDo´s angehen :)

Lets have Phun…

Ich meine natürlich Phun – 2D physics sandbox:

Laut den Entwicklern wollen sie den Source Code (C++, SDL, OpenGL) auch noch veröffentlichen  – momentan wissen sie nur noch nicht die Lizenz (und nennen kein Datum).

Open Source: Coverflow für WPF Applikationen und mehr

Durch Coding4Fun wurde ich heute auf ein sehr cooles CodePlex Projekt aufmerksam: FluidKit. Mit FluidKit werden einige schicke Controls mitgeliefert, welche z.B. als “Coverflow” von Apple bekannt sind.

Da Bilder bekanntlich mehr sagen als 1000 Worte, hier mal die Demoanwendung (welche mitgeliefert wird, man muss aber manuell in der App.xaml das jeweilige Element herauspicken). Beachtet auch immer mal wieder die Schieberegler – damit kann man das Verhalten anpassen.

“CustomShapes”:

image

image

image

image

“GlassWindow”

image

“DragNDrop”

image

“ElementFlow” – “CoverFlow”

image

image

“ElementFlow” – “TimeMachine”

image

ElementFlow” – “Rollercoaster”

image

ElementFlow” – “Rolodex”

image

Fazit: Ziemlich cool (und Open Source!) :)

Hier noch der Blogeintrag vom Macher selbst (ich find sein persönlichen Kommentar drunter noch witzig ;) – wer will das nicht ;) )

ASP.NET MVC – Source Code & Builds werden auf Codeplex veröffentlicht

Wie ich gerade in Brad Brams (und in Phil Haacks) Blog gelesen habe, wird wohl der komplette Source Code demnächst auf Codeplex zu finden sein. Zwar wird das .NET Framework nach und nach ebenfalls veröffentlicht (dazu zählen alle ASP.NET Teile), allerdings wird es auf Codeplex regelmäßige ASP.NET MVC Builds (d.h. runterladen, VS starten und staunen) geben, um den Fortschritt des Projektes zu sehen.

Nebenbei wird es jedoch trotzdem noch CTPs und Betas geben.

Phil stellt zudem klar, dass dies ein Experiment von Microsoft ist und das dies ein erster Versuch ist, mehr Transparenz zu erzeugen – bin gespannt, ob dies auch bei anderen “Forschungsprojekten” Einzug hält.

.NET Source Code nun veröffentlicht!

Scott Guthrie hat im Oktober angekündigt, nach und nach alle Teile des .NET Frameworks unter die Microsoft Reference Licence zu stellen – heute nun scheint die Infrastruktur zu stehen!

Folgende Teile stehen nun zum Debuggen und Staunen zur Verfügung:

  • .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET and XML (System.Data and System.Xml)

LINQ, WCF, Workflow und co. sollen noch folgen.

Scott Guthrie hat dazu weitere Informationen.

Hinweis zur Lizenz: Die Lizenz kann man gut mit einem Satz zusammenfassen: Gucken – nicht anfassen. Es ist ein sehr guter Schritt voran, insbesondere mit der Debug-Möglichkeit. Einfach so aber Codeteile zu entnehmen entspricht nicht ganz der Lizenz

Wie kommt man nun an den Source Code bzw. was muss man bei Visual Studio einstellen?

Dafür hat Shawn Burke ein Blogeintrag verfasst: Configuring Visual Studio to Debug .NET Framework Source Code

Open Source, .NET und Microsoft

Open Source ist sicherlich eines der großen Themen 2007 gewesen und wird auch 2008 nicht minder erfolgreich sein. Wenn es allerdings um .NET geht, denken die wenigsten an Open Source. PHP, Java oder C++ sind meist die Wahlsprachen der Open Sourceler – meine Vermutung ist, dass Open Source in Verbindung mit einem Microsoft Produkt kaum vorstellbar ist.

Dass es aber tatsächlich sehr interessante Open Source .NET Projekte in den verschiedensten Bereichen gibt und sogar Microsoft langsam auf Open Source zugeht, möchte ich hier zeigen.

.NET Open Source Projekte

 Paint.NET – Fotobearbeitung

Angefangen möchte ich mit dem wohl bekanntesten .NET Programm in dieser Liste: Paint.NET

image

Paint.NET ist eines der wenigen .NET Open Source Projekte, welche auch der normale Endkunde nutzen kann.

Kommen wir nun zu den anderen – nicht Endkundentauglichen – Projekten:

SubSonic – .NET O/R Mapper für MySQL, Oracle, SQL Server

image

SubSonic ist ein sehr schickes “Toolset”, wenn es darum geht, eine Objektstruktur aus einer Datenbankstruktur zu bekommen. Auch die ganzen CRUD Befehle kann man sich hier sparen. Auf der Website gibt es auch ein guten Einstieg (mit Video) in SubSonic und die API Dokumentation. Begonnen wurde das Projekt von Rob Conery, der nun für Microsoft am ASP.NET MVC Modell arbeit.

NHibernate – .NET O/R Mapper

image 

Ähnlich wie SubSonic, ist NHibernate ein anderer O/R Mapper. Das Konzept ist hier etwas anders (per XML wird dieser konfiguriert), allerdings ist Hibernate schon lange im Java Umfeld genutzt und NHibernate die Portierung auf .NET.

CruiseControl.NET – Continous Integration Server

image

Um Builds und co. in einem Team besser im Auge zu behalten ist das Stichwort “Continuous integration” – also das automatische bauen der gesamten Solutions mit Tests etc. – sehr wichtig. CruiseControl.NET setzt hier ein und definiert sich selber als ein “Automated Continuous Integration server”

DotNetNuke – CMS

image

DotNetNuke ist eine Portierung von PHPNuke und basiert auf ASP.NET 2.0. Wie bereits PHPNuke ist dieses Projekt ein CMS für Web Portale, welches eine aktive Nutzerschaft verfügt und auch viele Module anbietet.

Subtext – Blog System

image

Subtext ist ein ASP.NET Blog System. Interessant ist aber hier, dass MySpace China eine modifizierte Version von Subtext für ihr Blogsystem nutzt.

DasBlog – Blog System

image

Ein anderes ASP.NET Blog System ist DasBlog.

DotNetKicks – Post Voting System

image

DotNetKicks ist eine Plattform ähnlich wie Digg.com. Da man solche Plattformen im Prinzip auf jedes Thema ausdehnen kann, ist es für den einen oder anderen bestimmt interessant, dass DotNetKicks Source Code offen gelegt wurde.

AForge.NET – C# Framework für Bildbearbeitung, Neuronale Netze, künstliche Intelligenz…

Das letzte Projekt hier ist etwas anders geartet – dafür aber umso interessanter. AForge.NET ist ein Framework für Bildbearbeitung/-manipulation, Neuronale Netze usw. (besser ihr lest selber nach, um was es sich dabei handelt ;) ).

Wo man sowas praktisch einsetzen kann, ist bei diesem CodeProject Artikel beschrieben: Motin Detection

Fazit

Es gibt sehr viele .NET Open Source Projekte und diese hier waren nur ein Teil davon. Interessierte Entwickler sollten sich den einen oder anderen Source Code mal anschauen.

… und wo bewegt sich Microsoft?

Vor einigen Wochen hat Scott Guthrie in seinem Blog berichtet, dass der Source Code des .NET Frameworks nach und nach veröffentlicht werden soll. Allerdings hat es Microsoft letztes Jahr wohl nicht mehr geschafft die Infrastruktur aufzubauen. In Micheals Schwarz seinem Blog wird gezeigt, was später möglich sein wird: Debug .NET Source Code.

Die Veröffentlichung ist ein großer Schritt für Microsoft. Microsoft hat dazu einige “Shared Source” Lizenzen veröffentlicht, darunter ist die “Microsoft Public Licence” auch offiziel von der OSI als Open Source Lizenz abgesegnet wurden. Mit CodePlex hat Microsoft seine eigene Open Source Project Hosting Plattform geschaffen.

Bereits im letzten Jahr hat Microsoft zudem den Source Code für die ASP.NET AJAX Extensions freigegeben.

Insgesamt scheint Microsoft langsam in die Richtung Open Source zu gehen – das es zum Teil “aus Zwang” ist, da der Markt es fordert ist die eine Seite, auf der anderen Seite findet man aber in vielen MS Mitarbeiter Blogs viel positives über den Open Source Gedanken.

Open Source, .NET und Microsoft – geht doch

Auch wenn der Firmenlenker von Microsoft desöfteren etwas abfällige Kommentare über Open Source gemacht hat (und bestimmt weiter macht), wird es wohl immer mehr Open Source in der Welt geben. In der .NET Welt gibt es schon einige gute Open Source Projekte und das Microsoft sich auch langsam für Open Source erwärmt, zeigt, dass Open Source nicht immer gegen Microsoft gerichtet sein muss.

(Die Logos die hier verwendet wurden, sind Eigentum der jeweiligen Urheber (siehe Links zu den jeweiligen Seiten).)