My Universe Logo

My Universe Blog » Entries Tagged as open source

FreeBSD wird 9

Posted by Jesco Freund at Jan. 14, 2012 12:22 p.m.

Nach mehreren Monaten Beta- und RC-Testing ist es jetzt soweit: FreeBSD 9 ist offiziell da. Eigene Erfahrungen auf Produktivsystemen kann ich derzeit nicht bieten, da ich auf diesen die erste Version eines neuen Major-Zweiges grundsätzlich überspringe, aber unter VirtualBox funktioniert es ganz brauchbar.

Ein Blick in die Release Notes offenbart die wichtigsten Neuerungen:

  • Capsicum wurde (wie bereits angedeutet) Bestandteil des Basis-Systems
  • Clang und LLVM ersetzen (weitgehend) gcc als System-Compiler
  • ZFS wurde von Version 15 auf Version 28 angehoben (zpool), wodurch jetzt auch raidz3 Pools möglich sind
  • Die bisherige ATA-Implementierung wurde durch das CAM-Framework ersetzt, was auch eine Änderung der Device-Namen für Festplatten, CD-Laufwerke etc. nach sich zieht
  • bsdinstall ersetzt das in die Jahre gekommene sysinstall.

Das sind (zumindest aus meiner Sicht) erst mal die wichtigsten Neuerung, von denen einige leider nicht in den Release Notes dokumentiert sind – insbesondere die Anbindung von ATA-Devices via CAM kann zu bösen Überraschungen führen, wenn z. B. in der fstab noch auf alte Gerätenamen Bezug genommen wird.

No comments | Defined tags for this entry: FreeBSD, open source

Python IDE All Over Again

Posted by Jesco Freund at Oct. 4, 2011 6:36 p.m.

Ich weiß, zu dem Thema gibt es gefühlt mindestens tausend Blogposts – trotzdem möchte ich dazu ein paar Worte loswerden. Eine funktionierende und benutzbare Python-IDE zu bauen, scheint ungeheuer schwierig zu sein. Noch dazu eine, die unter FreeBSD ohne Einschränkungen funktioniert. Anders kann ich es mir nicht erklären, dass es Stand heute genau eine IDE gibt, die meine Anforderungen erfüllt. Dabei lassen die sich an einer Hand abzählen:

  • Syntax-Highlighting und Code Completion für Python
  • Integrierte Unterstützung für Git
  • Lauffähig unter Linux, FreeBSD und Solaris

Es gibt zwar unzählige Editoren, die Syntax-Highlighting können – an Code Completion scheitern jedoch (fast) alle Kandidaten, insbesondere an projektinternen Verweisen und Bezeichnern. Aptana's PyDev hatte ich für einige Projekte eingesetzt – allerdings funktioniert Eclipse unter FreeBSD nur bedingt, und PyDev verheddert sich regelmäßig mit import-Anweisungen. Für Projekte, die ich zwingend unter FreeBSD entwickeln und testen muss, keine gute Voraussetzung – da funktioniert jeder normale Texteditor genauso gut oder schlecht.

