Text 15 Nov. 1 Anmerkung

Oh nein, das habt ihr nicht getan, oder?!

Da kann man sich noch so sehr den Mund fusselig reden, aber manche lernen es einfach nicht. Wieso gehen manche Leute nur so respektlos mit ihren eigenen Produkten um?

Text 29 Juni

Wie bereits angekündigt ist für mich wieder einmal die Zeit der Suche angebrochen. Die Suche nach einer geeigneten IDE ist nie einfach. Eine IDE ist weniger abhängig von ihrem Funktionsumfang, als vielmehr von dem Gefühl des Programmierers. Insbesondere für PHP bin ich seit rund 5 Jahren auf der Suche nach einer IDE, die mich wirklich rundum zufrieden stellt. Oder mir zumindest nicht in regelmäßigen Abständen auf die Nerven geht.

Es gibt durchaus einige IDEs für PHP. Jedoch gibt es kaum aktuelle Tests und Vergleiche dieser IDEs von Leuten, die Ihre IDE als No-Nonsense Arbeitstier sehen und nicht als hübsches Gadget. Der letzte große Test von Smashing Magazine ist inzwischen auch über ein Jahr alt. Also machte ich mich wieder auf die Suche. Dieser Post stellt meine persönlichen Erfahrungen mit den aufgelisteten IDEs dar.

Dies ist nicht meine erste Suche. Hier sind Links zu Teil 1 und Teil 2 (beide von 2008) zu finden. Insgesamt ist mir aufgefallen, dass die Qualität der IDEs seitdem stark zugenommen hat, insbesondere im Bereich OOP. Inzwischen haben die meisten IDEs zum Beispiel keine Probleme mehr mit Singletons, abstrakten Klassen oder Interfaces.

Der Test der IDEs entstand über einen längeren Zeitraum: jede IDE wurde mindestens zwei Wochen produktiv auf Live-Projekten getestet. Von kommerziellen IDEs wurde jeweils die Trial-Version getestet. Die Wahl einer IDE ist natürlich sehr subjektiv und eine Frage des persönlichen Stils. Folglich sind die Vorstellungen und gezogenen Schlüsse ebenfalls subjektiv und mit Vorsicht zu genießen.



Zend Studio (2.7, 399€, Eclipse-basiert)

Nachdem Zend Studio in Teil eins nicht besonders gut wegkam, war ich von der neuen Version angenehm überrascht. Im Gegensatz zu früher lief es stabil und kam (nach einigen Code-Anpassungen) auch mit Singletons klar. Die Code-Features wie Refactoring, Debugging und so weiter funktionierten anstandslos und direkt “out of the box”. Besonders das Code Formatting hat es mir angetan und ist gegenüber dem alten Aptana Studio und dem aktuellen PDT vorbildlich umfangreich.

Im Zusammenspiel mit dem hauseigenen Zend Server dreht Zend Studio richtig auf. Die bereits guten Debugging-Möglichkeiten werden nochmals erweitert und man vergisst fast, dass man es mit PHP zu tun hat.

Wenn der Text-Zeitraum abgelaufen ist, bleibt eine IDE auf dem Niveau von PDT zurück. Essentielle Funktionen und Tools sind noch aktiv, aber andere (wie zum Beispiel das Code Formatting oder Debugging) werden deaktiviert.

Fazit: Zend Studio hat seit seinem Erscheinen als Eclipse-Erweiterung große Fortschritte gemacht. Die Integration von Tools und Features ist logisch und stabil, die Features funktionieren ohne weiteren Aufwand. Seine Stärken spielt Zend Studio erst aus, wenn man es gemeinsam mit dem Zend Server nutzt. Nutzt man diesen nicht, lassen sich die meisten Funktionalitäten (wie z.B. Debugging, SVN, etc.) auch mit freien Eclipse-Plugins nachrüsten. Allerdings muss man dann selbst fummeln und jeder muss für sich entscheiden, ob ihm die Zeitersparnis dann 399€ wert ist. Kurz: mit Zend Server: hui! Ohne Zend Server: meh.

Plus


  • Integration von Code Quality Tools (Unit Testing, Refactoring und Code Formatting) vorbildlich

  • Sehr stabil, robuste Features

  • Großartiges Zusammenspiel mit dem Zend Server


Minus

  • 399€


JetBrains PhpStorm (1.0, 47€ - 191€, Java-basiert)

PhpStorm ist eine neue IDE, auf die mich DFox aufmerksam gemacht hat. Der schnelle Überblick über die Features sah gut aus, die Community ist recht aktiv, also warf ich gerne einen Blick darauf. Was ich sah gefiel mir auf den ersten Blick. Zudem ist es mal wieder schön mit einem ganz anderen Look & Feel zu arbeiten.

PhpStorm bringt alle Features mit, die man inzwischen von einer PHP-IDE erwarten darf: Debugging, Refactoring, Unit Tests und Code Inspection. Die Features sind allerdings abhängig vom Projekt-Typ: Eigene Klassen werden erst erkannt, wenn man das Projekt als “Neues Projekt auf lokalem Server” definiert, nicht aber, wenn man es als “Neues Projekt, lokal, ohne Server” anlegt. Nachdem man aber durch die verschiedenen Arten von Projekten durchgestiegen ist, funktioniert alles ganz gut.

Wenn man will kann man sich in stundenlangen Konfigurationsorgien austoben. So ziemlich jedes Feature kann in Tiefe und Breite angepasst werden. Besonders positiv fand ich die Möglichkeit Keymaps zu konfigurieren und so Tastaturlayouts verschiedener bekannter IDEs zu nutzen. Das machte für mich den Umstieg von Eclipse wesentlich leichter.

