Archive for 2009

14 December 2009

Django better than a CMS?

Django logo

I recently had to rewrite a website I’m maintaining for a very small business: Le fil à soi. They are 3 teacher who offer courses of chinese massage, qi gong and Gestalt therapy in Bordeaux, France. The requirements for the website are quite simple:

  • presentation of the place, the people, and contact information
  • pages for all courses sorted in categories
  • automatic management of courses dates display and RSS feed generation
  • simple backend to modify courses information (should be used by the teachers, although they don’t really like computers and prefer sending me an email…)

The version I wanted to replace was a hand-made PHP website. I started it years ago when I knew little about websites technical design, so it had become really messy and complicated to maintain. I considered letting someone else maintain the website, so I needed a cleaner version.

Using a CMS: Drupal or WordPress

A CMS (Content Management System) is a platform that makes building a website easy. WordPress is particularly intended to create blogs, but there are plenty of plugins that enable to create any type of websites. Drupal is really made to build websites of any type. There are plenty of plugins too that address about every possible needs (calendar, online shop…)

The strength of these CMSs is that they manage the two parts of the website: the user part, and the administration part. The administration part gives you many simple ways to personalize and watch the user part.

I started two small prototypes using these CMSs and came to the same conclusion: none of them perfectly addresses my very simple needs.

For example for the courses dates managment: plenty of plugins do something close enough to what I want, but none do it exactly. So I will have to personnalize a plugin, probably without real documentation of the code. This plugin will then be updated (without documentation again) by its author, and I’ll have to maintain my changes again and again…

It’s the same for the theme: plenty of themes are available but I can’t seriously download and use a design without customizing it.

So I can make my very simple website using a CMS but:

  • the result will be huge, with plenty of features I won’t use (no blog, no users management needed…)
  • it will be difficult to maintain, and I will have to watch updates to the plugins I have customized
  • I will have to make regular updates when the CMS is updated, because known security flows of well-known CMSs are rapidly used by “hackers”

This is a lot of work for such a small website.

Using Django

Django isn’t really a CMS. It’s a Python framework to build websites (comparable to PHP Zend, Ruby On Rails…). So it means that you have to actually write code to use it.

The huge difference with other web frameworks is that Django has originally be developped for a news website, so content management was very important. That’s why an impressive feature is available: an automatic administration generation.

I just had to define my models (what a course is, what a teacher is, what a date, a category is). Then it was mapped to my database and the administration part was generated. I finally defined my views, that is to say the way these models are displayed to the users (with simple tools to generate RSS feeds, sitemaps…)

The advantages of this approach are:

  • the final application is very small, no useless features
  • you get exactly what you want, you haven’t to adapt to random plugins found on the Internet
  • you know perfectly what each line of code does (even if you don’t document it…)
  • the only updates you have to watch are Python and Django updates, that are rare and usually well managed

The only possible drawbacks I see:

  • There are much fewer people who are used to Python Django than people who are used to WordPress, so it will be more difficult to find maintainers (but they will be better :p)
  • Python has to be properly supported by you host. I use OVH, that supports Django only in CGI, but it’s okay for such a small website.
  • There is no WYSIWYG editor by default in Django-generated administration: this can be bad to edit articles (or courses descriptions for me). But it’s fairly easy to add TinyMCE as it’s purely javascript.

Conclusion

If you want to create a simple full-featured blog, use WordPress. If you want complicated features like an online shop, use Drupal.

But if you want to build a simple, dynamic and easy to maintain website, and coding doesn’t scare you too much, use Python Django. You will get exactly what you want, without much efforts, and the result will be very easy to maintain.

Le fil à soi website main page

Le fil à soi website main page

Le fil à soi pages administration

Le fil à soi pages administration

3 Comments »

24 September 2009

Jolicloud internship: first steps of a start-up

Jolicloud internship: first steps of a start-up

I just finished my internship at Jolicloud as part of my studies in TELECOM Bretagne. It lasted almost one year.

Jolicloud is a new start-up created by Tariq Krim (who created Netvibes) that builds an operating system adapted to netbooks and focused on the web technologies and services.

I lived from the inside the launching of a start-up: idea, research, launching of a private alpha, founding, arrival of big competitors (like Google Chome OS), hiring, beta and release roadmap… We were three at the beginning: Tariq Krim, Romain Huet and me.

Regarding development, it is an interesting challenge: transform a Linux distribution into an ergonomic and beautiful operating system based on web technologies instead of the usual Linux technologies (HTML instead of GTK, Javascript instead of C…).

We use Ruby On Rails and JQuery to develop the central web application that constitutes Jolicloud and python to make our web application communicate with the system.

First developments were focused on two things: modify Ubuntu to transform it into the Jolicloud OS, and create an applications directory like the one on the Apple iPhone, to install/remove/update applications in one click. This directory is based on APT, the technology used by Debian (and Ubuntu) to manage files on the system. And Prism has been fully integrated to put web applications (Google Docs, GMail, Facebook…) on the desktop.

The currently available version of Jolicloud is far from complete: it is just an idea of what we want to do. Developments go faster now and we have plenty of ideas I can’t talk about. Sadly I have to go back to school for my 3rd year at TELECOM Bretagne, but I hope I will still be able to participate in Jolicloud.

While Google Chrome OS will probably only allow to launch web applications, local applications can be used with Jolicloud. And Jolicloud wants to integrate all web services, not only Google ones… And Moblin isn’t really focused on the web. Personnally, I would like the Jolicloud concept on my notebook too, if the interface were adapted. So Jolicloud probably has a bright future… to be continued :)