NetBeans war auf einem richtig guten Weg (wenn man von den Farben für's Syntax-Highlighting mal absieht), und lief auf problemlos auf allen erforderlichen Plattformen. Nur leider hat Oracle der Python-Unterstützung den Garaus gemacht – seit Version 7 gibt es keine Python-Unterstützung mehr. Zwar soll Python für NetBeans angeblich als Community-Projekt weiterleben, bisher ist von funktionierendem Code allerdings nicht viel zu sehen.

Bleiben noch KDevelop und Anjuta, wenn man den Blick mal auf die Open Source Welt beschränkt. KDevelop hat (mittlerweile) eine gute Git-Unterstützung; an Python wird jedoch noch gearbeitet (siehe Playground). Anjuta kann zwar Python und Git (wobei auch hier Code Completion noch eine ziemliche Baustelle ist), versaut Python-Projekte aber mit seiner Autotools-Sucht (was haben die bitteschön bei einem Python-Projekt zu suchen?). Außerdem zerrt Anjuta unter FreeBSD die gesamten rottigen Gnome-Ports als Abhängigkeit hinter sich her – unschön, weil oft auf Wochen das System wieder nicht aktualisiert werden kann, wenn einer dieser Ports mal wieder eine Macke hat (einer der Gründe, warum ich unter FreeBSD wieder zu KDE zurück gewechselt bin).

Für den produktiven Einsatz muss man unter'm Strich wohl sagen, dass es keine wirklich geeignete Open Source IDE gibt, die für meine Zwecke einsetzbar wäre. Aber auch bei den kommerziellen Vertretern wird es dünn: Wing und Komodo laufen nur mit ach und krach unter FreeBSD (sind aber ansonsten gute IDEs); außerdem schrecken beide mit (zu) hohen Lizenzkosten (zumindest für jemanden wie mich, der mit seinem Code keine großen Umsätze macht).

Schlussendlich arbeite ich momentan mit JetBrains PyCharm. Die IDE ist in Java geschrieben und läuft ootb unter FreeBSD. Zur Zeit gibt's auf die Lizenzen 50% Rabatt, so dass die (ohnehin recht günstige) Lizenz für mich noch erschwinglicher wurde. Optisch ist die IDE zwar nicht so ansprechend, aber die „inneren Werte“ sind recht überzeugend: Git und sogar GitHub werden unterstützt, und die Code-Indizierung ermöglicht Code Completion vom feinsten. Allerdings ist die IDE ein bisschen lahm – die Bedienung fühlt sich zäh an (das habe ich bei anderen Java-GUI-Anwendungen auch schon besser gesehen), und der Speicherverbrauch ist enorm. Damit kann ich aber leben, zumal es leider derzeit keine attraktive Alternative gibt.

No comments | Defined tags for this entry: IDE, open source, python

Fedora: Bilanz nach einem Monat

Posted by Jesco Freund at July 31, 2011 8:14 p.m.

Seit etwa einem Monat arbeite ich jetzt mit Fedora auf dem Notebook – Zeit, eine Zwischenbilanz zu ziehen. Vergleichen kann ich Fedora derzeit am besten mit Arch Linux und FreeBSD, die bei mir ebenfalls auf Desktop-Systemen in Betrieb sind.

Neben normalem Office-Kram (E-Mail, Textverarbeitung, Tabellenkalkulation) nutze ich das Notebook vor allem für diverse Internet-Aktivitäten und Software-Entwicklung. Nebenher muss das Gerät auch noch für Entertainment sorgen – sprich: Musik abspielen, und ab und zu mal ein Video zerpflücken.

Zunächst ein Wort zum Paketmanagement, bevor ich auf die einzelnen Teilbereiche eingehe: PackageKit habe ich mir ganz schnell abgewöhnt. Mag sein, dass ich durch portmaster und pacman zu lange verwöhnt wurde – ich empfinde es jedoch um Längen schmerzärmer, yum direkt auf der Kommandozeile zu nutzen.

continue reading Fedora: Bilanz nach einem Monat

No comments | Defined tags for this entry: Fedora, Linux, open source

Synctory Stepping towards Release

Posted by Jesco Freund at June 19, 2011 8:36 p.m.

Synctory (or libsynctory) is the project I'm currently spending most of my leisure time on. Basically, it implements algorightms similar to librsync. Originally, I developed libsynctory as part of a backup software project, but later decided to continue it as a separate library. The first code was written during my last summer holiday in Denmark, and since then, a lot (of the code) has changed.

Now, after almost one year of rather less steady development, libsynctory is stepping towards release maturity. Today I finally managed to commit a performance test to evaluate how fast libsynctory actually works. Though I immediately discovered a memory leak bug which is not resolved yet, the performance seems to be somewhat satisfactory for a first approach (average runtime in seconds):

+-------------+---------+---------+---------+---------+
|             | small   | big     | huge    | giant   |
+-------------+---------+---------+---------+---------+
| fingerprint |    0.01 |    6.67 |   33.94 |   67.94 |
+-------------+---------+---------+---------+---------+
| diff        |    0.04 |   31.99 |  144.99 |  303.08 |
+-------------+---------+---------+---------+---------+
| synth       |    0.02 |   14.11 |   81.01 |  152.82 |
+-------------+---------+---------+---------+---------+

The test was taken by a constant chunk size (512 bytes) for all four file sizes (0.5 MiB, 0.5 GiB, 2.5 GiB, 5.0 GiB). For me, the results illustrate two main conclusions: First, the algorithms of libsynctory seem to scale linearly with the file size (however I would have been surprised if they didn't), and secondly, bigger files require larger chunk sizes to allow a runtime-friendly processing. Therefore, I think the decision to allow individual chunk size adjustmens was a good one.

The way forward seems to be clear by now – some bugs to fix, some man pages to write, and then I'll hopefully be able to produce a first release of libsynctory. As (almost) always in open source projects, any help is appreciated, particularly I am looking for testers on Linux and OpenSolaris. So if you have some spare time, don't hesitate to contact me!

No comments | Defined tags for this entry: development, open source, synctory

Qt Creator mit CMake

Posted by Jesco Freund at March 27, 2011 5:42 p.m.

Auch C-Programmierer schätzen Komfort – mir jedenfalls geht es so. Warum sollte ich meinen Code mit vi schreiben, wenn es auch bequemer geht? So zahlreich die IDEs mittlerweile auch sind – für meine Bedürfnisse war bisher nur wenig brauchbares darunter. Sicher, Eclipse CDT ist eine passable Entwicklungsumgebung, auch NetBeans ließe sich benutzen. Aber die Java-Schwergewichte (und mittlerweile de-facto-Standards im IDE-Umfeld) sind nicht für Projekte ausgelegt, die CMake als Build System verwenden. Selbiges gilt übrigens auch für Anjuta – hier liegt der Fokus klar auf den GNU Autotools.

Interessanterweise kommen aus der Qt-Ecke zwei IDEs, die mit CMake recht gut zusammen arbeiten. Da wäre zum einen KDevelop 4. Leider ist Version 4 noch etwas wackelig, und auch die Zusammenarbeit mit Versionskontrollsystemen läuft noch nicht so ganz rund – mit Subversion klappt's einigermaßen, mit Git so lala und Mercurial wird derzeit gar nicht unterstützt. Schade eigentlich, denn die CMake-Unterstützung ist wirklich exzellent; die Mouse-Over Dokumentationseinblendungen sind wirklich der Hammer und machen auch CMake-Neulingen den Einstieg sehr leicht.

Im Bewusstsein der meisten C-Programmierer spielt Nokia's Qt Creator eine eher untergeordnete Rolle – dabei kann die recht schlank geratene IDE viel mehr, als nur C++-Code mit Qt zu verleimen. Die Editor-Komponente kann selbstverständlich auch mit „normalen“ ANSI C Code- und Headerdateien umgehen. CMake anstelle von qmake wird ebenfalls unterstützt, auch wenn das nicht auf den ersten Blick ersichtlich ist. Da keine Projekt-Templates für CMake mitgeliefert werden, bleiben zwei Möglichkeiten: Entweder von Hand ein CMake-Projekt im Dateisystem anlegen und dieses einfach öffnen, oder eigene Templates bauen.

Genau letzteres habe ich jetzt getan, damit ich nicht mehr so häufig zwischen Shell und IDE hin- und herhüpfen muss. Wer mag, kann sich die Templates gerne herunterladen. Die Datei muss nach /usr/local/share/qtcreator/templates/wizards/ entpackt werden (unter Linux kann der Prefix verändert sein, dann wäre es /usr/share/…). Beim nächsten Start der IDE steht dann eine neue Kategorie CMake Projects zur Verfügung. 100%ig perfekt sind die Templates noch nicht; das ausführbare Binary findet Qt Creator noch nicht ohne Hilfe – eine Kleinigkeit, die sich IMHO aber verschmerzen lässt.

No comments | Defined tags for this entry: development, IDE, open source, Qt Creator

YAR specification feature freeze

Posted by Jesco Freund at Feb. 5, 2011 12:12 a.m.

Today, I froze the design for the YAR container format. Trunk has been branched to 1.0-STABLE. The compiled 1.0-STABLE documentation is available at docs.yarutils.org.

The current state now incorporates all features considered relevant for the 1.0 release. At a short glance, these are:

  • Recoverable index for both, fast access and robustness
  • Secure hashes (no path to attack symmetric encryption)
  • Electronic signatures

This list is far from being complete – just have a look at the specification or the issue tracker. The next two weeks will be dedicated to finalizing the documentation, i. e. tracking down unclear expressions, typos etc. and filling the index and glossary.

No comments | Defined tags for this entry: backtory, development, open source, yar

FreeBSD: 8.2 kommt näher

Posted by Jesco Freund at Jan. 30, 2011 3:38 p.m.

Der aktuelle Release Candidate (RC2) hatte noch einige Fehler, die einen dritten Release Candidate notwendig machten. Im Subversion-Repository liegt bereits RC3 vor. Per csup gezogener Code weist sich selbst als 8.2-RC3 aus (siehe newvers.sh). Mit der offiziellen Ankündigung des RC3 ist also jederzeit zu rechnen.

No comments | Defined tags for this entry: FreeBSD, open source

Die Zukunft von MySQL

Posted by Jesco Freund at Nov. 7, 2010 1:40 p.m.

Mit der Übernahme von Sun begann Oracle, sich wie der Elefant im Open Source Porzellan-Laden zu benehmen. Zuerst traf es die gerade von Sun erst aufgebaute Entwickler-Platform Kenai, und vor kurzem wurde auch das Schicksal von OpenSolaris wohl endgültig besiegelt. Jetzt also auch noch MySQL – zumindest laut eines Berichts bei Heise.

Bevor jetzt alle losrennen und Zetermordio schreien, empfehle ich erst mal einen kühlen Blick auf die Faktenlage. Oracle hebt die Preise für die bisher bestehenden kommerziellen MySQL-Produkte an und schränkt deren Funktionsumfang teilweise erheblich ein (Storage-Engines, Cluster-Fähigkeit). Dieser Schritt ist zwar höchst ärgerlich für Bestandskunden, aber kurzes Nachdenken macht ihn erklärbar. MySQL in technischer Vollausstattung (InnoDB, Replikation, NDB) wildert im unteren Segment der Oracle Database, und das zu deutlich günstigeren Preisen.

Für zahlende Kunden wird es damit attraktiver, über alternative Optionen nachzudenken. Eine wäre, als Software-Basis auf die MySQL Community Edition zu setzen (über deren weiteres Schicksal sich Oracle allerdings noch nicht explizit geäußert hat) und sich den Support von dritter Seite zu kaufen. Sollte Oracle irgendwann den Zugang zur Community Edition ebenfalls einschränken, könnte auf MariaDB ausgewichen werden – so bliebe einem eine komplexe Migration zu einem komplett anderen Datenbank-Produkt erspart.

Der echte Schaden könnte aber tatsächlich in der Community Edition entstehen. Mit seinen bisherigen Entscheidungen hat Oracle bereits deutlich bewiesen, dass diesem Laden in puncto Open Source nicht zu trauen ist. Mich persönlich würde es nicht wundern, wenn die Community Edition über kurz oder lang ebenfalls nur noch eingeschränkt verfügbar sein wird, ähnlich OpenSolaris. Im Bereich Open Source Entwicklung hat Oracle in meinen Augen bereits einen irreparablen Schaden angerichtet – ich werde mich jedenfalls bei meinen Projekten künftig auf andere relationale Datenbanksysteme stützen, bei denen ich für die Zukunft einigermaßen sicher sein kann, dass sie weiterhin frei und im Quelltext verfügbar sein werden.

2 comments | Defined tags for this entry: MySQL, open source, Oracle, PostgreSQL

Oracle takes first actions at Sun

Posted by Jesco Freund at Feb. 2, 2010 10:07 p.m.

… and closes Sun's open source project hosting site, Project Kenai (see this blog entry for details). I do not yet know how to take this, given the fact that the above-mentionned announcement promises that shutting down kenai.com is only one step towards consolidation of project hosting sites among Oracle and Sun. On the one hand, I can understand that running several project hosting platforms does not exactly meet the notion of “efficiency”. On the other hand, taking a look at java.net, the competing (and longer-existing) hosting platform with focus on Java projects, I must try very hard not to vomit over my keyboard (and who tells me that java.net won't be the next site being “consolidated” by the Oracle management?)

Following this discussion, many current Kenai users will move their projects to hosting platforms outside the Oracle/Sun scope. However, it seems to be very hard to find and appropriate replacement, given that Kenai offered a nice bundle of features: JIRA or Bugzilla for issue tracking, Subversion, Mercurial or Git for source code management plus wikis, mailing lists and chat rooms to communicate. The only other hosting platform I know offering the same range of professional development tools is Sourceforge. However, I personally would not start new projects or migrate existing ones to Sourceforge, for a couple of reasons (speed of SCM repositories is abysmal, the same goes for the web frontend, configuring a project is a real nightmare consuming more time than writing the code, access from every country defined as “axis of evil” has been blocked, etc. …)

Being right fed up with bad news concerning project hosting platforms, I decided to create my own one – at least for my own projects. For that purpose, I intend to revive my projects.my-universe.com subdomain, kick Redmine and replace it with one Trac instance per project. Additionally, I'll finish configuring my Mercurial server and live happily ever after.

Update :-P I did it! The Mercurial server is running at http://hg.my-universe.com/ (but there aren't any repositories yet). It runs Lighttpd and Mercurial is served via FastCGI. If you'd like to know how I did this, you can read it up since I wrote a small how-to in the RootForum Wiki (German).

No comments | Defined tags for this entry: development, open source, project hosting, rant

NetBeans IDE for Python

Posted by Jesco Freund at April 5, 2009 12:45 p.m.

/assets/user/jfreund/img/png/thumb/128x128/nb_editing.png

Python ist für mich eine der besten, wenn nicht sogar die beste und produktivste Programmiersprache überhaupt. Allerdings fehlt mir bisher für Python eine IDE, welche die Entwicklung mit Python genauso gut und mächtig unterstützt, wie etwa Eclipse oder Sun Studio dies für Java oder C++ tun. Für Windows gibt es mit der Wing IDE eine brauchbare (kommerzielle) Lösung; im FOSS-Bereich blieb bislang nur Pydev. Pydev ist zwar besser als ein einfacher Editor, aber alles andere als das gelbe vom Ei: Funktionen, die Pydev wirklich mächtig machen (etwa Code Completeion), sind nur in der kommerziellen Erweiterung Pydev Extensions enthalten, und auch sonst macht das Projekt in letzter Zeit eher den Eindruck, ein Lockangebot für kommerzielle Produkte von Aptana zu sein.

Seit einiger Zeit brodelt es allerdings in der NetBeans-Projektküche: Dort verfolgt man das ehrgeizige Ziel, nicht weniger als „the best integrated tool for programming in Python“ zu schaffen. Seit Anfang des Jahres steht eine Early Access Version der NetBeans IDE for Python (basierend auf NetBeans 6.5) zum Download bereit, und mit eben jener habe ich nun ein wenig herumgespielt. Sowohl unter Solaris 10 (Sparc) als auch FreeBSD 7.1 (i386) lässt sich die EA-Version problemlos „installieren“: während für Solaris tatsächlich ein Installer existiert, müssen sich FreeBSD-Nutzer mit dem „OS Independent ZIP“ begnügen, was aber auch kein Drama ist – einfach an eine beliebige Stelle im Dateisystem entpacken und bin/netbeans ausführen. Hierfür wird eine funktionierende Java-Umgebung vorausgesetzt – unter Solaris natürlich kein Thema, und unter FreeBSD funktioniert NetBeans einwandfrei mit dem Diablo JDK 1.6 aus den Ports.

Auch wenn der Swing-Look von NetBeans insgesamt etwas weniger gefällig ist als die SWT-Erscheinung von Eclipse, so braucht sich die EA-Version keinesfalls hinter dem etablierten Konkurrenten verstecken. Die Projektverwaltung ist mit Eclipse auf Augenhöhe, und auch der Klassen- und Funktionsbrowser ist recht ähnlich aufgebaut. Ebenfalls typisch für eine „große“ IDE ist die Aufgabenverwaltung und eine Werkzeugsammlung für Refactoring. Besonders punkten kann NetBeans gegenüber Pydev durch den integrierten Debugger inklusive Performance-Messwerkzeugen, eine Python-Konsole und Code Completion in der Editor-Komponente. Als besonderes Bonbon unterstützt NetBeans neben den klassischen VC-Systemen CVS und Subversion auch Mercurial – bei einer Python-IDE eigentlich naheliegend…

Natürlich hat NetBeans auch einige Schwächen, die an dieser Stelle nicht verschwiegen werden sollen: So nervt etwa die hohe Affinität zu Jython – an manchen Stellen muss man NetBeans schon mit sanfter Gewalt dazu überreden, auf den nativen Python-Interpreter zurückzugreifen. A propos Interpreter: NetBeans ließ sich mit keinem Trick dazu überreden, Python 3.0 in die Liste der verfügbaren Python-Plattformen aufzunehmen. Gerade für die Entwicklung neuer Projekte ist das schade, da es sich bei diesen besonders anbietet, von vornherein auf die neue Python-Generation zu setzen.

Alles in allem halte ich aber diesen ersten Wurf für bereits sehr gelungen und dem Platzhirsch Pydev mindestens ebenbürtig, in einigen Punkten sogar für deutlich überlegen. Man darf also auf die weitere Entwicklung gespannt sein…

No comments | Defined tags for this entry: Eclipse, FreeBSD, IDE, NetBeans, open source, programming, python, scm, Solaris

Page 1 of 2 next page »