Etwas verwunderlich mutet hingegen die Projektverwaltung an. PhpStorm kann jeweils nur ein geöffnetes Projekt bearbeiten. Das wirkt 2010 einfach komisch. Natürlich lassen sich übergeordnete Verzeichnisse einhängen, aber Abhängigkeiten etc. sind damit nicht abbildbar. Will man gleichzeitig Framework und Anwendung bearbeiten müssen zwei Fenster genutzt werden.

Ebenso bedauerlich: die phpDoc-Beschreibung zu einer Methode ist in der Code Completion nicht zu sehen. Variablenbeschreibungen funktionieren jedoch einwandfrei.

Ein charmantes Feature fand ich die Navigation Bar, die eine Art Breadcrumb-Funktionalität darstellt. Sie zeigt immer den jeweiligen Aufenthaltsort der ausgewählte Datei an. Per Klick auf die Verzeichnisse sieht man direkt deren Inhalt und kann schnell zu benachbarten Dateien springen.

Woran ich mich immer noch nicht ganz gewöhnt habe ist der lokale Cache für Dateien. Im Grunde arbeitet PhpStorm nicht auf den “echten” Dateien des Dateisystems, sondern legt einen eigenen Cache darüber. Jede Änderung wird sofort in diesen Cache übernommen. Diese lokalen Änderungen existieren ab da als Änderungen zu den Originaldateien. Entsprechend warnt PhpStorm auch nicht, wenn man Dateien einfach schließt - beim nächsten Öffnen bedient er sich aus dem eigenen Cache und eventuell noch nicht gespeicherte Änderungen sind nach wie vor vorhanden. Das klingt charmant (und ist es auch), nur sollte man sich tunlichst abgewöhnen manuelle Updates aus dem SVN zu machen, da sonst das Dateisystem und der lokale Cache auseinander laufen. Lösung: SVN über PhpStorm verwalten klappt ganz wunderbar.

Geradezu unglaubwürdig schnell ist die projektweite Suchfunktion. Nachdem Eclipse mal gerne für eine Kaffeepause gut ist, wenn man größere Projekte durchsucht, hat man bei PhpStorm kaum Zeit die Hand nach einer Tasse auszustrecken. Schade, dass bei der Suchausgabe nur Verzeichnisse und Treffer angezeigt werden, aber nicht die dazugehörige Datei.

Ebenfalls positiv ist die gute Unterstützung für weitere Webtechnologien wie HTML, CSS, XML, JavaScript und so weiter. Wenig verwunderlich, da PhpStorm auf der WebIDE WebStorm basiert.

Obwohl die IDE erst wenige Wochen aus der Beta entwachsen ist, läuft sie stabil. Gelegentlich traten im Hintergrund Fehler auf (erkennbar durch das rote Ausrufezeichen in der unteren Bildschirmleiste), jedoch stürzte das Programm nie ab, verlor keine Daten und verhielt sich immer vorhersehbar.

Fazit: Absolut beeindruckend. Für einen Newcomer ist PhpStorm ein ganz großer Wurf. Innerhalb kurzer Zeit ist es meine Standard-IDE für Webentwicklung geworden: solide implementierte Standard-Features, ein Set von schönen Neuerungen und eine brachial schnelle Suchfunktion sorgen für bequemes entwickeln. That’s it, meine Suche ist erst einmal gelaufen. Ich kann aber verstehen, wenn sich nicht jeder auf eine völlig neue IDE einlassen will.

Plus

  • Breadcrumb-Funktion für Verzeichnisse

  • Konfigurierbarkeit Deluxe

  • Brachial schnelle Suche

  • Solide Standard-Features


Minus

  • Nur ein Projekt gleichzeitig geöffnet

  • Keine PHPDoc-Beschreibungen in der Code Completion (Siehe Kommentare)

Text 28 Okt. 1 Anmerkung

Tools sind die Freunde jedes Programmierers. Tools, die einem das Testen seines Codes oder der Applikation erleichtern erst recht. Hier meine beiden Lieblinge, ohne die ich zur Zeit verzweifeln würde.

SimpleTest - Unit Testing für PHP, LGPL

Unit Testing ist dein Freund. Ohne macht refakturieren wirklich keinen Spaß. Anfangs hatte ich versucht mich mit PHPUnit anzufreunden, aber es nervte mich einfach. SimpleTest wird seinem Namen gerecht: es ist simpel, schnell zu integrieren und kommt einem nicht in die Quere. A pro pos Integration: ein Eclipse-Plugin gibt es auch.

Selenium - Web Application Tester, Apache 2.0 Lizenz

Selenium ist eine Test-Suite, mit der man sämtliche Aktionen im Firefox aufzeichnen und später entweder als Ganzes oder Schritt für Schritt abspielen kann. Sprich: ich bin in der Lage die funktionalen Tests auf der Webseite direkt beliebig oft zu wiederholen ohne selbst Hand anzulegen.

Merke: fehlerfreie Programme sind nicht nur eine Frage der Programmierung, sondern vielmehr auch Probleme der Konzeption und Qualitätssicherung. Think, Code, Test & Repeat, Baby.

Text 6 Okt.

Die Suche geht weiter.

Auch die zweite Testrunde entstand über einen längeren Zeitraum: jede IDE wurde mindestens zwei Wochen produktiv auf Live-Projekten getestet. Von kommerziellen IDEs wurde jeweils die Trial-Version getestet. Die Wahl einer IDE ist natürlich sehr subjektiv und eine Frage des persönlichen Stils. Folglich sind die Vorstellungen und gezogenen Schlüsse ebenfalls subjektiv und mit Vorsicht zu genießen.



Microsoft Expression Web (Version 2, 358€)

