منبع اصلی نوشتار زیر در این لینک قرار دارد

SOCKS proxy on KDE

kdelibs < 4.7:
its not supported. to make it work, you have to install an http server (like polipo) and point kde to it.
kdelibs == 4.7:
Good news is, socks proxy \’is\’ supported. Bad news is, there\’s no UI to configure it.
To configure it,… ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

The sad state of our websites.

As you might know, kde\’s webteam is working on a complete rewrite of KDE.org.
One of main objectives is very serious attention to our applications. We have world-class applications but they have very unfancy webpages. Our objective is to fix it.
So i wanted to look around and see how other web pages are doing. I opened homepages of all free (as in free speech) applications i could. then browsed them one by one and picked the best ones.
  • Free Software\’s barely have good websites.
  • The ones that do, mostly have financial support. (Sunbird, Aptana, Firefox, Songbird).
This slideshow contains screenshots of the best Free Software websites I could find:
So i wanted to see the situation in propertiary world. I looked for mac applications and opened up their web pages.
The following slideshow contains best mac application pages i found:

This is mostly sad. Our applications are not lacking quality wise. Its just that website is considered a \’promo\’ feature and hackers usually dont have the motivation and/or skills to improve it. 

Now, looking at most good looking pages, you can simply find a pattern. Specially on the Propertiary side.

  • They honor their icons. In most of them, their icon gets the most attention. As a matter of fact, the icon is the main branding feature. Thanks to Oxygen guru\’s, we have outstanding icons for our applications. Just take a look at Konqueror\’s icon. Or Digikams. I can stare at them for 5 minutes.
  • They avoid text. Visitors dont read paragraphs. They only read headlines. Thats a fact. Deal with it. Dont fsck the page describing your features.
  • They dont teach history. It doesnt matter whats the philosophy of your project. It doesnt matter if its a fork on another project. It doesnt matter if its a KDE project or a Gnome project. It doesnt matter \’who\’ developed it. At least, none of them are priorities for your front page.
  • They barely have news. And, as a matter of fact, news will probably make your website look bad and outdated. Because you cant keep them all updated. Gnome-Do\’s webpage looks good and it has a news section. Guess what! Last news is for 2009. Is Gnome-Do dead or deprecated? I dunno. Their last news item is 2 years old.
  • Screenshot rulez! You will never buy a car without knowing how it looks. Visitors wont install your application if they dont know how it looks.
  • Forget about other pages. For casual users, you mostly have a single chance of convincing her to install your app. Thats called front page. If she hits a big geeky wall of text, she wont go any further. She\’ll close the tab.
  • They all have a big Download/Buy button. Of course. But we dont. We cannot have that. Because we dont know user\’s distribution. Or whats the package name of eg Okular on that specific distro.
(Update: For some unknown reason, slideshows dont show up in KHTML.)

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Goodies for Join the Game members

There are now some goodies available for Join the Game members.

You can embedd banners like these in your blogs and home pages, and help KDE even more!

 Please login to Join The Game\’s webpage and click on \’Widgets\’ link on menubar.

Currently we only have the above sizes available. If you want different sizes, tell me.

Non-members: We\’ve also got automatic payments (paypal). You can start your membership in only a few minutes.

KDE e.v will use your help to make sure KDE\’s infastructure continues to scale. Also, sprints and conferences are possible with your donations. 

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Recent developments on kde pages

New KDE-WWW logo.

  • New JoinTheGame website launched. Design by Nuno. It looks awesome.
  • Konqueror\’s webpage had an overhaul. It looks much better as well.
  • First KDE-WWW sprint held in Essen, Germany. I missed it, but followed it very closely.
  • Some rules set for kde subdomains. Hopefully they will prevent outdated and useless subdomains. They make kde look very bad.
  • We got a new logo! Designed by Eugene Trounev (it-s)
  • Many outdated and useless subdomains were removed.
  • New plans in place for kde.org and related websites. More on that will follow soon. VERY exciting.
  • KDE Sysadmins provided webstats for many kde webpages. We can now see which pages are in use.
  • Userbase received many improvements, specially its translation system. Userbase guys and gals are doing an incredible job over there.
  • Userbase also got a new logo, again by Eugene.

  • KDE Edu got a new logo and webpage. Its also translated into 4 languages.
  • KDE\’s blogging platform (aka kdevelopers.org) got a facelift. Looks much better now.

KDE provides high-quality software. Our job is to represent it to the world (via web). Join us and make sure we make kde webpages as good as itself.

As your first contribution you can update Kopete\’s webpage. Apperantly its getting a lot of hits, but its very very outdated. ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Konqueror\’s new webpage

