tag:blogger.com,1999:blog-33560902677449644602024-03-06T07:57:08.918+01:00Chris DanielKrzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-3356090267744964460.post-25257778343826529432015-10-15T21:39:00.000+02:002015-10-15T21:39:32.822+02:00Is there a place for another IoT device?It was brought to my attention recently that Mozilla has preparing to launch a new IoT named CHIRIMEN:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://static.tumblr.com/gnnibwa/l7pnmfo8h/chirimen_2.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://static.tumblr.com/gnnibwa/l7pnmfo8h/chirimen_2.gif" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">CHIRIMEN (<i>source : http://mozopenhard.mozillafactory.org</i>)</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
Chirimen is controlled by Firefox OS, which means that application are webpages (consisting of html/css/javascript) and hardware bindings are exposed via javascript binding through the gecko engine. The board above is controlled by this code (copied from http://mozopenhard.mozillafactory.org/):</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="hljs-doctype" style="box-sizing: border-box; color: #999999; font-family: monospace; font-size: 13px; font-weight: bold; line-height: 19.5px; white-space: pre;"><!doctype html></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">html</span> <span class="hljs-attribute" style="box-sizing: border-box; color: teal;">lang</span>=<span class="hljs-value" style="box-sizing: border-box; color: #dd1144;">"en"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: teal;">dir</span>=<span class="hljs-value" style="box-sizing: border-box; color: #dd1144;">"ltr"</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">head</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">title</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">CHIRIMEN example - Led</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">title</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">script</span> <span class="hljs-attribute" style="box-sizing: border-box; color: teal;">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: #dd1144;">"text/javascript"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: teal;">src</span>=<span class="hljs-value" style="box-sizing: border-box; color: #dd1144;">"gpio.js"</span>></span><span class="undefined" style="box-sizing: border-box; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">script</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">script</span> <span class="hljs-attribute" style="box-sizing: border-box; color: teal;">type</span>=<span class="hljs-value" style="box-sizing: border-box; color: #dd1144;">"text/javascript"</span>></span><span class="javascript" style="box-sizing: border-box; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
<span class="hljs-keyword" style="box-sizing: border-box; font-weight: bold;">var</span> v = <span class="hljs-number" style="box-sizing: border-box; color: teal;">0</span>;
GPIO.getPort(<span class="hljs-number" style="box-sizing: border-box; color: teal;">196</span>).then(
<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: bold;">function</span><span class="hljs-params" style="box-sizing: border-box;">(port)</span> </span>{
setInterval(toggleLight, <span class="hljs-number" style="box-sizing: border-box; color: teal;">1000</span>, port);
}
);
<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box; color: #990000; font-weight: bold;">toggleLight</span><span class="hljs-params" style="box-sizing: border-box;">(port)</span></span>{
v = v ? <span class="hljs-number" style="box-sizing: border-box; color: teal;">0</span> : <span class="hljs-number" style="box-sizing: border-box; color: teal;">1</span>;
port.write(v);
}
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">script</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">head</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><<span class="hljs-title" style="box-sizing: border-box;">body</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">body</span>></span><span style="background-color: #f8f8f8; color: #333333; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;">
</span><span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"></<span class="hljs-title" style="box-sizing: border-box;">html</span>></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="hljs-tag" style="box-sizing: border-box; color: navy; font-family: monospace; font-size: 13px; line-height: 19.5px; white-space: pre;"><br /></span></div>
Such an approach has some advantages - f.e. it is deadly easy to write an application for such a thing if you are a web developer or full stack developer, and you do not need to be familiar with Linux/Android nor electronics. The entry barrier seems to be incredibly low.<div>
<br /></div>
<div>
I do not know whether Chirimen will be successful, but I still find it to be a very good project for the Mozilla Foundation. Actually, one of the best bets for future.</div>
<div>
<br /></div>
<div>
You may be not following this, but the Firefox browser is in a decline:</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Usage_share_of_web_browsers_(Source_StatCounter).svg/500px-Usage_share_of_web_browsers_(Source_StatCounter).svg.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Usage_share_of_web_browsers_(Source_StatCounter).svg/500px-Usage_share_of_web_browsers_(Source_StatCounter).svg.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Firefox marketshare decline by Daniel Cardenas (Wikipedia)</td></tr>
</tbody></table>
<div>
This is a big problem, because Mozilla is commited to openness and privacy protection, and therefore it cannot monetize user data. Oh, and it does not have a big company behind it earning money elsewhere.</div>
<div>
<br /></div>
<div>
What is more, competitive browsers are installed on handheld devices because those browser owners successfully promoted mobile operating systems. Firefox cannot innovate fast enough to win user base (all innovations can be easily copied) by Chrome/Safari/Edge.</div>
<div>
<br /></div>
<div>
If this trend continues, Mozilla will cease to exist in 2020.</div>
<div>
<br /></div>
<div>
So Mozilla needs to find a new market. Desktop is lost, mobile is lost (Firefox OS was too late to the market).</div>
<div>
<br /></div>
<div>
But IoT looks attractive. It still has not reached mass production (because it is still to expensive). The breakthrough will happen when someone will be able to deliver to the market devices so cheap it will be possible to put them everywhere (I think it is < 1$ price point).</div>
<div>
<br /></div>
<div>
Nobody can tell when it will happen exactly (as innovation is unpredictable). But it may happen relatively soon (before 2020). IoT in every home, in every piece of clothing or even pens. Gazillions of devices.</div>
<div>
<br /></div>
<div>
Now imagine that Mozilla earns 5% of market right now. Or even 1%. 1% of gazillion is still a huge potential. This is the true reason why I find this device to be a good move. Mozilla needs to do three things:</div>
<div>
<ul>
<li>work on this product with users and improve it constantly</li>
<li>survive 5 years and build know how</li>
<li>when < 1$ IoT device enters the market, attack it with full speed.</li>
</ul>
<div>
I would be very careful with saying that the IoT market is full. Chirimen may have a lot more sense that it appears to.</div>
</div>
<div>
<br /></div>
<div>
Disclaimer: It is a strong opinion, weakly held. I'd love to be at Mozilla right now and have my analysis verified.</div>
Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com1tag:blogger.com,1999:blog-3356090267744964460.post-1146227076319817732015-04-27T17:45:00.000+02:002015-04-27T17:45:02.246+02:00Call 4 papers - where is an open source app?I was recently submitting a number of conference proposal related to my current area of interest, and one thing that struck me was the lack of a rock-solid, easy to use call-4-paper application.<br />
<br />
Each time I wanted to propose a talk to a conference I had to create a profile, confirm e-mail address, provide a lot of details and only then I was allowed to fill actual talk details.<br />
<br />
"Don't reinvent the wheel!" they say.<br />
<br />
So, why, WHY each conference organizers decide to write their OWN c4p application? That makes no sense.<br />
<br />
The internet proposal submission is no longer a feature that will distinguish your conference.<br />
<br />
That's why I am starting my <a href="https://github.com/cdaniel/c4p" target="_blank">new, open source application for accepting conference talks</a>. It will not be fancy, but it will work.<br />
<br />
Clone it, run it, modify it, USE it.<br />
<br />
Contribute if you wish.<br />
<br />
<br />
<br />
<br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-8842759634150426752014-08-23T19:05:00.000+02:002014-08-23T19:05:14.611+02:00How to render image serverside using OpenShift Node.js?Hey everyone,<br />
<br />
Leaving a developer world in favor of non-coding job has certain advantages.<br />
And one big disadvantage - no more coding. That is a big problem and I lasted about 6 months before I started created something after hours - just for my pleasure.<br />
<br />
Things have changed significantly since I was studying. Back then it was a big problem (especially for a poor student) to rent a server and static IP address. And today, with the presence of <a href="http://www.weebly.com/link/aN61pd" target="_blank">Weebly</a> and <a href="https://www.openshift.com/" target="_blank">Openshift</a> (a really great Platform As A Service) you can get up your small portal (<a href="http://www.wardleymaps.com/" target="_blank">like mine</a>) in less than a couple of hourse and 100$.<br />
<br />
Openshift provides a great array of technologies - I have chosen Node.js + MongoDB as it offers the quickest route to a working app.<br />
<br />
One big problem I had was that I wanted to render images server side. This is not trivial as there is no javascript libraries that could do that. One can rely only on native software, but if you consider semi-automated PaaS and customer server-side solution, you will feel the pain.<br />
<br />
So I'm sharing with you my setup, as I got it working - it renders images using node.js canvas module, that uses underlying Cairo library. <br />
<br />
Installing Cairo on OpenShift gear is not so simple - it is necessary to build cairo manually:<br />
<br />
<pre class="brush: bash; ruler: true;">export PATH=/sbin:$PATH
export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib/pkgconfig
cd $OPENSHIFT_DATA_DIR
curl -L http://sourceforge.net/projects/libpng/files/libpng15/1.5.18/libpng-1.5.18.tar.xz/download -o libpng.tar.xz
tar -Jxf libpng.tar.xz && cd libpng-1.5.18/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz -o jpegsrc.tar.gz
tar -zxf jpegsrc.tar.gz && cd jpeg-8d/
./configure --disable-dependency-tracking --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
curl http://www.cairographics.org/releases/pixman-0.28.2.tar.gz -o pixman.tar.gz
tar -zxf pixman.tar.gz && cd pixman-0.28.2/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
curl http://public.p-knowledge.co.jp/Savannah-nongnu-mirror//freetype/freetype-2.4.11.tar.gz -o freetype.tar.gz
tar -zxf freetype.tar.gz && cd freetype-2.4.11/
./configure --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
cd $OPENSHIFT_DATA_DIR
curl http://cairographics.org/releases/cairo-1.12.14.tar.xz -o cairo.tar.xz
tar -xJf cairo.tar.xz && cd cairo-1.12.14/
./configure --disable-dependency-tracking --without-x --prefix=$OPENSHIFT_DATA_DIR/usr/local
make
make install
</pre>
<br />
After that it is necessary to hack package.json file - it cannot contain canvas in it, as paths are wrong, and canvas will never discover cairo in non-standard location. Canvas has to be installed using build hook:<br />
<br />
<pre class="brush: bash; ruler: true;">export PATH=/sbin:$PATH
export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib:/opt/rh/nodejs010/root/usr/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$OPENSHIFT_DATA_DIR/usr/local/lib/pkgconfig
cd $OPENSHIFT_REPO_DIR
scl enable nodejs010 v8314 'npm install canvas'
</pre>
<br />
And a really dirty hack. OpenShift tends to cache installed modules, which is a bit of a problem, because when scripts are restored, they know nothing about where the cairo is installed. This simple pre_build hook is reverse engineered from the OpenShift code - I remove cached modules, and therefore force canvas installation by my script.<br />
<br />
<pre class="brush: bash; ruler: true;">rm -rf "${OPENSHIFT_NODEJS_DIR}/tmp/saved.node_modules"
</pre>
<br />
I hope this will help someone trying to run canvas module in OpenShift - it took a couple of long hours to figure out what is going on.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com7tag:blogger.com,1999:blog-3356090267744964460.post-64098343557106940992013-12-18T12:30:00.003+01:002013-12-18T12:30:57.780+01:00P2 - retrospectionMy work towards getting P2-RPM integration is leaning towards an end. Patches are in gerrit, <a href="https://git.eclipse.org/r/#/c/19799/" target="_blank">here</a> and <a href="https://git.eclipse.org/r/#/c/19800/" target="_blank">here</a>. While Eclipse with the patches is being built, I have plenty of time to think.<br />
<br />
I've been with P2 since it was announced at EclipseCon 2008 in Santa Clara. It's hard to remember how crowded was the room, but I remember my sheer enthusiasm to the idea of solving the satisfiability problem, and runnig the optimal set of bundles.<br />
<br />
Little had I know how much influence it will have on me. But P2, and especially dropins, were supposed to be my daily bread for the next couple of years.<br />
<br />
Then I changed the job, hoping for something new, but P2 did not let me to forget. Fedora turned out to rely on dropins (because there was *no* alternative). I tried to change Fedora, but was confronted with 20+ years of Linux releng, and got really convinced that P2 could have been quite different.<br />
<br />
So, how the P2 could have look like now?<br />
The core P2 functionality, responsible for installing things, should *not* be running in JVM. Java itself is not granted on every computer, and it has plenty of dependencies (at least on Linux), which makes it very unwanted member of the installer stack. Not to mention that it adds size to the installer, which is really important in the case of corporate setups and people using modems. Another problem is that P2 running in JVM cannot update that JVM because of locking. Not to mention the lack of elevated privileges support.<br />
<br />
I can easily imagine P2 being a native, embeddable processing library that would rather work take the state of a system, the request, and respond with steps leading to another state, but without really touching anything, but just letting the installer to deal with file operations.<br />
<br />
I'd be the first to work on it to integrate it fully into RPM and make it responsible for the whole Linux installation - not just Eclipse.<br />
<br />
Disclaimer: Don't be afraid. Those are only my thougths, which (un)luckily I'm not able to materialize without making many people upset.<br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-89373627739627535982013-10-25T15:17:00.001+02:002013-10-25T15:17:14.042+02:00Google Talk plugin presence breaks Eclipse in Fedora 20.This is the kind of news I really hate to announce, and at the same time, this is the reason why I'm addicted to open source. With open-source I could report it. Investigate it, or even workaround it. But the only thing I can do with a binary plugin is to remove it.<br />
<br />
<b>Symptoms:</b><br />
Eclipse 4.3.1 in Fedora 20 crashes shortly after content assist or javadoc is shown. ABRT discovers a crash.<br />
<br />
<b>Reason:</b><br />
Both content assist and javadoc are browser-based. Google Talk plugin interferes with webkit/SWT, and in the end JVM crashes.<br />
<br />
<b>Workaround:</b><br />
Remove Google Talk plugin. <br />
<pre class="brush:shell">yum -y remove google-talkplugin </pre>
<br />
<a name='more'></a><br />
Unfortunately, the generated core dump is not traceable :<br />
<pre class="brush:shell">Caused by: sun.jvm.hotspot.debugger.UnmappedAddressException: 7fd109daea4c</pre>
<br />
Also, gdb analysis is not very helpful due to the missing debug information of googletalk-plugin:<br />
<br />
<pre class="brush:shell">(gdb) bt
#0 0x00007fd101435834 in ?? ()
#1 0x00000000fb405748 in ?? ()
#2 0x00007fd1055e7000 in ?? ()
#3 0x0000000000000007 in ?? ()
#4 0x00007fd100000001 in ?? ()
#5 0x00007fd1051b5a20 in ?? ()
#6 0x0000000000000000 in ?? ()
</pre>
<br />
Anyone knowing a right contact at google - please help! This situation doesn't serve well anyone.<br />
<br />
Side comment: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=420030" target="_blank">Eclipse is slowly stopping working on Linux</a>.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com13tag:blogger.com,1999:blog-3356090267744964460.post-67463259541221589012013-10-24T09:32:00.003+02:002013-10-24T09:33:23.974+02:00Enabling Tycho tests for P2 - lessons learnedToday's morning, after turning on Eclipse, I got this notification:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG-QgviBDbdBiJIJfwpyM2Sra2tTAOhstjbi7JF8bwRXhH5cPZbIor3OSwDAxA_POKKhOtYlRpz2KnZJWNlNDACKlwwLIjpvoRnj7vsbqyaIZlcKXc4sz1KD8VWfgQHmhMSeMVkMKlqQ8/s1600/Notification.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG-QgviBDbdBiJIJfwpyM2Sra2tTAOhstjbi7JF8bwRXhH5cPZbIor3OSwDAxA_POKKhOtYlRpz2KnZJWNlNDACKlwwLIjpvoRnj7vsbqyaIZlcKXc4sz1KD8VWfgQHmhMSeMVkMKlqQ8/s1600/Notification.png" /></a></div>
<br />
I find it to be a big step forward (at least to me), because from now on, all P2 patches pushed to gerrit will be automatically verified in a quite reasonable time - more or less 2 hours - yes, that's the time that is necessary to run the build and execute all P2 tests.<br />
<br />
However, the road to the green build was a rather bumpy one - here is the list of issues that may impact more people doing the migration:<br />
<br />
<b>Issue #1 - Error code 23.</b><br />
<br />
First reported as <i><span style="font-family: inherit;"><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=415489"><b>Bug 415489</b></a></span> -</i><span id="summary_alias_container"><i>
</i><span id="short_desc_nonedit_display"><i>tycho-surefire occasionally fails with unexpected return code 23</i>. Then after investigation - duplicate opened by me:</span></span><br />
<i><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=417430"><b>Bug 417430</b></a> -</i><span id="summary_alias_container"><i>
</i><span id="short_desc_nonedit_display"><i>tycho-eclipserun may interfere with tycho-surefire OSGi runtime</i>.</span></span><br />
<br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Symptoms:</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Tycho builds stops with an unexpected error code 23. The build is not failed, it just exits.</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Cause:</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Tycho occasionally assembles and spins Equinox instances, if it is necessary to run OSGi-based tooling during the build. But in one place, Equinox was refusing to start, and was returning error code 23, demanding to be restarted. The sequence that lead to this was pretty simple:</span></span><br />
<ul>
<li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Tycho assembled and run Equinox instance based on Kepler versions to generate API description</span></span></li>
<li><span id="summary_alias_container"><span id="short_desc_nonedit_display">a bit later, tycho assembled and run another Equinox instance based on Luna-Nightly to run tests, but the configuration directory was not cleaned, so Equinox thought an update was happening, and demanded a restart.</span></span></li>
</ul>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Solutions:</span></span><br />
<ul>
<li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Update to Tycho 0.19.0 - the issue has been fixed there</span></span></li>
<li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Change tycho surefire configuration area to avoid collision with api builder:</span></span><pre class="brush:xml"><work>${project.build.directory}/surefireconf</work></pre>
</li>
</ul>
<br />
<b>Issue #2 - Different naming schemas.</b><br />
<br />
One of the tests was failing all the time, returning doubled number of artifacts in a generated P2 repository (expected:3, was:6). What happened was that P2 was copying bundles from a running application, and this Surefire application was using different naming scheme: Regular Eclipse apps use following convention: bundleId<b>_</b>version.qualifier.jar, but Tycho Surefire uses bundleId<b>-</b>version.qualifier.jar. Of course, P2 processed those files properly, and generated valid repo, just the test input was wrong.<br />
<br />
<b>Issue #3 - Circular dependencies.</b><br />
<br />
P2 Tests, to run properly, require platform specific filesystem bundles. The only way to add those bundles to Surefire is to add parent feature - and since we are building P2, parent feature (org.eclipse.platform) would be resolved from an update site. Well, almost. The parent feature happened to include one bundle from the reactor (org.eclipse.update.configurator I think). So, almost everything was resolved from the update site, except this one bundle, which came from the reactor, and didn't satisfy feature requirements due to the changed version. <br />
<br />
The workaround was to use java.io.File api (luckily this is all about test case preparation).<br />
<br />
Some discussion concerning this issue seems to be happening in<i> <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=419201"><b>Bug 419201</b></a> -</i><span id="summary_alias_container"><i>
<span id="short_desc_nonedit_display">"mvn clean verify -Pbuild-individual-bundles" fails for Platform Compare</span></i>.</span><br />
<br />
<b>Side note:</b><br />
<span id="summary_alias_container">There is an ongoing effort to enable running tests during the build for particular components, under the umbrella </span><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=416904"><b><i>Bug 416904</i></b></a><i> -</i><span id="summary_alias_container"><i>
</i><span id="short_desc_nonedit_display"><i>Allow to run tests with tycho-surefire-plugin</i>. "In order to lower entry barrier and execution of unit tests [...]".</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">Best regards,</span></span>Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com3tag:blogger.com,1999:blog-3356090267744964460.post-42027207266033009192013-10-21T12:48:00.001+02:002013-10-21T12:48:10.318+02:00Rediscovering Mylyn (Builds)I always have a mixed feelings when I try to write anything about Mylyn. It's just impossible to cover all its greatness it in one blogpost, and the fact that it is written as an Eclipse add-on is not helping much in promoting it amongst my linux readers (it's all because of this joke:<br />
<blockquote class="twitter-tweet">
"Knock Knock"
"Who's there?"
Silence for 5 seconds
"Java."<br />
— Kieran Palmer (@spiderdj96) <a href="https://twitter.com/spiderdj96/statuses/270120592823422977">November 18, 2012</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
But let's try. First of all, Mylyn is an excellent tool to keep all your bugs in one place, which is very useful for me, as I very often jump between projects and need to switch between different areas quite fast:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIfOTDEjHyS9W19qX9TauT9OjdZnrzVkPibP1vPCet8u8Z0KmFhwrRuOL_kgRyB1D7srJh7mUl5T0D7rofaowcPBHAq5zdEjGpkQ0SopNnT3A4cQ-53vZt31zPFrKk5rJcv22SlnW62ik/s1600/Mylyn-tasklist.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIfOTDEjHyS9W19qX9TauT9OjdZnrzVkPibP1vPCet8u8Z0KmFhwrRuOL_kgRyB1D7srJh7mUl5T0D7rofaowcPBHAq5zdEjGpkQ0SopNnT3A4cQ-53vZt31zPFrKk5rJcv22SlnW62ik/s320/Mylyn-tasklist.png" width="283" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Mylyn Task list - bugs from different sources in one place</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
But that's just a tip of the ice berg. The true power of Mylyn is 'context' management. What is a context? Well, it's a set of files you are working with, and Mylyn's ability to track which files are important for certain bug is hard to overestimate when you get a comment like:<br />
<blockquote class="tr_bq">
Can you include a "description.txt" file (or similar) that describes how to rebuild them, in case it is required in the future?</blockquote>
<br />The context is just one click-away - the only thing you need is to activate your task by clicking the ball next to it:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSBXMrwlo_Bwh5l_xtMO1-WEe2HQVv3Ggla7r_mtIrQL1UBvtovQ8K9iNzLDnsNskszHzcIpj7BDcj6t0jRL6DOYj_kpvF4AV9JrlDE2NGM5X9wasrawktWNm0lUBOtmoBM9POYd9PW2Q/s1600/Mylyn-context-tasks.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="51" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSBXMrwlo_Bwh5l_xtMO1-WEe2HQVv3Ggla7r_mtIrQL1UBvtovQ8K9iNzLDnsNskszHzcIpj7BDcj6t0jRL6DOYj_kpvF4AV9JrlDE2NGM5X9wasrawktWNm0lUBOtmoBM9POYd9PW2Q/s320/Mylyn-context-tasks.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">An active task, a task without context, and an inactive task with recorded context.</td></tr>
</tbody></table>
So now we go to the main Mylyn functionality, that really let's the entire Eclipse shine - just compare the next two screenshots:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE5e_nfiOdAV4055H32bMn3T4FXyiFKD_erc45j56035rRHsyYcR-qYfGOemy8rsFaBkr9QObE0n-5y173qtIHEY47-Wza47zdtmzNbDCSjFzq5et21HmKyq_guO29LNii1atTVBw2vH8/s1600/Mylyn-contextscreenshot2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE5e_nfiOdAV4055H32bMn3T4FXyiFKD_erc45j56035rRHsyYcR-qYfGOemy8rsFaBkr9QObE0n-5y173qtIHEY47-Wza47zdtmzNbDCSjFzq5et21HmKyq_guO29LNii1atTVBw2vH8/s400/Mylyn-contextscreenshot2.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_TQKHWu11hW0hMFikAQvUICLBqCBvXT19okXL1fbRCQJ0foLw-0HAgaU2r0sn6euBoC3M1ryvOGY33pL3deBAmzdfjczfG_d8Lce4bvpTKLj3Uz5WJYaSb-qpIlwmjpzjh4Znxdu2dnE/s1600/Mylyn-contextSwitching1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_TQKHWu11hW0hMFikAQvUICLBqCBvXT19okXL1fbRCQJ0foLw-0HAgaU2r0sn6euBoC3M1ryvOGY33pL3deBAmzdfjczfG_d8Lce4bvpTKLj3Uz5WJYaSb-qpIlwmjpzjh4Znxdu2dnE/s400/Mylyn-contextSwitching1.png" width="400" /></a></div>
<br />
Have you noticed which files are presented in the 'Package Explorer' view? Yes, that's those I really need! No clutter, no list scrolling! One click and you're back to task that you've left a week ago!<br />
<br />
But even that's not all. If you have Continuous Integration running on Jenkins/Hudson, you may connect your Eclipse to it, and get this lovely view of your jobs:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUug4gGtG1fzwU9klu35_5ibVUP3w43hcPurgZ7F7tr1Wh2CIjC7n8NHdljN-fxSBFiLce8HmQxFIrH-BHF_FaKthyH7-VlUKkK0APcRxZfwOWEdq_8KLNIKvqV3IGuex0EUnMTo4fTuY/s1600/Mylyn-Builds.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUug4gGtG1fzwU9klu35_5ibVUP3w43hcPurgZ7F7tr1Wh2CIjC7n8NHdljN-fxSBFiLce8HmQxFIrH-BHF_FaKthyH7-VlUKkK0APcRxZfwOWEdq_8KLNIKvqV3IGuex0EUnMTo4fTuY/s400/Mylyn-Builds.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Builds view. Notifications included. No more page refreshing.</td></tr>
</tbody></table>
Can you see the small JUnit action? Guess what does it do :). Yes, you are right - it opens tests in a JUnit view:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioFZQ_yoPrQT8dnKv5tn-rD_cMOcV91VdG3fiBWbJNEB0psXwCdAh0mJz6iz04uAb5BDUlaJkFjzX6x_3MxCSCc7By8aqA-hc5paVmIG6HDlPM85QyQdm_taG-675nt-9NlqPqUwoHdAs/s1600/BuildsJUnit.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioFZQ_yoPrQT8dnKv5tn-rD_cMOcV91VdG3fiBWbJNEB0psXwCdAh0mJz6iz04uAb5BDUlaJkFjzX6x_3MxCSCc7By8aqA-hc5paVmIG6HDlPM85QyQdm_taG-675nt-9NlqPqUwoHdAs/s320/BuildsJUnit.png" width="209" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Jenkins/Hudson build test result loaded into Eclipse.</td></tr>
</tbody></table>
And now - once you double click the stack trace - Eclipse will open a file for you - no grepping, finding, searching - everything loaded into your really Integrated Development Environment!<br />
<br />
Of course - this is just a small part of Mylyn functionality, this is just what appeals to me most in my daily work. But managers will be happy, too, with all the project-tracking functionality, integrated via <a href="http://open-services.net/" target="_blank">OSLC</a>, and really powerful tools (out of scope for this blog).<br />
<br />
Quick instructions how to install Mylyn in Fedora (packaged by me): <br/>
<pre class="brush:bash">sudo yum install eclipse-mylyn</pre>
Pretty simple - and really worth to try out!Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-31080052360400776852013-08-01T09:24:00.001+02:002013-08-01T09:24:23.088+02:00Why it is worth to build open source software.Sometimes people ask me why I always want to build everything from source, and my answer is always that I have to do it because of the <a href="http://fedoraproject.org/wiki/Packaging:Guidelines#No_inclusion_of_pre-built_binaries_or_libraries" target="_blank">Fedora policy</a>, which states two reasons:<br />
<blockquote class="tr_bq">
<ul>
<li> Security: Pre-packaged program binaries and program libraries
not built from the source code could contain parts that are malicious,
dangerous, or just broken. Also, these are functionally impossible to
patch.
</li>
<li> Compiler Flags: Pre-packaged program binaries and program
libraries not built from the source code were probably not compiled with
standard Fedora compiler flags for security and optimization.
</li>
</ul>
</blockquote>
But it is not all. Open Source definition is a very broad definition, and some software packages may not be usable at all without proprietary, closed and well-controlled companions. In that light, building from source is the ultimate indicator whether a software creator really gives you the right to build (and, what's more important, to patch) his/her code.<br />
<br />
This post was inspired by <a href="https://lists.fedoraproject.org/pipermail/java-devel/2013-May/004816.html" target="_blank">this answer</a> on fedora-java.<br />
<br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com1tag:blogger.com,1999:blog-3356090267744964460.post-63052785652688169302013-06-28T09:42:00.003+02:002013-06-28T09:43:12.464+02:00Kepler retrospection - was CBI a net loss?While I was reading <a href="http://wiki.eclipse.org/Eclipse/Kepler_Retrospective" target="_blank">Kepler retrospective notes</a>, I found this statement:<br />
<blockquote class="tr_bq">
CBI was a net loss for us so far. It was a very large volume of work just to get our build back to its old
state. There is benefit for others in the community to make it easier
for them to run builds independently. For committers it hasn't delivered
value yet.
</blockquote>
and started immediately wondering who was the "us", and why it was "a net loss".<br />
<br />
Fedora had it's own Eclipse build system, which was 8 x faster than current CBI build (15 minutes vs 2 hours on non-SSD drive). I've spent a lot of time getting Eclipse built with Fedora and switched to CBI before the Foundation did.<br />
<br />
All that was (and still is) a cost, but was it really "a loss"?<br />
<br />
I find it rather as a first step towards a really necessary move - Eclipse Foundation taking responsibility on development. The build system is first, then maybe we will get vendor-neutral architects or UX designers.<br />
<br />
Another point is that once it is possible to easily rebuild Eclipse, we can see even right now internal Eclipse teams appearing here and there, which tend to become really valuable contributors.<br />
<br />
Not to mention that after Kim left, it took about a month to get builds running again (at the Eclipse Foundation, we had them running in Fedora). Is it ok to have so much power depending on one person (because that is what happens if you have a large ant-based build)?<br />
<br />
I'm sorry but I can't agree with a "net loss". It was a necessary cost. Good for the Eclipse Foundation. Good for the Eclipse.<br />
<br />
BTW. I really hope some day UX designers or architects will be hired by Eclipse Foundation.<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com4tag:blogger.com,1999:blog-3356090267744964460.post-6538034650572761722013-06-24T11:39:00.002+02:002013-06-24T11:42:40.716+02:00Cascaded builds - solution or a problem?Fedora 19 consists out of approx <a href="https://admin.fedoraproject.org/pkgdb/collections/" target="_blank">14000 of packages</a>. Could you imagine a situation, where a security fix for one basic package (let's say kernel) would cause a need for the 14000 packages rebuild*?<br />
<br />
It sounds strange.<br />
<br />
On the other hand, it is perfectly normal in the Eclipse world. Let's imagine that I want to put a new EMF into my Eclipse platform. So I need to build EMF, and put it into Eclipse (a.k.a. rebuild platform with proper update sites). The whole process takes quite some time, but that's not that important.<br />
<br />
If EMF had any dependencies, I'd have to rebuild them first.<br />
<br />
So I've started investigating how to automate those tasks. And this is an answer I've received:<br />
<blockquote class="tr_bq">
<span style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #2e3436; display: inline !important; float: none; font-family: 'Droid Sans Mono'; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">[...] From my<span class="Apple-converted-space"> </span></span><span style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #2e3436; display: inline !important; float: none; font-family: 'Droid Sans Mono'; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">point of view, these Java module frameworks refuse to acknowledge that<span class="Apple-converted-space"> </span></span><span style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #2e3436; display: inline !important; float: none; font-family: 'Droid Sans Mono'; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">there is extensive experience with distro-level release engineering.<span class="Apple-converted-space"> </span></span><span style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #2e3436; display: inline !important; float: none; font-family: 'Droid Sans Mono'; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">(Basically, exact dependencies and multiple versions of the same code<span class="Apple-converted-space"> </span></span><span style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: #2e3436; display: inline !important; float: none; font-family: 'Droid Sans Mono'; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;">might be convenient now, but will seriously hurt you down the road.) [...].<br />Florian Weimer.</span></blockquote>
<div style="text-align: right;">
<span style="color: #999999;">Full text in the <a href="https://lists.fedoraproject.org/pipermail/devel/2013-June/184327.html" target="_blank">fedora-devel</a>. </span></div>
<br />
The part about strict dependency check struck me as being "just right". Eclipse definitely needs a very strict checking at the build time and during changing the installation.<br />
<br />
But it does not, and should not be very strict about components being changed at runtime.<br />
<br />
And yes, rebuilding the entire Eclipse to get a minor security update in one of it's dependencies is a waste of time.<br />
<br />
So I've put up a small wiki page in which I described how I'd like to see installation handled.<br />
<br />
The<a href="http://wiki.eclipse.org/Equinox/p2/Plan/3rd_party_installers" target="_blank"> link to the wiki page</a>. <br />
<br />
Any comments welcome.<br />
<br />
<span style="color: #999999;">* such situations happen, although very rarely, especially when there are big changes done in compilers, but this happens only when a distro was not released yet.</span><br />
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
<span style="color: #999999;"><span style="font-size: xx-small;">EDIT: corrected typo and link to fedora-devel.</span></span></div>
Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com2tag:blogger.com,1999:blog-3356090267744964460.post-53069848490469152272013-06-12T12:48:00.004+02:002013-06-12T12:48:59.938+02:00A nasty bug in dropins - read it if you use themThe nature of dropins is that they were supposed to be a transitional mechanism between old update manager and P2. Dropins have more advantages that they were supposed to have, and one of them is truly easy management - just copy a plugin, and it will work (in most cases).<br />
<br />
This time, however, a really nasty issue managed to get into Kepler. It was discovered about two weeks ago, when some of our Fedora packages started disappearing after updates.<br />
<br />
We often get similar issues before final build of Fedora is released, so it did not looked seriously. But after a couple of days of checking our build process and testing I've found that:<br />
<br />
If you deploy into dropins a plugin that is already installed using P2 director, your Eclipse goes bananas, especially if this plugin is a platform dependency.<br />
The dropins mechanism will try to uninstall it, and then, depending on your configuration, will stop working, or will break your Eclipse.<br />
<br />
The bug was reported <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=410026" target="_blank">in the Eclipse bugzilla</a>, but it will most likely be shipped due to the bad timing in which it was discovered.<br />
<br />
So beware of what you put into dropins - unless you want spend the same amount of time that I did trying to understand what's going on.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-32374640954965660782013-06-10T15:32:00.002+02:002013-06-10T15:32:42.021+02:00EclipseCon France - Wrap upI had a pleasure to take part in the EclipseCon held for the first time in France. Here are is my main observation:<br />
Java has more in common with javascript than continental breakfast with breakfast.<br />
<br />
Also, for the first time, there was a true coming out of people adjusting and packaging inhouse flavour of Eclipse. A few of my live-recorded tweets:<br />
<blockquote class="twitter-tweet" data-partner="tweetdeck">
Cern devops - a new major version cant mean starting over.<br />
— Christopher Daniel (@kda) <a href="https://twitter.com/kda/statuses/342288308908486657">June 5, 2013</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<br />
<blockquote class="twitter-tweet" data-partner="tweetdeck">
.<a href="https://twitter.com/prapicault">@prapicault</a>'s talk: 10000 people spending 5 minutes troubleshooting Eclipse is a cost.<br />
— Christopher Daniel (@kda) <a href="https://twitter.com/kda/statuses/342633563667193856">June 6, 2013</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<br />
<blockquote class="twitter-tweet" data-partner="tweetdeck">
Yet another presentation saying that standardization is required if you want to scale up your dev team. There is future! <a href="https://twitter.com/search?q=%23eclipsecon&src=hash">#eclipsecon</a> <a href="https://twitter.com/search?q=%23devops&src=hash">#devops</a><br />
— Christopher Daniel (@kda) <a href="https://twitter.com/kda/statuses/342613090380169217">June 6, 2013</a></blockquote>
So, it's all about having a few people in an organization that know tools, and prepare tools for others. It just looks like the idea of "bring your own device" policy was wrong. A corporation needs standards. Period. And it's much better to have a team designated only to free software management than allow your employees to invent the wheel again and again.<br />
<br />
I wish all those eclipse builders contributed back!<br />
<br />
What's more, I believe that the future belongs to those small, single-purposed IDEs, and kind of natural consequence will be equally precise a IDE in the browser, where you rather point&click required solution rather than spending a couple of days figuring out how to set up certain tools to build a server app and then a mobile app. Ideally I'd like to be able to say "yes" to this tweet:<br />
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<br />
<blockquote class="twitter-tweet" data-partner="tweetdeck">
<a href="https://twitter.com/RickBullotta">@RickBullotta</a> <a href="https://twitter.com/kda">@kda</a> <a href="https://twitter.com/mmilinkov">@mmilinkov</a> cool. Can I write and debug my native mobile apps that talk to my node server?<br />
— Doug Schaefer (@dougschaefer) <a href="https://twitter.com/dougschaefer/statuses/342294368759201792">June 5, 2013</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script><br />
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>That's said, Eclipse was included into the <a href="https://access.redhat.com/site/documentation/en-US/Red_Hat_Developer_Toolset/2-Beta/html/User_Guide/chap-Red_Hat_Developer_Toolset.html#sect-Red_Hat_Developer_Toolset-About" target="_blank">Red Hat Developer Toolset</a>. The Developer Toolset is a set of tools that work together, and are decoupled from the underlying base, so you will be able to use a stable work environment and up-to-date development tools, without configuring things by yourself!<br />
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script><br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-36702272973564044052013-05-29T10:23:00.001+02:002013-05-29T12:24:55.006+02:00The most significant feature of Kepler Eclipse on FedoraYeah, I know I'm kind of repeating myself, but look what happens after you update Eclipse in <a href="http://fedoraproject.org/get-prerelease" target="_blank">Fedora 19</a>:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjRKsrYuYMqGkZqNZAxV3bjVJoiq_eIfhyT_9MWEGzT2hbQLhB7ZZUn8ADqUYrnp7rqd0HfHg0jo2iEgmbWWYLrSwVxQoh1RiebG_SJZakNWa7h7Z8-lE2dF8Vbi7xnMNNLs8NfLGTts/s1600/P2Reinstall.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcjRKsrYuYMqGkZqNZAxV3bjVJoiq_eIfhyT_9MWEGzT2hbQLhB7ZZUn8ADqUYrnp7rqd0HfHg0jo2iEgmbWWYLrSwVxQoh1RiebG_SJZakNWa7h7Z8-lE2dF8Vbi7xnMNNLs8NfLGTts/s400/P2Reinstall.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Eclipse after update in F19</td></tr>
</tbody></table>
<br />
P2 discovers that you're system installation had been changed, finds what you have installed as a regular user, and then asks you to install those things again, providing you a nice wizard:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJnC3tytmLjpHSCmUzBsg4kMTBx9joOIVkXiIvWswV_PEw6zLWM2BnF4yg9aTH3rrygv-mtSqOywCwbY7lDz_ZK-7WgxLZLEbPi2PlP99d5rpnHBkjQzzjxqAWvNhXa6jMZOPbDI7mwc/s1600/NextStep.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidJnC3tytmLjpHSCmUzBsg4kMTBx9joOIVkXiIvWswV_PEw6zLWM2BnF4yg9aTH3rrygv-mtSqOywCwbY7lDz_ZK-7WgxLZLEbPi2PlP99d5rpnHBkjQzzjxqAWvNhXa6jMZOPbDI7mwc/s320/NextStep.png" width="318" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Features reinstallation wizard page</td></tr>
</tbody></table>
This is a big step forward since previous Fedora releases, where Eclipse package update caused a loss of user installed features, or even totally broke the installation.<br />
<br />
Of course, not only Linux will benefit from this approach, but all setups, where users have only read-only access to a master installation administered centrally.<br />
<br />
Edit: Things never go as smoothly as one would wish. The problem that I was having with this dialog was that when I had multiple Eclipse installed, from time to time, the dialog was trying to reinstall things from "wrong" Eclipse installation.<br />
<br />
It turned out to be a feature, not a bug. Eclipse, when shared install is run for the very first time, tries to find previous installation on the best-can-do basis. This scenario is a bug for Fedora, because Fedora Eclipse has only one location that does not change, and therefore if there is no local configuration for that location, it means that nothing should be reinstalled. I think a solution is as easy as setting this property to the Fedora installation:<br />
<br />
<pre>
-Declipse.p2.skipMovedInstallDetection=true
</pre>
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-3144886034421221442013-05-09T14:33:00.001+02:002013-05-09T14:34:49.603+02:00Eclipse Mylyn - quite interesting featureDid you know that Eclipse Mylyn integrates with a History view?<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Yu2V0p8MY6YBcVl1ov5AUsiKstGe60AUrg8xjl8iEyG4J8bMWt93-b1f4_NBUzS9lz5H-v-r75bagUO63RlQ219FLD3XH75BOodaYy62wYaLGPpI-j9DZLIo3kevX5iUU-6ii6LkQq8/s1600/HistoryMylyn.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Yu2V0p8MY6YBcVl1ov5AUsiKstGe60AUrg8xjl8iEyG4J8bMWt93-b1f4_NBUzS9lz5H-v-r75bagUO63RlQ219FLD3XH75BOodaYy62wYaLGPpI-j9DZLIo3kevX5iUU-6ii6LkQq8/s1600/HistoryMylyn.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Exemplary history displayed in the History view.</td></tr>
</tbody></table>
Unfortunately, it works this way for Red Hat bugzilla, but not for the Eclipse one :-(.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-41927614036382691512013-05-07T10:27:00.000+02:002013-05-07T10:27:24.752+02:00Eclipse Marketplace Client just got updated in Fedora 19+Short introduction for my Fedora audience:<br />
<br />
<a href="http://marketplace.eclipse.org/" target="_blank">Eclipse Marketplace</a> is, well, a market for Eclipse plugins. <a href="http://eclipse.org/mpc/" target="_blank">Eclipse Marketplace Client</a> is a tool that allows for browsing and installing plugins from within your IDE. The analogy to other application stores is quite obvious. You can install the client by invoking:<br />
<br />
<pre class="brush:bash">sudo yum install eclipse-mpc
</pre>
<br />
Main content:<br />
<br />
<a href="https://fedoraproject.org/wiki/Releases/19/Schedule" target="_blank">Fedora 19 release date</a> is approaching us fast. Since the Fedora release and Eclipse release are very close to each other, and there is a freeze between the RC (Beta) and the final release, I'm updating now the Eclipse stack to the Milestone 7 - the last milestone between the final release of Eclipse.<br />
<br />
Going from one project to another I stumbled upon Eclipse Marketplace Client. It has no new release scheduled on it's website, but the log has revealed quite interesting features, so I've decided to include those updates.<br />
<br />
Here is a screenshot of a new Marketplace Client:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg63u7koKXdKBdV0RehyZ6lhHiGtBbY87JbJsME8v8QMN0gAAMsscl9BAtIMxfre1fYhjeHf-gDpziIyXKHI9B7Tk_a7SGbA3PmPVnZHZAT4RSzLcntQ7PyAxe2caPu-5fOncJ6NIqsIY8/s1600/MPC-Rating.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="1" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg63u7koKXdKBdV0RehyZ6lhHiGtBbY87JbJsME8v8QMN0gAAMsscl9BAtIMxfre1fYhjeHf-gDpziIyXKHI9B7Tk_a7SGbA3PmPVnZHZAT4RSzLcntQ7PyAxe2caPu-5fOncJ6NIqsIY8/s1600/MPC-Rating.png" width="240" /></a></div>
<br />
Note new attributes that are now displayed - the number of installs and favourites stars. This will definitely help to assess which solutions are well tested in the field :-).<br />
<br />
It also looks like there will be a newsletter in the marketplace client :-)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcFrhopkHOtG_anEUvcmHzw4eYxPOBs7YcNnIK7RTCNsCNR5FpHiWn6NugSk_4YG_ea2aN0xG4_McDgiR6Z5caijvmRCD0_soHs6i3NgWMSTcTHr0PzB0vG2ivlwKN1AVpjnTBmcZPKh8/s1600/Newsletter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="1" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcFrhopkHOtG_anEUvcmHzw4eYxPOBs7YcNnIK7RTCNsCNR5FpHiWn6NugSk_4YG_ea2aN0xG4_McDgiR6Z5caijvmRCD0_soHs6i3NgWMSTcTHr0PzB0vG2ivlwKN1AVpjnTBmcZPKh8/s1600/Newsletter.png" width="240" /></a></div>
<br />
The market place is interesting also from another point of view. I have written <a href="https://git.fedorahosted.org/cgit/feclipse-maven-plugin.git/tree/installer/src/main/java/org/fedora/installer/InstallMojo.java" target="_blank">a small utility mojo</a> that transforms a p2 repository/update site into a runnable form that could be put in dropins. So the part of rpm responsible for installing the client looks like:<br />
<br />
<pre class="brush:bash">mvn-rpmbuild org.fedora:feclipse-maven-plugin:install \
-DsourceRepo=org.eclipse.epp.mpc.site/target/site -DtargetLocation=%{buildroot}%{install_loc}/eclipse
</pre>
<br />
Which is a great progress from manually unzipping features into destination :-). <br />
<br />
Yes, yes, I'm aware that dropins mechanism is not really the best solution, but that's the only solution that we managed <a href="http://eclipseandlinux.blogspot.com/2012/05/making-p2-working-with-rpm-last.html" target="_blank">to get work together with rpm</a>.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-43910019863979378382013-04-29T13:25:00.000+02:002013-04-29T13:25:19.142+02:00Is running Eclipse on Raspberry Pi possible?During the weekend I stumbled upon <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=406749" target="_blank">Bug 406749 </a><span id="summary_alias_container"><span id="short_desc_nonedit_display"><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=406749" target="_blank">Create native launcher and product export option for Raspberry Pi</a>, which prodded me to do the long postponed task of contributing patches that has been used in Fedora to built Eclipse for arm.</span></span><br />
<br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display">My patches provide generic arm bundles. It is a part of the work. According to <a href="https://fedoraproject.org/wiki/Architectures/ARM/Secret_Decoder_Ring" target="_blank">Fedora documentation</a>, Arm processors exist in two versions - software and hardware floating points. I guess that Eclipse built on one of them might not work on the other one, and it will be necessary to split each arm fragment in two.</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">It's also worth to consider if Eclipse on arm without FPU is really something we want - it will be unbelievably slow.</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"></span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display">But straight to the point - I tested various amounts of memory assigned to maven for the purpose of Eclipse build - and it started succeeding only if maven was granted 900MB. That eliminates Raspberry Pi forever. Sorry for sad news :-(.</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">However, if you are interested in building Eclipse on various mobile devices, and you'd like to try out those patches, I'd be happy to hear the results!</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<span id="summary_alias_container"><span id="short_desc_nonedit_display">And a small poll for the end (results can be found <a href="https://docs.google.com/spreadsheet/ccc?key=0AiZGytX7x3fadGJHWFYtZTVLM3BMTVlfQWJwZW1wdVE&usp=sharing" target="_blank">here</a>, but please do the poll first!):</span></span><br />
<span id="summary_alias_container"><span id="short_desc_nonedit_display"><br /></span></span>
<br />
<iframe frameborder="0" height="300" marginheight="0" marginwidth="0" src="https://docs.google.com/forms/d/1_uyL7p3CF16dbsA3WiSrfzSe_Ht30g5Z9TOAWtinOX8/viewform?embedded=true" width="600">Loading...</iframe>
<span id="summary_alias_container"><span id="short_desc_nonedit_display"> </span></span>Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com3tag:blogger.com,1999:blog-3356090267744964460.post-51462610749202759982013-04-24T14:47:00.002+02:002013-04-24T14:47:43.653+02:00On the evilness of split packages in the OSGiOSGi allows for having packages split across multiple bundles. This, together with a dropins mechanism, is a true mine field.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqsrx0V_YrpvDBDOkD-hUv2jzuWKRD7fcNYELO7ycjmgqkmtJTZdjJfHkKscQ1fD-icMEL2PvLRCrqKMbcEn0IyRKK1wym-cKTiQtlmeYj_WGxIggyU-8HQ5W0JeqnGMClrCzd_Lq1syg/s1600/KMines.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqsrx0V_YrpvDBDOkD-hUv2jzuWKRD7fcNYELO7ycjmgqkmtJTZdjJfHkKscQ1fD-icMEL2PvLRCrqKMbcEn0IyRKK1wym-cKTiQtlmeYj_WGxIggyU-8HQ5W0JeqnGMClrCzd_Lq1syg/s1600/KMines.png" width="304" /></a></div>
<br />
So, what's wrong with those split packages? They are split! OSGi, in some magic way, merges them during runtime, but does not see explicit dependency between bundles providing those packages.<br />
<br />
The P2 reconciler app, using some Equinox service, refreshes all packages that have dependency changed. So, for example, if you install a bundle providing javax.xml into dropins, you'll have <i>almost</i> all plugins refreshed (depending on the dependency tree).<br />
<br />
But, since bundles with split packages are not dependent on each other, you may end up in a not so much theoretical situation, were a bundle with one split package is refreshed, and the other is not. If they do depend on each other (f.e. one has an implementation, the other an interface) you will get a nice ClassCastExceptions or other, similar runtime errors.<br />
<br />
Real Eclipse bug can be found <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=406359" target="_blank">in the Eclipse bugzilla</a>. <br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com5tag:blogger.com,1999:blog-3356090267744964460.post-30582351743655688712013-04-22T11:14:00.000+02:002013-04-22T11:14:16.272+02:00DevCrowd'13 – share knowledge, share passion - impressionsI had a pleasure of participation in a conference called <a href="http://2013.devcrowd.pl/" target="_blank">DevCrowd</a> this weekend in <a href="http://goo.gl/maps/FZiMU" target="_blank">Szczecin</a>. And I must admit - I underestimated it, and got very, very surprised.<br />
<br />
First of all, the conference, held at the Szczecin University of Technology was developer community organized, meaning there was no single, leading technology, solution, nor vendor. This resulted in a really mind-blowing mix of speakers that touched problems on the border of many spaces (technical, human and legal one) and made many people to think about what they do.<br />
<br />
Let me mention two really noteworthy presentation fragments:<br />
<ul>
<li><a href="https://twitter.com/maneo" target="_blank">Adam Dudczak</a>, "6 things that you were not taught during studies" discussed, amongst other things, the problem of choosing 3rd party dependencies for use in your project. This was a very right call in the era of social coding, and clearly outlined the need for IP management for communities that want to share their code.</li>
</ul>
<ul>
<li>There were two talks by Jarosław Ratajski and Grzegorz Godlewski, related to web programming. Those talks resonated in my mind because they were about Java developers finding themselves in the JavaScript world, and giving a really strong message, that despite Web is somewhat inferior to desktop, it needs superior developers. I guess Netscape was wrong by<a href="https://en.wikipedia.org/wiki/JavaScript#Birth_at_Netscape" target="_blank"> targeting JavaScript "to nonprofessional programmers". </a></li>
</ul>
<br />
I realized apparently not so secret plan of OSGi and <a href="https://fedoraproject.org/get-fedora" target="_blank">Fedora</a> conquering the Java world and performed a brief introduction to it, and quite unexpectedly, found people who were really interested in migrating their applications.<br />
<br />
I got totally convinced to small conferences, and I look forward next edition!<br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-13815616452513698602013-04-11T08:34:00.002+02:002013-04-11T08:35:21.568+02:00Maven groupId:artifactId and OSGi Bundle-SymbolicName - how they relate to each other?OSGi massively coming to the maven world is a new trend, and is causing quite a big disturbance (at least to me).<br />
<br />
First of all, as you already know, Fedora policies don't allow me to use binaries. Therefore <a href="http://www.eclipse.org/orbit/" target="_blank">Eclipse Orbit</a>, a project that contains 3rd party Eclipse dependencies in the form of jars, is banned for me.<br />
<br />
I witness that more and more open source jars support OSGi by default, but sometimes not exactly in the way I'd love to - especially if it comes to the naming schemes.<br />
<br />
Let's look at the example of JDT core - the most widely used Eclipse jar. It was used as a maven dependency long before it received its official pom. As a result, it is available in Fedora with following aliases:<br />
<ul>
<li><pre><code>org.eclipse:jdt.core</code></pre>
</li>
<li><pre><code>org.eclipse.tycho:org.eclipse.jdt.core</code></pre>
</li>
<li><pre><code>org.eclipse.jetty.orbit:org.eclipse.jdt.core</code></pre>
</li>
<li><pre><code>org.eclipse.jdt:org.eclipse.jdt.core</code></pre>
</li>
</ul>
The question is, which is the right one? Well, the <a href="http://wiki.osgi.org/wiki/Bundle-SymbolicName" target="_blank">OSGi Bundle-SymbolicName wiki page</a> says that:<br />
<blockquote class="tr_bq">
A BSN often takes the form of a reverse domain name. If automatically generated via <a href="http://wiki.osgi.org/wiki/Maven_Bundle_Plugin" title="Maven Bundle Plugin">Maven Bundle Plugin</a>, takes the form <code>${pom.groupId}.${pom.artifactId}</code>, or <code>${pom.artifactId}</code> if it already starts with <code>${pom.groupId}</code>.
</blockquote>
So, in that case, we need to go <a href="https://maven.apache.org/guides/mini/guide-naming-conventions.html" target="_blank">the Maven Guide to Naming</a>, and find out that:<br />
<blockquote class="tr_bq">
<b>groupId</b> will identify your project uniquely across all projects,
so we need to enforce a naming schema. It has to follow the package name
rules, what means that has to be at least as a domain name you control,
and you can create as many subgroups as you want. Look at <a class="externalLink" href="http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.7"> More information about package names</a>. </blockquote>
and<br />
<blockquote class="tr_bq">
<b>artifactId</b> is the name of the jar without version. If you created
it then you can choose whatever name you want with lowercase letters
and no strange symbols. If it's a third party jar you have to take the
name of the jar as it's distributed.</blockquote>
<br />
The artifactId for Eclipse should be a jar name, which in turn should follow <a href="http://wiki.eclipse.org/index.php/Naming_Conventions" target="_blank">Eclipse Naming conventions</a>. The groupId should be a reverse domain name of the project, so in case of JDT, we would get org.eclipse.jdt, thus the final and proper groupId:artifactId of JDT core is org.eclipse.jdt:org.eclipse.jdt.core.<br />
<br />
<br />
<br />
The real problem will appear if the project does not obey Maven guidelines, and has groupId:artifactId commons-logging:commons-logging or junit:junit. In that case applying OSGI guidelines will cause invalid Bundle-SymoblicNames: commons-logging and junit, which are against OSGi guidelines, although based on them.<br />
<br />
In this situation it would be good to reconsider group and jar name changes to reflect the organization domain:<br />
<ul>
<li>org.apache.commons:logging (logging.jar shipped)</li>
<li>org.junit:org.junit (org.junit.jar shipped).</li>
</ul>
Happy renaming! <br />
<br />
<br />
<br />
<br />Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com3tag:blogger.com,1999:blog-3356090267744964460.post-45975079498604136872013-03-13T15:19:00.001+01:002013-03-13T15:19:19.017+01:00All roads lead to RomeI'm a Fedora Packager. I (amongst others) take care about Eclipse in the Linux world. And one symptom of that care is prodding everyone else to update or drop dependencies. So, if your project suddenly gets a number of bugs open:<br />
<ul>
<li>398103: adopt latest jsoup</li>
<li>402882: relax requirement on lucene</li>
<li>398102: adopt latest jdom</li>
<li>398100: adopt latest org.apache.commons.lang</li>
<li>and so on and so on...</li>
</ul>
<ul>
</ul>
you may be sure it's me. Let's just say that I believe that broad cooperation between open source projects is a must, and staying too long with an outdated dependency is harmful for both, consumer and producer.<br />
<br />
<br />
Today, I tried to address a bug opened not that long ago:<br />
<ul>
<li>398084: Adopt rome 1.0</li>
</ul>
"ROME is a set of <b><span style="color: blue;">R</span></b>SS and At<b><span style="color: blue;">om</span></b> Utiliti<b><span style="color: blue;">e</span></b>s for Java that is open source under the Apache 2.0 license." to quote their webpage and explain a bit what is this library for.<br />
<br />
The said news is that ROME is effectively dead. The last comment from the project author is more than one year old. Project webpage offers 'Related searches'. The source repository does not contain a single tag. Their mailing lists contains spam traffic.<br />
<br />
In a normal situation I'd just look for a replacement, but this case is different. There is NO replacement. It looks like a technology shift killed it. There's no need for a new version of RSS or Atom, so project matured and died.<br />
<br />
Unmaintained library is a pain. <a href="http://eclipseandlinux.blogspot.com/2013/01/unmaintained-libraries-are-security.html" target="_blank">It's a security hole</a>. And will, sooner or later, damage the consumer. But what to do, if there is no alternative? Hope for the best?Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0tag:blogger.com,1999:blog-3356090267744964460.post-14616805389185343162013-02-27T14:13:00.002+01:002013-02-27T14:13:52.270+01:00A big change in Eclipse P2One of the problems that have been haunting me since I started work at Red Hat, were changes made to the master configuration. Yes, when you install Eclipse using yum, Eclipse is readonly, and all the configuration changes are stored in your local ~/.eclipse folder.<br />
<br />
So, if any change was made to the master installation, equinox was dropping user installed bundles (in majority of cases), but P2 was totally unaware of that change.<br />
<br />
In other words - if you installed any feature, it was lost, and you could not reinstall it, because P2 still thought it was installed.<br />
<br />
I can't say I was totally unaware of changes happening in P2 regarding those problems, but when I prepared a package of latest Kepler release, I got a dialog:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVP9y7e3CVeH4tc1hEla9O9Gc53is7vD7dlwv_HLfBzhRLdZJ5EaJb1B0djJmHjH9VfU6Bgpt1UUXsnDIgjo2fPW1bykQTxEyM5z9k7TopANj_T7sGEO6Zk1kf33gxHJGu15eDIYUKksk/s1600/P2-master-configuration-changed.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVP9y7e3CVeH4tc1hEla9O9Gc53is7vD7dlwv_HLfBzhRLdZJ5EaJb1B0djJmHjH9VfU6Bgpt1UUXsnDIgjo2fPW1bykQTxEyM5z9k7TopANj_T7sGEO6Zk1kf33gxHJGu15eDIYUKksk/s320/P2-master-configuration-changed.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">P2 new feature</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
Here is the explanation of what happened:<br />
P2 stored a timestamps of important config files during first Kepler launch.<br />
yum changed the installation and touched files<br />
P2 discovered the change and dropped all plugins installed by a user into user space<br />
P2 located previously installed bundles and offered reinstalling them.<br />
<br />
I'm sure all devops will appreciate that feature!Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com1tag:blogger.com,1999:blog-3356090267744964460.post-32657871193958975542013-02-27T12:15:00.005+01:002013-02-27T12:15:58.091+01:00May you live in interesting times!<a href="http://webtide.intalio.com/2012/08/jetty-9-its-coming/" target="_blank">Jetty 9 is around the corner</a>. Well, that's not a news, but a well known fact. Another fact is that Fedora distribution has '<a href="https://fedoraproject.org/en/about-fedora#first" target="_blank">First</a>' in its principles, so it is no wonder that Jetty is already <a href="http://pkgs.fedoraproject.org/cgit/jetty.git/log/?h=jetty9" target="_blank">packaged</a>, although still not in a main branch.<br />
<br />
As you probably know (maybe from reading this blog), Fedora allows for only one instance of library being installed in the system, and all consumers must use symlinks if they want to consume them. This is also the case of Eclipse. So, if you look at the eclipse installation in the /usr/lib64, you will find:<br />
<br />
<pre class="brush:bash;ruler=true">ls -l eclipse/plugins | grep jetty
-rw-r--r--. 1 root root 21518 Feb 22 16:33 org.eclipse.equinox.http.jetty_3.0.100.v20130222-1445.jar
lrwxrwxrwx. 1 root root 44 Feb 22 16:38 org.eclipse.jetty.continuation_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-continuation.jar
lrwxrwxrwx. 1 root root 36 Feb 22 16:38 org.eclipse.jetty.http_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-http.jar
lrwxrwxrwx. 1 root root 34 Feb 22 16:38 org.eclipse.jetty.io_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-io.jar
lrwxrwxrwx. 1 root root 40 Feb 22 16:38 org.eclipse.jetty.security_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-security.jar
lrwxrwxrwx. 1 root root 38 Feb 22 16:38 org.eclipse.jetty.server_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-server.jar
lrwxrwxrwx. 1 root root 39 Feb 22 16:38 org.eclipse.jetty.servlet_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-servlet.jar
lrwxrwxrwx. 1 root root 36 Feb 22 16:38 org.eclipse.jetty.util_8.1.0.v20120127.jar -> /usr/share/java/jetty/jetty-util.jar
</pre>
<br />
This approach works rather well for many applications, but not necessarily for Eclipse. A simple replacement of Jetty bundles would break Help (I can live without it) and P2 (I can't live without it), so I had to do some <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=401784" target="_blank">little hacking</a> to rebuild the Eclipse with Jetty 9. It works - and probably in Fedora 19 this will be the default setup.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5o-9t0gt3Zy5_nu2T0h5LMGCuaT1IHIoGxUC4I-WhXAqdDw7WuYO5bGv12Eqxyp1mOY471TZWbsBZDY2k11hzejVzwjbMod-xOMSf-6aH9vk2EX8fpDmDGc0nM9LIZ2Ry6yg1OlsaWOc/s1600/Eclipse-Jetty9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5o-9t0gt3Zy5_nu2T0h5LMGCuaT1IHIoGxUC4I-WhXAqdDw7WuYO5bGv12Eqxyp1mOY471TZWbsBZDY2k11hzejVzwjbMod-xOMSf-6aH9vk2EX8fpDmDGc0nM9LIZ2Ry6yg1OlsaWOc/s320/Eclipse-Jetty9.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Eclipse Help running in Eclipse with Jetty 9</td></tr>
</tbody></table>
In a normal situation I'd not even mention such a change - because it's kind of my role to prod everyone to migrate to latest software :-). But this case is very special:<br />
<div style="text-align: center;">
<b>Jetty 9 requires java 1.7.</b></div>
<div style="text-align: center;">
<br /></div>
Eclipse community (especially Platform/RT) is rather conservative in adopting new Java versions. Such an approach has a lot of sense, although... maybe some dates first:<br />
<ul>
<li>2001: Eclipse Founded by IBM</li>
<li>2002: Java 1.4 released. According to my friend, up to this point it was a perfect language, then they broke it.</li>
<li>2004: Eclipse Foundation started</li>
<li>2004: Java 1.5 released.</li>
<li>2006: Java 6 released.</li>
<li>2011: Java 7 released.</li>
<li>2013: Java 8 to be released. </li>
</ul>
Have you noticed the gap between Java 6 and 7? I'd actually dare to say that java 6 was so similar to java 5 that you'd have to count the gap from 2004 to 2011, where Eclipse could just stay one java version behind the main stream.<br />
But things has changed. Java is under heavy development again. Java is being open-sourced. This opens a lot of questions:<br />
<ul>
<li>how long will we have to stay with Java 1.4?</li>
<li>is there any plan of migrations when Java will get frequent releases?</li>
<li>what to do with features that really require latest Java (f.e. Jetty)?</li>
</ul>
It's the question that I have been asked during my interview at Red Hat: what do you prefer and why? Frequent adoptions or staying with "stable" versions and then migrating from one "stable" to the next "stable"?<br />
<br />
Interesting times indeed.Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com5tag:blogger.com,1999:blog-3356090267744964460.post-83208835350855601822013-02-18T09:26:00.002+01:002013-02-18T09:26:45.907+01:00Fixing spacing issue in Eclipse in GnomeSometimes I run Eclipse on my 13" laptop without an external monitor. This used to be a really problematic, because package explorer/outline were displaying only a few items because of the huge gaps between rows. It was just a pain to me, but nothing really serious. I thought it is intentional and nothing can be done about that. But in the open source world, it is good to be vocal.
Someone (<span class="vcard "> <span class="fn">David Mansfield</span>)</span> reported a bug<br />
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=910812" target="_blank">Bug 910812 - line spacing in tree (specifically in eclipse, e.g. package explorer) is way too large.</a><br />
and attached following screenshots:<br />
This is how Eclipse used to look like on Linux:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://bugzilla.redhat.com/attachment.cgi?id=697416" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="271" src="https://bugzilla.redhat.com/attachment.cgi?id=697416" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Screenshot of Package Explorer running in a past versions of Fedora.</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
And this is how it looks like now:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://bugzilla.redhat.com/attachment.cgi?id=697417" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://bugzilla.redhat.com/attachment.cgi?id=697417" width="267" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Current appearance of Package Explorer. Note the spacing.</td></tr>
</tbody></table>
It's arguable which one is better. The latter looks really nice if you run Eclipse on a HD monitor, but it's barely acceptable when using something smaller.<br />
<br />
There's solution for that - just set the style of a GTK tree to have no vertical separator - you may use the command attached below:<br />
<pre class="brush: bash">cat >> ~/.gtkrc.mine << EOF
style "tree" {
GtkTreeView::vertical-separator = 0
}
class "GtkTreeView" style "tree"
EOF
</pre>
<br />
Eclipse does not look nicer after that, but it's a way more ergonomic, isn't it?<br />
<br />
Happy hacking!Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com4tag:blogger.com,1999:blog-3356090267744964460.post-19611879011485121552013-01-30T10:14:00.001+01:002013-01-30T10:14:05.439+01:00Installing Counter Strike on Fedora 18 in 4 steps. And some comments.(1) Follow the instructions listed <a href="http://russellbryantnet.wordpress.com/2012/12/07/installing-steam-for-linux-beta-on-fedora-17/" target="_blank">on this blog</a> to install Steam. Don't worry, it works well on Fedora 18, too.<br />
<br />
(1a) If you wonder who is 'Spot', the Fedora 18 unofficial steam package provider, checkout out <a href="http://fedoraproject.org/wiki/User:Spot" target="_blank">his short bio on fedoraproject wiki</a>.<br />
<br />
(2) Install Counter Strike 1.6 using Steam Client. A piece of cake.<br />
<br />
(3) Now the important part: go to your local steam directory <br />
<pre>~/.steam</pre>
directory and create a symlink to provide all libs that are required by the game.
<br />
<pre class="brush:bash">cd ~/.steam
ln -s bin32 sdk32
</pre>
(4) Play!<br />
<br />
I'm not hiding that I'm really excited about having Counter Strike running on my Fedora. It was exactly this game that made my switch to Linux really difficult.<br />
<br />
I'd like also to point to one more thing. This wouldn't be possible without a major OS provider, whose attitude caused Valve to look for alternatives. It will be a bitter lesson for some people. <br />
<br />
We, as an open source community, should never forget what happens if you ignore your users.<br />
<br />
Happy fragging!Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com5tag:blogger.com,1999:blog-3356090267744964460.post-47166370631211139402013-01-29T16:06:00.001+01:002013-01-29T16:06:59.554+01:00That's just unbelievableI never thought it will happen. Thank you all, who made this. And thank you all, who caused this (including OS providers).<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixevmxVVvd8VhshvTI9xA-cZpbL3CprtRpF2GpmsEsS1JK-uEZcLENngQg8219W60F33_zowDFIHJxmT-8LbGaV5P2wV4ALFIKCJV0JGZniCKSPM8ZM-DfCObp-EHPzoxDhIj1eKyMhvE/s1600/csfedora.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixevmxVVvd8VhshvTI9xA-cZpbL3CprtRpF2GpmsEsS1JK-uEZcLENngQg8219W60F33_zowDFIHJxmT-8LbGaV5P2wV4ALFIKCJV0JGZniCKSPM8ZM-DfCObp-EHPzoxDhIj1eKyMhvE/s320/csfedora.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Counter Strike 1.6 running on Fedora 18</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
Instructions how to do that will follow soon.<br />
<br />
Happy fragging!<br />
Krzysztof (Chris) Danielhttp://www.blogger.com/profile/02643339658259354232noreply@blogger.com0