Bei der Ankündigung, dass Microsoft mit der neuen Version von Expression Web tatsächlich PHP unterstützen würde, war das zu viel für mich. Mein Hirn blockierte vor lauter Vorfreude auf richtiges Intellisense, echte Data Visualizer, voll integriertes Debugging auf Microsoft-Niveau, integrierte exzellente CSS und XHTML/XML-Unterstützung. Ein Satz auf der Produktseite holte mich dann aber auf den Boden der Tatsachen zurück: “Hilfreiche Funktionen zum Entwickeln von PHP-Seiten”.

Was sind bitte “Hilfreiche Funktionen”? Nun, Expression Web kennt zwar PHP, aber lässt keine Zweifel, dass es eigentlich keine Lust auf den für Microsoft unliebsamen Konkurrenten von ASP.NET hat. Intellisense funktioniert, aber nur für standard PHP-Funktionen, nicht für eigene. Es kennt zwar globale Variablen, aber keine selbst definierten. Lokale gar nicht. Auch Klassen scheinen ihm völlig unbekannt. Was bleibt ist ein nettes Syntax Highlighting und eine großartige IDE für XHTML und CSS.

Letztendlich ist Expression Web damit auf gleichem Niveau wie Dreamweaver CS3 in Sachen PHP-Unterstützung - und das ist nicht besonders hoch. Schade eigentlich. Wäre PHP mit gleicher Konsequenz eigebunden wie ASP.NET wäre ich der erste in der Schlange, um mein Geld abzugeben, aber so viel Liebe kann man bei einem Konkurrenzprodukt wohl nicht erwarten.

Gut:


  • Großartige Unterstützung von XHTML/XML und CSS.

  • Hilfreiche Tools in der IDE.


Schlecht:

  • PHP-Unterstützung nicht für ernsthafte Entwicklung geeignet.


Aptana Studio (Community Edition, Freeware, Eclipse-basiert)

Aptana hatte ich vor einiger Zeit bereits angetestet, als die PHP-Unterstützung noch Beta war. Nunmehr ist das Aptana PHP Development Environment offiziell verfügbar. Na mal sehen.

Direkt out of the box ist das Paket jedoch aktuell eine Enttäuschung. Die PHP-Unterstützung kennt noch nicht einmal Klassen, was die IDE für professionelle PHP-Programmierer zu einem netten Syntax-Highlighter macht, aber nicht mehr.

Und dann gibt es die neuen Beta-Builds. Was nach deren Installation kommt ist dann doch eher beeindruckend: Code Completion für Klassen, Singletons, Statics und das alles sauber und aufgeräumt. Unterstützung von vielen Sprachen und Frameworks, unter anderem Spry, Ext2, jQuery, Mootools, Scriptaculous, YUI und vieles mehr. Umfangreiche Samples zu allen eben genannten Technologien. SVN-Unterstützung gibt es nahtlos durch Subclipse. Alles problemlos und schick.

Trotz des Eclipse-Unterbaus präsentierte sich Aptana Studio erstaunlich fix und genügsam. Anscheinend wurde grundsätzlich alles unnötige entfernt, um den Overhead so gering wie möglich zu halten. Falls nicht sorgt zumindest die saubere Integration der Features für ein deutlich schnelleres Arbeiten, als ich es mit PHPEclipse oder PDT hatte.

Aber einige kleine Quirks gibt es dann schon: so findet zum Beispiel die Code Completion alle Methoden einer Klasse und zeigt in der Auswahl auch die dazugehörigen Parameter mit PHPDoc-Informationen an, wählt man jedoch eine Methode aus erhält man beim Eingeben der Parameter keine weitere Hilfe. Die Parameterübersicht wird also nur bei der Auswahl der Methoden angezeigt.

Dennoch, abgesehen von so Kleinigkeiten präsentiert sich Aptana Studio (mit der aktuellen Beta-Version der PHP Extension) ausgereift und sehr benutzbar. Insbesondere die Bedienung ist sehr gelungen. Auf den ersten Blick gibt sich Aptana als 0815 Eclipse IDE, jedoch wurden subtile Toolbars und Tabs hinzugefügt, die nach kurzer Entdeckungsreise das Entwickeln sehr erleichtern.

Gut:

  • Sehr gute OOP-Unterstützung für PHP.

  • Unterstützung von vielen Frameworks und Sprachen.

  • Durchdachte Bedienung.

  • Schnell und stabil.


Schlecht:

  • Aktuell stabile Version der PHP Extension nicht wirklich benutzbar.

  • Beta ist zwar sehr fähig, hat aber noch kleinere Lücken.


Also: aktuell nutze ich zu Hause Aptana und unterwegs nach wie vor Komodo (das auf meinem eeePC einfach deutlich nutzbarer ist). Und die beiden harmonieren nicht schlecht. Ich habe kaum das Gefühl, dass mir etwas fehlen würde, wenn ich jeweils tausche. Gut sind definitiv beide, aber es fehlt das gewisse Etwas. Beide IDEs wirken noch nicht wie aus einem Guß, was wohl daran liegt, dass beide nur auf generischen IDE Frameworks aufsetzen. Aber vielleicht gibt es ja auch irgendwann mal eine IDE für PHP, die mich so umhaut wie Visual Studio in Verbindung mit C#.
Text 3 Okt.

Eigentlich habe ich bisher die zu meinen Projekten gehörenden Word-Dateien nur der Vollständigkeit und der Datensicherheit wegen in mein SVN geworfen.

Als ich eben spaßeshalber einen Diff über eine Word-Datei machen wollte, erlebte ich eine Überraschung:



Scheint so, als würde TortoiseSVN fröhlich Word 2007 als Diff-Tool benutzen. Und dieses kann das erstaunlich gut. Wieder etwas gelernt.

Hättet ihr’s gewusst?

Text 17 Juni
Seit geraumer Zeit verwende ich Axure RP Pro, zuerst in Version 4 und seit Verfügbarkeit auch die Version 5.

