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 »

ASP.NET MVC Preview 5 auf Codeplex

Das ASP.NET MVC Team hat die Preview 5 nun auf Codeplex zur Verfügung gestellt.

Einige Bugs wurden entfernt und einige nette Sachen wurden mit eingebaut:

  • Helper wurden erweitert
  • ASP.NET AJAX Extensions wurden in einen anderen Namespace verschoben (damit man es später austauschen kann)
  • Controller und Filter wurden erweitert, so kann man nun noch festlegen, dass bestimmte Actions nur per GET oder POST aufgerufen werden können.

Alles interessante findet ihr auf Codeplex und in den dazugehörigen Release Notes.

Virtual Earth + Silverlight Deepzoom

Im Blog von Chris Pendleton (Virtual Earth Tech Evangelist) bin ich auf ein paar interessante Kombinationen von Silverlight und Virtual Earth gestoßen.

Genauer gesagt, geht es um die “Deepzoom” Funktionalität, hier ein (etwas ruckliges) YouTube Video:

“DeepEarth” ist gehostet auf Codeplex und kann auch hier live angeschaut werden.
Etwas cooler gemacht ist der “Silverlight Map Viewer” von IDV Solutions (allerdings ohne Source Code).

Fazit: Ziemlich cool :)
PS: Im Blog von Chris tauchte auch die Frage auf, warum MS sowas nicht selber anbietet – einfach mal die Kommentare durchlesen.

HowToCode "ReadYou": ToDo Liste managen

Gestern habe ich bei Codeplex ein “ReadYou” Projekt angelegt.
Info am Rande: Die “HowTos” sind allgemeiner gehalten – in der Kategorie “HowToCode” dreht es sich um zusammengesetze spezielle Sachen, wobei ich hier “HowTos” etc. verlinke – so ist jedenfalls momentan meine Vorstellung von diesen beiden Kategorien ;)

Um einen Überblick über die verschiedenen Tätigkeiten bei “ReadYou” zu behalten muss unbedingt eine ToDo Liste her.
Info am Rande: Ich dokumentiere dies Schritt für Schritt – sodass ich dies evtl. später auch mal unseren Azubis vermachen kann, daher auch der “low-level” Einstieg ;)

image

Ob das Feature auf Codeplex genau so genutzt wird, weiß ich natürlich nicht – da am Ende allerdings ein Team Foundation Server steckt und dort solche ToDos sich (mehr oder weniger komfortabel) als WorkItem wiedergeben lassen, werde ich dies hier auch machen :)

Codeplex: “Issue Tracker”

Mit dem Tracker kann man sehr leicht WorkItems/Issues/Features anlegen.

image

Man kann dazu viele Details mit hinzufügen:

image

Komponenten – Grobstruktur

Codeplex bietet nettes kleines Feld namens “Component”:

image

Hier können wir unsere Applikation erst mal grob strukturieren:

image

Genau diese Komponenten legen wir an:

image

Visual Studio 2008: Team Explorer Integration

Da ich natürlich nicht immer auf die Codeplex Seite die neuen ToDos anlegen möchte, geht dies auch mit dem Team Explorer. Hier sehen wir die selben Input-Felder wie auf der Website (diese Eingabemaske ist vom TFS Projekt Template abhängig) :

image

Visual Studio 2008: ToDos erstellen

Im ersten Schritt habe ich erstmal meine nächsten Schritte als WorkItem beschrieben:

image

Wie zu sehen ist, soll erstmal eine Ordnerstruktur her und wir widmen uns gleich zu beginn einem Kernelement: Das User System.

Was haben wir hier gelernt?

Überblick über ein Projekt zu behalten ist nicht ganz einfach – ein ToDo Zettel ist ganz nett, allerdings werden wir später noch herausfinden, was bei diesen WorkItems noch schick ist und warum es sich lohnt, so eine Art Kreislauf einzuhalten:

image

Schritt 1: Anforderung kommt rein
Ein Kunde (in dem Fall ich) möchte ein bestimmtes Features, z.B. sollen sich User anmelden können usw. (siehe hier).