One thing I learned after observing planet kde through last 3/4 years is: \’blogging brings enthusiasm\’.
Thats why I started blogging about little work I do on kde\’s webpages and it worked. After my blog post about future of kde\’s web presence, Martin Nuber (mjn) contacted us on #kde-www channel to see how he could get involved. And now:
Konqeuror has a new website.
Thanks to Martin for working on it.
And, please remember: If you have a minimal html/php knowledge, you can take care of one of many many outdated kde websites.
  • Its very easy. Its almost plain html.
  • Each website, usually takes a few days to be completely refreshed (Martin spent ~3 days working on it)
I\’d say Kopete or KDE Events webpages are both good candidates for having a new look and updated content. What do you think?

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Sprint management

A few months back, Aaron mentioned on his blog that kde needs a little web application for managing sprints, as apperantly it takes a lot of manual effort to coordinate one, at the moment.
Two months ago, while i was doing some other kde-www proj… ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Future of kde\’s web presence

Hello everyone.
You might know that we are starting to think about \’Capacity 2.0\’, aka \’the
future of kde websites\’.
Here is what we have in mind. This is pure brainstorming, although i think
many of us share the same vision.
1) Content/Logic seperation.
Currently, Capacity has no seperation between anything. Its spaghetti php
code mixed with html which containts logic, view AND data.
With Capacity 2.0, we want to have a properly written CMS which stores data in
a database. We also want an MVC approach to ease and organize development.
2) No more seperate instances for each application.
Currently, if you want a website for your application, you have to ask
sysadmins for a kde.org subdomain. You should also \’commit\’ your websites files
(as mentioned in 1st issue, content, view and logic are in simple php files) to
This approach has a BIG flaw:
Its HARD. Setting it up is hard. Updating it is hard. Changing it is hard.
Thats why there are so many outdated kde.org subdomains. Of course, some
people have an awesome attitude. For example Okular people have their website
updated, but Pino and Albert are exceptions. Most capacity based kde.org
subdomains are outdated (specially those which belong to an application)
Most KDE developers do not even have a LAMP stack installed. They checkout their
website\’s source, change some dirty html and commit. Then they refresh the
webpage to see what has changed.
We are going to create a single webapp which contains all data: One site to
rule them all.
3) Dedicated to applications.
As we said, we are going to create a single website which contains all data.
But you probably dont want your application to be \’just another page\’ of
kde.org, right? You want your (sub)domain to be dedicated to your application.
Dedicated to your application.
We are going to handle this. We want your application\’s page to be dedicated
to your application, while being a part of kde.org. we will also have
<appname>.kde.org stuff handled as well.
4) Flexibility.
Of course there is one bad thing about using a cms or something like that: You
lose flexibility. With current capacity, you can just commit your html stuff.
With new approach, you couldnt.
So, the cms will HAVE to be very much flexible to satisfy your needs.
5) Revisions.
Good thing about current setup? We can blame you. We can see what you commited
and we can YELL at you.
We dont want to lose this feature. CMS will have to track whatever, whoever,
whenever does it. And will have to be able to revert easily.
6) Multilingual. It has to be. Do i have to explain?
7) ACL\’s. Another good thing about using svn to manage websites is that we
have acl\’s to know who has access to which website. Now that we are going to
have a single site to rule them all, we need advanced ACL\’s.
8 ) Integration. It needs to interact with identity.kde.org for authentication
and user data, projects.kde.org to understand project\’s, repositories,
managers and other info. OCS and KNewStuff intergration could all be done.
Those are the core points. If you have others to add, please feel free to reply and make it happen.
Note, a rewrite is seriously needed for the ease of maintenance, so this is not necessarily about keeping the current way or not.

It is about improving the whole kde web experience.

This post is written with collaboration of Ingo Malchow and Sayak Banerjee. Special thanks to both.

ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

SVG manipulation using php and xpath

(This is not a KDE related post)
I\’ve had very little experiences with SVG manipulation on server side. So i thought i\’d better share it.
Following is a very little guide about creating a dynamic frame for your pictures. And its just supposed to show how cool stuff could be done using SVG, XPath, PHP and a SVG rendering tool, like rsvg.
You upload your family picture, it places it inside a very cool frame. Thats it.
Good thing about SVG is, you can do some real WYSIWYG. So, open your favourite svg editor, and create a cool frame.