Es ist immer wieder ein Vergnügen, in die Gesichter der Leute aus den Fachabteilungen zu sehen, während ich mit einigen Mausklicks funktionale & gestaltete Prototypen samt grundlegender Anforderungsdokumentation erstelle.

Was mir an Axure RP fehlt, und das ist soweit das einzige (!), sind Guides. Wenn ich einen Screenshot als Background Master definiert habe, würde ich gerne mit ein paar Guides für Ordnung sorgen und mir vor allem das pixelweise Hin- und Her sparen, mit dem ich Elemente positionieren muss.


Einen Workaround (wie alle Workarounds nicht unclever, aber umständlich) habe ich in Axures Forum gefunden. Man definiere zunächst den Backgroundmaster mit dem Screenshot. Nun lege man einen weiteren Master mit den Guides an. Beide Master kann man dann auf die Seite anwenden.

Das Ergebnis ist… naja. Ihr seht es ja selbst. Abgesehen davon ist mir Axure RP richtig ans Herz gewachsen.

Da ich, wie viele Leute in unserer Branche immer auf der Suche nach dem noch besseren Tool bin (und es das eine oder andere mal auch schon selbst geschrieben habe), habe ich mir heute die Zeit genommen, und mir Demos von ein paar Produkten angesehen. Herausgestochen ist und per Download den Weg auf meinen Rechner gefunden hat dabei der Serena Composer. Anschauen!

Womit baut Ihr Eure Mock-Ups, Wireframes, Prototypen & Anforderungsdokumentation? Und sagt bitte nicht… Ihr wisst schon ;)

Update (17.06.2008): Heute gibts ein Update von Axure RP Pro 5 (5.0.0.1529). Nix großartiges, ein paar Bugfixes und Support für Firefox 3, der ebenfalls heute veröffentlicht wurde. Update Day!

Außerdem lese ich gerade, dass iRise eine Patentklage gegen Axure anstrengt. iRise hat da ein echt knackiges Patent auf “Systems and Methods for a Programming Environment for a Simulation of a Computer Application”. Das man sich gerade Axure vornimmt, hat wohl mit iRise “weltweitem” Markteintritt zu tun. Axire ist bereits länger weltweit aktiv und damit iRise größter Konkurrent. Ich wünsche iRise verdammt wenig Erfolg. Bei der IxDA gibts eine Diskussion dazu, in der iRise nicht gerade gut wegkommt.
Text 23 Apr.

Die Suche nach einer geeigneten IDE ist nie einfach. Eine IDE ist weniger abhängig von ihrem Funktionsumfang, als vielmehr von dem Gefühl des Programmierers. Insbesondere für PHP bin ich seit rund 3 Jahren auf der Suche nach einer IDE, die mich wirklich rundum zufrieden stellt. Oder mir zumindest nicht in regelmäßigen Abständen auf die Nerven geht.

Es gibt durchaus einige IDEs für PHP. Jedoch gibt es kaum aktuelle Tests und Vergleiche dieser IDEs von Leuten, die Ihre IDE als No-Nonsense Arbeitstier sehen und nicht als hübsches Gadget. Also machte ich mich auf die Suche. Dieser Post stellt meine persönlichen Erfahrungen mit den aufgelisteten IDEs dar.

Der Test der IDEs entstand über einen längeren Zeitraum: jede IDE wurde mindestens zwei Wochen produktiv auf Live-Projekten getestet. Von kommerziellen IDEs wurde jeweils die Trial-Version getestet. Die Wahl einer IDE ist natürlich sehr subjektiv und eine Frage des persönlichen Stils. Folglich sind die Vorstellungen und gezogenen Schlüsse ebenfalls subjektiv und mit Vorsicht zu genießen.



Zend PDT (Version 1.0.2, Freeware, Eclipse-basiert)

Eclipse habe ich bis vor kurzem knapp 2 Jahre als tägliche PHP IDE eingesetzt. Zunächst mit PHPEclipse und, als dieses nicht mehr weiterentwickelt wurde, mit PDT. PDT an sich wurde dabei seit den frühen Betas immer wieder angetestet und zu 0.98 im produktiven Einsatz verwendet. Ich muss sagen, dass der Charme mit einem direkt von Zend unterstützten Produkt zu arbeiten sehr verlockend ist. Zumindest verspricht dies regelmäßige Betreuung und aktuelle Dokumentation bezüglich PHP.

In der Praxis ist jedoch leider nicht alles so charmant. PDT an sich macht nach wie vor einen sehr unfertigen Eindruck. Bugs und Probleme sind eher die Regel als die Ausnahme. Beispiel: Das Code Folding läuft gerne mal Amok. Insbesondere, wenn man Schritte rückgängig macht springt der Cursor Gott weiß wohin und das Code Folding klappt wild auf und zu. Alle 2-3 Stunden (auch gerne bei STRG-Z) verschluckt sich PDT und die Datei wird unbrauchbar. Die letzten Änderungen sind weg und entweder beendet sich Eclipse oder man muss die Datei schließen und wieder öffnen.

Die Funktionalitäten die funktionieren sind manchmal bedauerlicherweise unvollständig. So zum Beispiel die Codevervollständigung. Diese funktioniert nur für lokale und globale Klassen, nicht für Singletons. Bei abgeleiteten Klassenkonstrukten kommt es gelegentlich auch zu Problemen. Gerade von Zend hätte ich hier mehr erwartet.

Da es sich um Eclipse handelt, muss man zusätzlich zu den Problemen von PDT auch die von Eclipse selbst mit in Kauf nehmen. Zum Beispiel die Behäbigkeit der IDE. Es passiert regelmäßig, dass Eclipse sich eine Ruhepause gönnt und mal eben die Projekte im Workspace neu indexiert oder für eine Suche mal eben die IDE blockiert. Und wo wir schon bei der Suche sind, diese übersieht auch mal gerne Inhalte in Dateien. Aber gut, Eclipse hat ja schließlich auch einige Vorzüge.