Schritt 2: Bewerten / Aufwand abschätzen
Der Schritt ist etwas “schwammig” bei mir hier – normalerweise sollte der Entwickler an dieser stelle bereits eine ungefähre Ahnung haben, was da eigentlich gewollt ist und auch eine Ahnung haben, wie lange dies oder jenes dauert. Hier kann auch eine Konzeptionsphase sein (oder sogar sollte ;) )

Schritt 3: In entsprechende WorkItem umwandeln
Wenn das soweit ok geht (und vom Projektleiter abgesegnet wurde etc.) müssen wir die schwammigen Featurebeschreibungen in konkrete ToDos umwandeln.
Es kann auch sein, dass hier gar kein WorkItem abfällt, weil es z.B. kein Code zu schreiben gibt und auch sonst eher eine “administrative Aufgabe” ist.

Schritt 4: Implementieren
Da wir hier nach Test-Driven-Development vorgehen, wird während dieser Phase bereits ausgiebig getestet – jedenfalls wird hier alles eingebaut, was nötig ist um das zu erfüllen was gefordert ist.

Schritt 5: Testen
Hier sollte alles nochmal überprüft werden – nach dieser Phase geht es live!

Schritt 6: Ausliefern & WorkItem schließen
Wenn alles funktioniert, dass Feature fertig implementiert wurde und auch beim Kunden läuft, können wir hier das WorkItem schließen und können uns erstmal zurücklehnen :)

Da man mit den Unit-Tests in Zusammenhang mit WorkItems was schickes machen kann, wollte ich dies nochmal hervorheben.

Im nächsten Blogpost gibt es also das erste mal direkten Code zu sehen – jedenfalls werden wir das Visual Studio nicht nur zum Managen nehmen, sondern auch zu unserer eigentlichen Aufgabe zurückkehren: Coden!

HowTo: Codeplex Projekt anlegen

Für das Community-Projekt “ReadYou” habe ich nun ein Codeplex Projekt angelegt. Ich werde demnächst ein größeren ReadYou Post bringen – dies ist zur Vorbereitung :)
Das HowTo soll nur Anlaufinformationen zu dem ohnehin einfachen Registrierprozess darstellen (falls jemand anderes auch das Interesse hegt, bei Codeplex ein Projekt anzulegen) :

Nachdem wir angemeldet sind, können wir einfach auf der rechten Seite ein neues Projekt anlegen:

image

Die wichtigsten Daten angeben:

image

Den Codeplex User Agreements noch zustimmen:

image

Und da ist unser Projekt:

image

Nächster Schritt (bzw. hat man Zeit bis zum Releasen) :

Der Wahl einer Softwarelizenz. Es gibt bei Codeplex einige Open Source Lizenzen zur Auswahl, darunter die GPL, Apache Licence oder auch die MS-PL. Welche die richtige ist, ist momentan für mich auch ein Rätsel ;)

Frist: 30 Tage bis zum Löschen!

Wie bereits oben in dem Screenshot zu sehen ist, gibt es beim Anlegen eine Deadline von 30 Tagen – in dieser Zeit muss das Projekt gepublished werden (ist das überhaupt ein Wort? ;) ) – keiner mag leere Projekte, daher dieser Filter.

Wie verbinde ich mich nun mit dem Projekt?

Ich werde den TFS Team Explorer nehmen, es gibt allerdings noch andere Clients.

Interessant: Continuous Integration mit CruiseControl.NET ist es mit Codeplex möglich – siehe hier. Vielleicht ist das für später ganz interessant.

Die eigentlichen Verbindungsdetails lassen sich über den Reiter “Source Control” abrufen:

image

Das ganze tippen wir mal in unser Visual Studio über den Team Explorer ein:

image

Und siehe da – unser leeres Projekt:

image

Jetzt können wir anfangen Work Items/Source Code hochzuladen – wie genau und was da die Best Practices sind, versuche ich in ein paar HowTos bzw. einem größeren ReadYou Post zu veranschaulichen.