(I suck at artistic stuff, so I borrowed the frame from this page.
Then, You should import an example picture which is supposed to be a placeholder for uploaded family photos.

To add a cool effect, i duplicated the image and stretched it a bit:

Then i added the blur effect to make it look cool and fancy.

SVG features a group feature, by which you can group a few elements togheter. We do it because later, it will allow us to transform the image painlessly.

There are many group\’s on the document. Later, we have to be able to find the one we want. So we use inkscape\’s XML editor feature and give our group (<g>) element the \’frame\’ id.

We should also fit our page to the whole frame. So we use inkscape\’s feature. Select the whole frame, then use the \’Fit page to selection\’ button inside the \’Document properties\’ dialog.

And, last, save your SVG file. Make sure you save it as plain SVG, not an inkscape SVG or any other modified SVG file.

Now save the following into an html file.

		<title>SVG photo-frame</title>
		<form action=\"show.php\" enctype=\"multipart/form-data\" method=\"post\">
			<br />
			<input type=\"file\" name=\"photo\" />
			<br />
			<br />
			<br />
			<input type=\"text\" name=\"rotate\" value=\"0\" />
			<br />
			<br />
			<br />
			<input type=\"text\" name=\"size\" value=\"100\" /> %
			<br />
			<br />
			<input type=\"submit\" value=\"Daa it Co0l!\"/>

and here is show.php file. I explain it step by step.

<?php$document=new DomDocument;$document->loadXML(file_get_contents(\'/path/to/your/svg/frame\'));

DOMDocument, is a php class for accessing DOM objects. first, we create a DOMDocument. Then, in the second line, we load our SVG file onto it.
Now, we have to replace the placeholder (in our case, Griffin\’s family) with the uploaded one.
First, we save the uploaded one as a temporary file:


Remember some html? to embedd an image, we had to do the following:

<img src=\"/path/to/image.png\"...

in SVG, it has to be done this way:

<image xlink:href=\"/path/to/image.png\"...

We currently have two placeholder <image>\’s there. the main one and the blurred one.
So we have two of the following in our page:

<image xlink:href=\"/path/to/image/we/imported/in/our/svg/editor.jpg\">

We should find <image> elements. Thats where XPath comes in.

$xpath=new DOMXpath($document);$images=$xpath->query(\'//image\');

First, we create an XPath object from our DOMDocument.
Then, in the second line, we look for all <image> tags inside the whole document.
XPath object searches through provided DOMDocument and the query results are DOMElement\’s, which are inside the DOMDocument. So by altering the results of XPath query, we are actually manipulating our $document:

foreach($imagesas$image){// Each $image is represents one <image> element.$image->setAttribute(\'xlink:href\',\'temp.png\');}

we altered $document which now contains <image> elements whom link to uploaded image, not the placeholder.
Now images are replaced. We also got some Size and Rotate stuff on input. SVG, means Scalable Vector Graphics. We should be able to resize the image as much as we want.
to resize the image, we have to use some SVG features. Remember that we grouped our frame?
A group, in SVG file, is represented by a <g> element. Our <g> has the id=\’frame\’ so we could find it easily.


Now, $group, represents our <g> element.
<g> element in svg accepts a very cool attribute named transform. we can use the transform attribute to resize the whole group, or rotate it.
Like this:

<g id=\"foo\" transform=\"scale(2) rotate(30)\">

This will scale up the group by 2 times and rotate it 30 degrees. (notice that there is no ; between transform functions)
So we should apply user\’s input to our <g>.

$group->setAttribute(\'transform\',\"scale(\".$_POST[\'size\']/100.\") rotate(\".$_POST[\'rotate\'].\")\");

(Notice that scale should be between 0 and 1 where 1 means 100%)
But its not enough. Without doing any change, our document size fits our <g>\’s size.
But when we changed our <g>\’s size, they dont fit anymore. And we have to fix it.


SVG\’s root element in and has width and height attributes.
Thats it. now we have to generate a png from our svg file.
I use the rsvg command to generate it.
usage is simple: rsvg input.svg output.png
as you see, it gets an input. so we have to save our manipulated svg file first:

exec(\'rsvg temp.svg out.png\');unlink(\'temp.png\');unlink(\'temp.svg\');?><img src=\"out.png\"/>

we save our svg file as temp.svg, then run the rsvg command to generate png file and then remove temporary files. at last, we show it.
This was just a demo. A lot more could be done using the techniques mentioned above.
And, this is the live working copy.
ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Tehran\’s 4.4 release party

On Feburary 18th, Tehran Linux Users Group gathered in Cafe Prague (a nice cafe in Tehran) to celebrate KDE SC 4.4\’s release.
We had so little time to arrange everything and there were shortcomings, but it wasnt bad after all.
We gave a piece of… ادامه مطلب

منبع اصلی نوشتار زیر در این لینک قرار دارد

Im sorry world

Today was the 30\’th anniversary of Iran hostage crisis.The Islamic Republic, as usual, prepared a rally against the former building of U.S Embassy to tell Americans how much Iranians hate them. Thats just wrong.Despite (several) official threats b… ادامه مطلب