Ein Vorzug ist die schier enorme Menge von Erweiterungen. Es gibt alle Arten von nützlichen Helferleins, die einem das Programmieren enorm erleichtern - vorausgesetzt man findet sie.

Fazit: Es hat einen Grund, wieso ich fast zwei Jahre Eclipse im produktiven Einsatz hatte. Es ist mächtig und kann (fast) alles, was man sich vorstellen kann. Aber es hat auch einen Grund, wieso ich unzufrieden bin: es ist instabil und zuweilen arg langsam. Aus diesem Grund auch die Suche nach einer neuen IDE. Wenn ich etwas besseres finde: sehr gut. Wenn nicht, nun, dann lässt es sich zur Not mit Eclipse ganz gut leben.

Gut:


  • Direkte Unterstützung von Zend.

  • Unterstützung von externen Entwicklern im Allgemeinen.

  • Umfangreiche Erweiterungen.


Schlecht:

  • Instabil, ab und zu auch mit Datenverlust.

  • Unzuverlässige Inhaltssuche in Dateien.

  • Keine Codevervollständigung von Singleton-Objekten.

  • Zuweilen langsam.


Zend Studio Eclipse (Version 6, 356€, Eclipse-basiert)

Zend Studio ist die professionelle Version von PDT. Und um das gleich vorweg zu nehmen: es gibt keinen wirklichen Unterschied zu PDT. Na schön, es sind mehr Funktionalitäten enthalten, aber viele dieser Funktionalitäten lassen sich auch über herkömmliche Eclipse-Plugins bereitstellen - beispielsweise die SVN-Unterstützung oder (S)FTP-Transfer. Sämtliche Negativ-Punkte von PDT gelten allerdings auch für Zend Studio. Für 356€ bekommt man aber immerhin noch das “klassische” Zend-Studio dazu.

phpDesigner 2008 (Version 6.0.1.3, 39€)

Die Projektübersicht fand ich auf Anhieb seltsam: phpDesigner trennt nach Ordnern (in einem Fenster) und Dateien (in einem anderen Fenster). Wenn man nun auf einen Ordner klickt, erhält man dessen Dateien in dem Dateifenster. Dieses Prinzip ist mit von EditPlus her bekannt, aber nur weil ich es aus meinem kleinen Editor her kenne, heißt das nicht, dass ich dieses Verhalten von eine PHP-IDE erwarte. Alle anderen IDEs nutzen standardmäßig eine Baumstruktur - aus gutem Grund. Durch die Trennung von Ordnern und Dateien kann phpDesigner nicht mehrere Projekte gleichzeitig öffnen, da es keinen Root-Knoten eines Projektes gibt. Nicht schön.

Die GUI an sich ist abgesehen davon frei konfigurierbar, die Tabs lassen sich sliden, verstecken und beliebig docken. Im Gegensatz zu PhpEd aus mehrere Tabs pro Seite untereinander. Merkürdig hingegen ist die Anordnung der Datei-Tabs. Diese beginnen nämlich nicht über dem Editor-Fenster, sondern am linken Rand. Falls man also links Tool-Tabs positioniert hat, befinden sich die Datei-Tabs über den Tool-Tabs. Eher verwirrend.

Die Suche ist leider modal. Es gibt also weder Zwischenergebnisse, noch wären diese benutzbar, denn die IDE steht bei einer Suchanfrage komplett still. Ebenso unschön ist, dass man nicht nachvollziehen kann, was die Suche eigentlich gerade macht, also welche Dateien sie gerade durchsucht.

Nach Einstellungen für den Standard-Zeichensatz von Projekten sucht man vergebens. Man kann zwar den Zeichensatz global oder für einzelne Dateien festlegen, aber phpDesigner kennt nur ANSI (immerhin einstellbar), UTF8 und UTF-16.

Das kontextsensitive Syntax Highlighting ist hingegen sehr interessant. Auf Wunsch hebt phpDesigner nur die Codeblöcke hervor, die einen gemeinsamen Kontext haben. Also Beispielsweise einen Block php innerhalb eines HTML-Blocks hebt nur das PHP hervor. Wenn man im HTML-Block arbeitet wird der PHP-Block ausgegraut und das HTML hervorgehoben. Zunächst einmal nett für alte (read: obsolet, aber leider Live) Projekte, in denen noch PHP und HTML vermischt sind. phpDesigner versucht Kontexte automatisch zu erkennen und schaffte es auch Template-Definitionen von HTML zu unterscheiden und getrennt hervorzuheben, was hingegen auch aktuell noch interessant ist.

Es kann ja durchaus sein, dass manche meiner Kritikpunkte per Konfiguration abgeschwächt werden könnten. Allerdings ist die Hilfe wenig hilfreich und bestenfalls eine Gliederung zu einer richtigen IDE-Hilfe. Im Netz findet sich auch nicht viel Unterstützung zu dem Produkt. Selbst das Wiki des Herstellers bringt nicht viel bei Fragen.

phpDesigner lief die ganze Testzeit über stabil und es gab keine Abstürze oder verlorene Daten.

Fazit: Dicht dran ist auch vorbei. phpDesigner macht auf den ersten Blick einen sehr guten Eindruck und weiß auch in manchen Bereichen durchaus zu beeindrucken. Aber es sind die vielen Kleinigkeiten, die phpDesigner für mich aus dem Rennen werfen. Wer mit diesen zurechtkommt, den erwartet aber wahrscheinlich ein gutes Produkt.

Gut

  • Codevervollständigung von Singleton-Objekten.

  • Gute OOP-Unterstützung im Allgemeinen.

  • Kontextbasiertes Sytax Highlighting.