Weitere Informationen findet man auf der Codeplex Seite selbst.

ASP.NET MVC April CodePlex Source Push

Microsoft hat eine neue Version des MVC Frameworks auf Codeplex released.

Update: Scott Guthrie hat nun einige Zeilen zu dem neuen “Release” geschrieben – es ist nicht die MVC Preview 3, sondern eine “Preview” der “Preview” ;)

Wie bereits im Forum vom ASP.NET Team angekündigt, wurden die ActionFilter erweitert. Hier die Zusammenfassung von der Codeplex Seite:

MVC Changes Since Preview 2

  • Action methods on Controllers now by default return an ActionResult instance, instead of void.
    • This ActionResult object indicates the result from an action (a view to render, a URL to redirect to, another action/route to execute, etc).
    • Each “result” is a type that inherits from ActionResult. To render a view, return a RenderViewResult instance.
  • The RenderView(), RedirectToAction(), and Redirect() helper methods on the Controller base class now return typed ActionResult objects (which you can further manipulate or return back from action methods).
  • The RenderView() helper method can now be called without having to explicitly pass in the name of the view template you want to render.
    • When you omit the template name the RenderView() method will by default use the name of the action method to determine the view template to render.
    • So calling RenderView() with no parameters inside the About() action method is now the same as explicitly writing RenderView(’About’).
  • Introduced a new IActionFilter interface for action filters. ActionFilterAttribute implements IActionFilter.
  • Action Filters now have four methods they can implement representing four possible interception points.
    • OnActionExecuting which occurs just before the action method is called.
    • OnActionExecuted which occurs after the action method is called, but before the result is executed (aka before the view is rendered in common scenarios).
    • OnResultExecuting which occurs just before the result is executed (aka before the view is rendered in common scenarios).
    • OnResultExecuted which occurs after the result is executed (aka after the view is rendered in common scenarios).
    • NOTE: The OnResult* methods will not be called if an exception is not handled during the invoking of the OnAction* methods or the action method itself.
  • Added a MapRoute extension method (extension on RouteCollection) for use in declaring MVC routes in a simpler fashion.

NOTE: It is pretty easy to update existing Controller classes built with Preview 2 to use this new pattern (just change void to ActionResult and add a return statement in front of any RenderView or RedirectToAction helper method calls).
Routing changes since Preview 2

  • URLs may contain any literal (except for /) as a separator between URL parameters. For example, instead of {action}.{format} you can now have {action}-{format}. For more details on changes, see this post.
  • Routing is ignored for files that exist on disk by default. This can be overriden by setting the RouteTable.Routes.RouteExistingFiles property to true (it is false by default).

Was das im Detail bedeutet und was man nun alles feines machen kann, werde ich mir mal in den nächsten Tagen anschauen :)

Neues Microsoft: ASP.NET MVC @ Codeplex

Etwas "großer" Titel, allerdings scheint Microsofts "gute Seite" sich immer öfters zu zeigen.

Der Source Code für das .NET Framework ist bereits in Teilen zur Verfügung gestellt wurden (und es sollen alle anderen Teile folgen).

Den nächsten Schritt macht nun das ASP.NET Team

Im Moment arbeitet das ASP.NET Team am MVC Modell (was ich absolut genial finde und demnächst auch hier das ein oder andere dazu schreiben werde). Letzte Woche wurde angekündigt, dass regelmäßige Updates auf Codeplex zur Verfügung stehen werden – nun ist es soweit: ScottGus Blogpost.

Hier der Link zum Codeplex Projekt: ASP.NET MVC

Wie es zudem auf der Codeplex Seite zu lesen ist: Das wird vielleicht nicht das letzte Microsoft ASP.NET Projekt sein, welches auf Codeplex verfügbar ist.

Was ist daran so toll?

Bislang gibt es von Microsoft "nur" CTPs/Previews – mit diesem Schritt will das Entwicklerteam den aktuellen Stand öfters der Community verfügbar machen. Damit wird die Entwicklung in Redmond für alle Interessierten transparenter.

Schöne neue Microsoftwelt :)

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.