1 Comment »

6 September 2009

The Internet in 2015: privacy in the cloud?

A lock

Saturday, September 26th 2015,

The Internet has evolved a lot in the last 5 years. In 2009, using online services meant trusting third-party services to keep your data safe. For example Facebook knew everything about your activities and your friends, Google Docs had all the documents you collaborated to, Gmail had all your emails… All these services had quite unclear terms of services. They claimed that they wouldn’t use your data in wrong ways but they used it to display targeted ads. And you could never be sure that they wouldn’t lose your data or get hacked. This trust problem made difficult to use cloud services systematically, though their advantages were becoming obvious.

Now this problem has been at least partly fixed thanks to Internet Service Providers. My situation is very common: I have a very fast and symmetrical optical fiber connection. My Freebox v8, my new Internet box, is always connected to the Internet and includes a server that hosts all my personal data and data from other members of my family. Our family computer, my personal notebook, my Jolicloud netbook and my IPhone are constantly synchronized to the hard disk of our Freebox (through our private network or through the Internet).

The server of the Freebox consists mainly of an HTTP server with a web interface, and many APIs. A web interface is available for each member of the family at http://nickname.free.fr. Mine is at http://twisterss.free.fr. It resembles a personal blog with many social features.

This URL also is the key to my digital life. It is used by many websites to access the APIs of my Freebox using OAuth. Facebook stores the messages, links, pictures and videos I share on my Freebox using these APIs. My freebox has the authorizations to access data of my friends too. They all have an unique URL like mine, giving acces to the same APIs. First Facebook didn’t want to use this architecture because it made them lose control over the data of their users, but seeing new competitors growing rapidly using this new architecture made them change their mind. Now they even have developed a proprietary plugin with a special API extension that is more rapid and makes more features available than the default one. I could install it on my freebox in one click, but I prefer the default open-source one, as I’m not really sure what the closed-source Facebook plugin does. Now the value of Facebook is in the way they sort data to show the most interesting, and in all the third-party applications available to manage one’s digital life. And they don’t have to pay for the huge servers they used to have for pictures and video uploads, as they are directly sent from the user’s server.

Google uses this architecture a lot too: it searches both in my friends’ data and on the Internet, and can even tell me when some friends made searches related to mine (if they agreed to make it public, obviously). As Facebook, they propose a proprietary plugin that indexes data more efficiently. Jolicloud uses my private server to synchronize apps and files on all my netbooks, and to propose me applications my friends like.

With this architecture, users have a much better control over their data, as it is stored on their private server, and most of the time only meta data is sent to the websites (links and descriptions for Google or Facebook…). All data is synchronized on all computers, so it can be restored if a hard disk fails. Data sharing is made much more efficient and fast as it isn’t sent to a central server. But this architecture isn’t perfect: if users install malicious plugins on their box, or if they give access to their data to any website through OAuth, then their privacy is still threatened.


This idea of the future is the Internet that I would like to use in 2015. For this to happen, we would need to find standards for the APIs that everyone accepts, and web services like Facebook would have to understand the importance of privacy. ISPs probably have interest to make this happen as they would play a much more important role on the Internet. But only users can make this happen if privacy really matters to them.

2 Comments »

11 January 2009

Let’s replace Facebook by blogs!

Many people who have blogs say that it’s their main social network. They interact with the commentators. They discover their blogs and enlarge their network of interesting blogs.

The interesting fact about blogs is that they aren’t centralized. So the blogger controls the information it publishes. Whereas in Facebook, only Facebook controls the information you publish. I think that with a few more functions and a dedicated interface, blogs could replace Facebook.

More opened an decentralized discussions

When someone starts a discussion on a blog, it would be interesting if other bloggers could continue the discussion in both their blog, and the original blog. Trackbacks are used for that now, but they are very too limited.

The best would be that your comment on the original blog transforms into a post in your blog, ande discussion would then continus simultaneously in both blogs. The audiences of both blogs would be merged and the discussions would become more interesting.

A Facebook-like administration panel

Many blogs already have a list of top commentators, a list of the most interesting blogs… But to transform a blog into a social network, we would need a list of commentators like the list of firends in Facebook.

It would be interesting too to be able to follow from the administration panel the last posts in the commentators’ blogs, like a Facebook news feed.

Plugins to manage pictures, events… would easily replace the most interesting Facebook functions. And we would have a decentralized network, where the users could control their data.

We could too imagin a platform like Wordpress.com that would allow you to create a social blog as easily as you now create a Facebook profile. Myspace or Skyblog have features that look like social blogs, but they don’t allow to host a blog on an external host, or to have decentralized discussions.

Realisation?

I’m hesitating to create a wordpress plugin and perhaps a small social blogs platform. Perhaps ideas like that already exist?

Il est évident que cette vision des blogs ne serait pas adaptée à tous les blogs : les blogs thématiques par exemple n’ont pas grand chose à voir avec les réseaux sociaux.

Obviously social blogs couldn’t completly replace all usual blogs, but only the ones focused on the blogger.

But I think blogs could be a more interesting, more open, and more secure social network than Facebook, because we could use our own host for our data.

3 Comments »

  • Welcome!

    I write on this blog about my projects, my practices and my discoveries in the domains of the internet, networks and computer science.

    Tristan, French student in TELECOM Bretagne, a "grande école" specialized in telecommunications

    Contact me Twitter Facebook

    Read more »