Schlecht

  • Projektbrowser geteilt nach Verzeichnissen und Dateien.

  • Nur ein Projekt gleichzeitig geöffnet.

  • Tab-Anordnung merkwürdig.

  • Modale Suche

  • Kein Standard-Zeichensatz für Projekte definierbar.

  • Die Hilfe ist eher rudimentär.


NuSphere PhpED (Version 5.2, 199$)

Auf den ersten Blick wirkt NuSphere PhpED wie Visual Studio. Zugegeben, wie ein Visual Studio mit allen GUI-Features, Icon- und Tableisten aktiviert. Für Entwickler, die es lieber puristisch mögen lässt sich die IDE entsprechend einstellen: Tabs und Leisten sind vergleichbar mit VS2005 versteckbar, lassen sich beliebig andocken und sliden.

Eins fiel mir sofort auf: die Code Inspection schaffte es tatsächlich in Singleton-Objekte hineinzusehen. Folglich bekam ich bei diesen auch sofort alle Methoden und Variablen angeboten - sogar bei überladenen Singletons. Sehr schön. Allerdings ist die Umsetzung der Codevervollständigung doch sehr merkwürdig. In der Anzeige der verfügbaren Methoden steht zunächst, ob die Methode private oder public ist. Wozu? Wenn ich ein Objekt dieser Klasse habe, sollte alles angezeigte immer public sein. Anschließend steht der Name der Klasse. Ok, sinnvoll für vergessliche Programmierer oder jene ohne vernünftigen Code Style. Für die restlichen 90% unsinnig und Platzverschwendung. Und anschließend endlich die Methodennamen. Aber sobald man eine Methode auswählt wird diese in den Code eingefügt mit geschlossenen Klammern - selbst wenn die Anzeige richtig erkannte, dass die Methode Parameter hat. Eventuelle PHPDoc-Angaben zu den Methoden und Parametern ignoriert PhpEd. Ärgerlich.

Gut gefallen hat mir hingegen die Integration von einigen nützlichen Features. Zum Beispiel der DB Client, welcher eine Übersicht von SQL-Datenbankstrukturen bietet. Die Strukturen kann man direkt in das Code-Fenster ziehen. Ähnlich schön ist ein umfangreicher Code Navigatior, -Explorer und der FTP Client. So schön in die IDE integriert sieht man das selten.

Trotz auf der Webseite angepriesener “Full Unicode”-Unterstützung hatte ich zunächst Probleme mit Umlauten. Da wurde ISO 8859-1 gerne mal mit UTF-8 verwechselt, UTF-8 für Windows 1252 gehalten und Projekte mit mehreren Zeichensätzen wild durcheinandergeworfen. Nach einer (etwas längeren) Definitions- und Einstellungssitzung funktionierte alles einwandfrei. Ich nehme an, die Probleme entstehen nicht, wenn man Projekte von vorne herein mit PhpED entwickelt.

Eine böse Überraschung erwartet jeden, der für Redo das eigentlich normale STRG-Y bemüht. Auf dieser Tastenkombination liegt nämlich das in Visual Basic übliche “Zeile löschen”. Immerhin lassen sich auch die Tastaturkürzel konfigurieren - sogar mit Profilen von bekannten IDEs.

Im Einsatz war PhpED stabil. Es gab allerdings einen Absturz, als die Projektdateien von Hand per SVN aktualisiert wurden, während die Dateien im Editor geöffnet waren. Nicht schön, aber da sich das Problem nicht wiederholte, sehe ich das als Schluckauf.

Fazit: Ich denke NuSphere PhpED ist ein gutes Produkt und seinen Preis von 199$ wert, vorrausgesetzt man kommt mit der Art von PhpED zurecht. Wie man an den vielen kleinen Nitpicks sieht, komme ich das leider nicht. Also einen Blick wert, wenn auch einen differenzierten.

Gut

  • GUI voll konfigurierbar.

  • Codevervollständigung von Singleton-Objekten.

  • Schöne Integration von nützlichen Funktionalitäten.


Schlecht

  • Umsetzung der Codevervollständigung ist nicht durchdacht.

  • Zeichensatzprobleme beim Import komplexer Projekte.

  • Tastaturkürzel in der Standardeinstellung teilweise merkwürdig.


Komodo Edit (Version 4.3, Freeware, Mozilla-basiert)

Auf den ersten und zweiten Blick gefällt mir Komodo sehr gut. Es ist schnell, praktisch und macht das was es kann sehr gut. Unglücklicherweise kann es manchmal nicht alles, was ich brauche oder erwarte. Unter anderem lassen sich die Tabs (für Projektverwaltung etc) nicht frei verschieben oder andocken. Das ist heutzutage doch schon eher ungewöhnlich, insbesondere da das Mozilla-Framework so etwas ohne Probleme unterstützen würde. Das Code Folding faltet vom öffnenden Element bis zum nächsten Token nach dem schließenden Element. Wieso nicht nur bis zum schließenden Element? Darüber hinaus: Es gibt kein Folding von Kommentar-Blöcken und kein frei definierbares Folding.

Sobald jedoch die Funktionalität von Komodo unterstützt wird, tut sie das, was man will und noch viel mehr. Die Einstellungsmöglichkeiten sind vielfältig (jedoch mangelhaft dokumentiert), die IDE an sich stabil und schnell.

Es lassen sich dank Mozilla-Grundlage Erweiterungen bauen. Viele von diesen stellen auch einige der von mir vermissten Funktionalitäten bereit, beispielsweise ein Code Outline und TODO-Übersicht.

Fazit: Ich mag Komodo Edit. Es ist von den vorgestellten IDEs diejenige, die mir am besten liegt, auch wenn ich einige Fähigkeiten schmerzlich vermisse.

Gut:

  • Komodo ist schnell. Das gilt für die Suche, als auch für Codevervollständigung, Projekt- und Dateiverwaltung und so weiter. Einzig die Syntax-Prüfung ist etwas behäbig, aber noch im Rahmen.

  • Die Macro-Funktionalitäten sind großartig und intuitiv nutzbar. Änliches gilt für die Toolbox.

  • Geringer Speicher- und CPU-Verbrauch.


Schlecht:

  • Keine frei definierbaren Tabs. Komodo hat zwar die üblichen Tabs für Projektübersicht etc, aber diese sind jeweils fest definiert.

  • Gewöhnungsbedürftiges Code Folding.

  • Die Hilfe ist eher rudimentär.

  • Eigener Code innerhalb von Singletons wird nicht erkannt. Folglich auch keine Codevervollständigung von Singleton-Objekten.

  • Für die Syntax-Prüfung von PHP wird eine PHP-Installation benötigt. Eigentlich sollte das doch integiert sein, selbst wenn wir von ActiveState reden.


Weitere Kandidaten

Neben den genannten Kandidaten wurde noch PHPEdit in der Version “2.12.8.5755-stable-2007” von Waterproof Software getestet. Der Test war jedoch nur kurz, denn es gelang mir nicht die Code Completion zu aktivieren. Weder für Variablen, noch für Funktionen, Klassen - sie wollte einfach nicht. Falls das ein versionsspezifisches Problem sein sollte, probiere ich die IDE vielleicht irgendwann noch einmal, aber so ist sie nicht zu gebrauchen.

Mit VS.Php konnte ich mich seltsamerweise nicht anfreunden, obwohl ich für Dektop-Programmierung Visual Studio sehr gerne einsetze. Komola/Jcx Software scheint sich alle Mühe gegeben zu haben PHP in Visual Studio zu integrieren, aber es funktioniert für mich einfach nicht. Ich mag VS, weil es mit simple und mächtige Werkzeuge zur Verfügung stellt, um Applikationen schnell und effizient zu programmieren. Bei PHP fehlen diese völlig. Sicher, IntelliSense ist nett mit PHP, aber kennt auch keine Singletons und greift bei einfachen Objekten auch nicht immer richtig. Insbesondere “Gehe zu Definition” versagt gerne mal. Die Suche ist modal und nicht gerade schnell, so dass VS.PHP einem gerne mal Zwangspausen verordnet, da es auch keine Möglichkeit gibt eine einmal angefangene Suche zu unterbrechen. Überhaupt reagiert VS.PHP subjektiv behäbiger als Visual Studio unter, sagen wir mal, C#. Als Pluspunkt ist die vollständig in deutsch verfügbare Oberfläche zu nennen. Kurz: ich weiß, was Visual Studio unter C++ oder C# leisten kann und bin von der Leistungsfähigkeit in Verbindung mit PHP schlichtweg enttäuscht.


PHP Studio 2008 von Cayoren Software wurde ebenfalls angetestet. Von meinem Eindruck her ist PHP Studio ein schneller, kleiner PHP-Editor, dem jedoch einige Features fehlen um ihn zu einer IDE zu machen. Zum Beispiel Remote Debugging oder Code Completion bei Klassen und Methoden. Für alle, die einen schnellen PHP-Editor ohne viel Overhead suchen kann PHP Studio aber die richtige Wahl sein.

Von Coda auf dem Mac hört man viel Gutes. Von dem was ich gesehen habe, ist es ein schneller und brutal effizienter Editor mit einem direkten Draht zu den Entwicklern. Nett, aber deshalb extra einen Mac kaufen? Eher nicht.

Finales Fazit

Die ernüchternde Nachricht (die sich jeder schon denken konnte): Es gibt sie nicht, die ideale PHP-IDE. Leider nicht einmal annähernd. Ich persönlich habe mich für Komodo Edit entschieden. Die IDE ist leistungsfähig, von jedem erweiterbar und läuft selbst auf einem eeePc noch aktzeptabel (etwas völlig undenkbares für beispielsweise Eclipse). Die von mir vermissten Features werden halbwegs durch Extensions abgedeckt. Und schließlich: ActiveState treibt Komodo Edit aktiv voran. Ebenfalls sehr erfrischend nach dem eher gemächlichen Tempo von Eclipse.

Die gute Nachricht für alle: Es gibt Auswahl. Für so ziemlich jeden Geschmack sollte etwas dabei sein, so dass jeder eine aktzeptable IDE finden sollte. Und auch wenn es keine eierlegende Wollmilchsau gibt, so ist ein bischen Auswahl nicht das schlechteste. Im Zweifel belebt Konkurrenz das Geschäft bzw. die Entwicklung und Weiterentwicklung von Lösungen.

Text 11 Dez.
An einem hakt es meistens: den Verwaltungs-Tools. Stellen wir uns folgendes vor: Ihr habt also ein MMO-Browsergame auf die Beine gestellt. Das Spiel läuft gut an, es sind bereits 2000 Spieler registriert und nun kommen täglich die Mails im Stil von: “Kannst du meinen Nicknamen ändern?”, “Spieler XY ist ein Cheater!”, “Ich habe 100 Credits verloren! Das war ein Bug!” oder auch: “Ich habe versehentlich mein Ultimatives Schwert der Verdammnis weggeworfen. Kann ich es wiederhaben?”. Mit solchen (oder ähnlichen) Anfragen muss man einfach rechnen. Und auf eins könnt ihr euch verlassen: Die Spieler werden verdammt kreativ sein,
Dinge anzustellen.

Nun, im Grunde lassen sich solche Fragen direkt auf der Datenbank beantworten. Irgendwo in ihr steckt die Wahrheit, die ihr (hoffentlich!) brav mitprotokolliert. Der Supporter (sehr wahrscheinlich ihr selbst) muss nun also in der Datenbank nachschauen: “Wo ist der Nutzer mit dem Usernamen? Aha, .. UPDATE user SET…”, “Wo ist Spieler XY? Was hat der so gemacht? SELECT * FROM …” und so weiter. Viel Arbeit, aber vor allem: sehr fehleranfällige Arbeit. Wenn bei einem einzigen UPDATE die Begrenzung vergessen wird, oder bei einem DELETE, dann sitzt man in der Patsche. Vielleicht hat man Backups, ja, aber man muss die Spielwelt komplett zurückdrehen. Und es gibt wenig, was Spieler mehr hassen, als einen Reset der Spielwelt auf einen älteren Stand. Mal abgesehen davon: man muss die ganzen Anfragen der Spieler noch einmal von vorne durchgehen.

Na gut, sagen wir, ihr seid die absoluten SQL-Gurus und euch passiert das garantiert niemals. Habt ihr das gleiche Vertrauen auch in eure anderen Supporter? Oder denkt ihr, wenn euer Spiel ein Erfolg wird, dass ihr bei 5000 Spielern noch alles alleine supporten könnt - so nebenbei, während ihr die Updates und Bugfixes programmiert und euch um das neue Affiliate-Programm bemüht? Eher nicht.

Die Lösung lautet: Tools. Schreibt euch für die alltäglichen Aufgaben eine Administrationsoberfläche, mit der ihr diese bequem ausführen könnt. Und wenn ihr die Oberfläche konzeptioniert, denkt an Zugänge für Supporter. Plant das Tool so, dass auch technisch weniger bedarfte (sprich: keine SQL-Gurus und am besten auch keine Programmierer) die Support-Anfragen bewältigen können. Beispiel:

Administrationsoberfläche Preview


Hier seht ihr einen Ausschnitt der von uns verwendeten Administrationsoberfläche für unser Framework. Wichtig ist die einfache Bedienbarkeit und vor allem, dass man mit Hilfe des Tools auch den Löwenanteil der Supportanfragen klären kann. Welches so die üblichen Anfragen sind kann man eigentlich aus dem Forum jedes beliebigen Online-Spiels entnehmen.

Im Grunde sind sich die Anfragen alle ziemlich ähnlich und entstammen aus einer dieser Kategorien:

  • Gegenstand verloren/ gelöscht: es muss nachvollziehbar sein, wer welchen Gegenstand hatte und wo er hingekommen ist. Je nach Einstellung sollten Gegenstände vom Support wiederhergestellt werden können.

  • Gegenstand “verschwunden”: Das ist eventuell eine Ausrede für oben genannte Frage, aber eventuell auch ein Hinweis auf einen Bug.

  • Spieler XY cheatet: Hat der Spieler auffällig mehr Ressourcen oder eine Ahnzahl von Ressourcen in auffällig kurzer Zeit erworben? Wenn ja: wie?

  • Benutzerdaten ändern: Einen Nutzernamen, Nicknamen etc. ändern, sofern das in der Spieloberfläche direkt nicht möglich ist.


Eine Kategorie von Supportmeldungen soll das Administrationstool allerdings nicht abdecken: Fehler im Spiel. Diese sollen immer an die jeweiligen Programmierer weitergeleitet und dort untersucht werden.

Ein Tipp noch zum Schluß: das Administrationstool sollte geschrieben werden, bevor oder spätestens während ihr das eigentliche Spiel entwickelt, auf jedenfall aber vor der Veröffentlichung. Wieso? Ganz einfach: sobald ihr einmal in der Beta-Phase seid (oder gar Release) werdet ihr schlicht und ergreifend keine Zeit mehr für ein solches Tool haben. Never ever. Ihr steht dann vor der klaren Entscheidung: das Spiel wird für X Wochen nicht weiterentwickelt, keine Bugfixes, nur nötigster Support, während ihr an dem Tool arbeitet oder einfach “irgendwie weiter machen”. Das ist in Wirklichkeit gar keine Entscheidung, denn in ersterem Fall wird euer Spiel in der Zwischenzeit auseinanderfallen.
Text 13 Juni

Von Script Artists habe ich einen Link zu einer Sammlung von Online-Tools, die das Leben eines Softwareentwicklers erleichtern. Super Sache und bestimmt noch eins, zwei Tools dabei, die ihr noch nicht kennt.

Parallel dazu bin ich auf der Suche nach Technologien, auf denen das kleine Spiel aufsetzen wird. Ich habe mich nun fast dafür entschieden, nicht das PHP-Framework meiner Firma zu nutzen, sondern etwas eigenes zu schreiben. Was die Frage des JavaScript-Frameworks angeht: mooTools sieht interessant aus. Insbesondere die Tests überzeugen mich, auch wenn es nicht das Schnellste ist, scheint es dennoch mit vielen Browsern stabil zu arbeiten. Auf jeden Fall hätte ich aber auch gerne Spry dabei, wegen seiner einfachen Art mit Datasets umzugehen. Work, work!

Text 9 Juni

Sascha hat mich auf Mindmeister aufmerksam gemacht. Mindmeister ist eine Webseite, um online Mindmaps zu erstellen. Das Ganze funktioniert sogar im Team, so dass mehrere eine Mindmap bearbeiten können. Probiert und für gut und sehr sinnvoll befunden. Einige Kleinigkeiten fehlen mir noch (sinntragende Verbindungen, frei positionierare Sub-Nodes) aber hey - kostenlos, online und teamfähig.

Zur Zeit erstelle ich mit Mindmeister gerade die Menü- bzw. Seitenstrukur von dem kleinen Spiel. Eigentlich sollte dafür das gute, alte Visio herhalten, aber die Mindmeister-Links schreibe ich einfach in das Dev-Wiki und alle, die an dem Projekt mitarbeiten haben Zugriff darauf. Daumen hoch.


Design crafted by Prashanth Kamalakanthan. Powered by Tumblr.