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.
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.
"Don't reinvent the wheel!" they say.
So, why, WHY each conference organizers decide to write their OWN c4p application? That makes no sense.
The internet proposal submission is no longer a feature that will distinguish your conference.
That's why I am starting my new, open source application for accepting conference talks. It will not be fancy, but it will work.
Clone it, run it, modify it, USE it.
Contribute if you wish.
Showing posts with label fedora. Show all posts
Showing posts with label fedora. Show all posts
Monday, April 27, 2015
Saturday, August 23, 2014
How to render image serverside using OpenShift Node.js?
Hey everyone,
Leaving a developer world in favor of non-coding job has certain advantages.
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.
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 Weebly and Openshift (a really great Platform As A Service) you can get up your small portal (like mine) in less than a couple of hourse and 100$.
Openshift provides a great array of technologies - I have chosen Node.js + MongoDB as it offers the quickest route to a working app.
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.
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.
Installing Cairo on OpenShift gear is not so simple - it is necessary to build cairo manually:
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:
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.
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.
Leaving a developer world in favor of non-coding job has certain advantages.
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.
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 Weebly and Openshift (a really great Platform As A Service) you can get up your small portal (like mine) in less than a couple of hourse and 100$.
Openshift provides a great array of technologies - I have chosen Node.js + MongoDB as it offers the quickest route to a working app.
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.
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.
Installing Cairo on OpenShift gear is not so simple - it is necessary to build cairo manually:
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
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:
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'
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.
rm -rf "${OPENSHIFT_NODEJS_DIR}/tmp/saved.node_modules"
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.
Friday, October 25, 2013
Google 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.
Symptoms:
Eclipse 4.3.1 in Fedora 20 crashes shortly after content assist or javadoc is shown. ABRT discovers a crash.
Reason:
Both content assist and javadoc are browser-based. Google Talk plugin interferes with webkit/SWT, and in the end JVM crashes.
Workaround:
Remove Google Talk plugin.
Symptoms:
Eclipse 4.3.1 in Fedora 20 crashes shortly after content assist or javadoc is shown. ABRT discovers a crash.
Reason:
Both content assist and javadoc are browser-based. Google Talk plugin interferes with webkit/SWT, and in the end JVM crashes.
Workaround:
Remove Google Talk plugin.
yum -y remove google-talkplugin
Monday, October 21, 2013
Rediscovering 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:
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:
The context is just one click-away - the only thing you need is to activate your task by clicking the ball next to it:
So now we go to the main Mylyn functionality, that really let's the entire Eclipse shine - just compare the next two screenshots:
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!
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:
Can you see the small JUnit action? Guess what does it do :). Yes, you are right - it opens tests in a JUnit view:
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!
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 OSLC, and really powerful tools (out of scope for this blog).
Quick instructions how to install Mylyn in Fedora (packaged by me):
"Knock Knock" "Who's there?" Silence for 5 seconds "Java."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:
— Kieran Palmer (@spiderdj96) November 18, 2012
![]() | |
| Mylyn Task list - bugs from different sources in one place |
Can you include a "description.txt" file (or similar) that describes how to rebuild them, in case it is required in the future?
The context is just one click-away - the only thing you need is to activate your task by clicking the ball next to it:
![]() |
| An active task, a task without context, and an inactive task with recorded context. |
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!
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:
![]() |
| Builds view. Notifications included. No more page refreshing. |
![]() |
| Jenkins/Hudson build test result loaded into Eclipse. |
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 OSLC, and really powerful tools (out of scope for this blog).
Quick instructions how to install Mylyn in Fedora (packaged by me):
sudo yum install eclipse-mylynPretty simple - and really worth to try out!
Thursday, August 1, 2013
Why 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 Fedora policy, which states two reasons:
This post was inspired by this answer on fedora-java.
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.
- 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.
- 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.
This post was inspired by this answer on fedora-java.
Friday, June 28, 2013
Kepler retrospection - was CBI a net loss?
While I was reading Kepler retrospective notes, I found this statement:
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.
All that was (and still is) a cost, but was it really "a loss"?
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.
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.
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)?
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.
BTW. I really hope some day UX designers or architects will be hired by Eclipse Foundation.
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.and started immediately wondering who was the "us", and why it was "a net loss".
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.
All that was (and still is) a cost, but was it really "a loss"?
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.
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.
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)?
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.
BTW. I really hope some day UX designers or architects will be hired by Eclipse Foundation.
Monday, June 24, 2013
Cascaded builds - solution or a problem?
Fedora 19 consists out of approx 14000 of packages. 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*?
It sounds strange.
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.
If EMF had any dependencies, I'd have to rebuild them first.
So I've started investigating how to automate those tasks. And this is an answer I've received:
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.
But it does not, and should not be very strict about components being changed at runtime.
And yes, rebuilding the entire Eclipse to get a minor security update in one of it's dependencies is a waste of time.
So I've put up a small wiki page in which I described how I'd like to see installation handled.
The link to the wiki page.
Any comments welcome.
* 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.
It sounds strange.
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.
If EMF had any dependencies, I'd have to rebuild them first.
So I've started investigating how to automate those tasks. And this is an answer I've received:
[...] From my point of view, these Java module frameworks refuse to acknowledge that there is extensive experience with distro-level release engineering. (Basically, exact dependencies and multiple versions of the same code might be convenient now, but will seriously hurt you down the road.) [...].
Florian Weimer.
Full text in the fedora-devel.
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.
But it does not, and should not be very strict about components being changed at runtime.
And yes, rebuilding the entire Eclipse to get a minor security update in one of it's dependencies is a waste of time.
So I've put up a small wiki page in which I described how I'd like to see installation handled.
The link to the wiki page.
Any comments welcome.
* 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.
EDIT: corrected typo and link to fedora-devel.
Monday, June 10, 2013
EclipseCon France - Wrap up
I had a pleasure to take part in the EclipseCon held for the first time in France. Here are is my main observation:
Java has more in common with javascript than continental breakfast with breakfast.
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:
I wish all those eclipse builders contributed back!
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:
That's said, Eclipse was included into the Red Hat Developer Toolset. 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!
Java has more in common with javascript than continental breakfast with breakfast.
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:
Cern devops - a new major version cant mean starting over.
— Christopher Daniel (@kda) June 5, 2013
.@prapicault's talk: 10000 people spending 5 minutes troubleshooting Eclipse is a cost.
— Christopher Daniel (@kda) June 6, 2013
Yet another presentation saying that standardization is required if you want to scale up your dev team. There is future! #eclipsecon #devopsSo, 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.
— Christopher Daniel (@kda) June 6, 2013
I wish all those eclipse builders contributed back!
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:
@RickBullotta @kda @mmilinkov cool. Can I write and debug my native mobile apps that talk to my node server?
— Doug Schaefer (@dougschaefer) June 5, 2013
That's said, Eclipse was included into the Red Hat Developer Toolset. 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!
Wednesday, May 29, 2013
The most significant feature of Kepler Eclipse on Fedora
Yeah, I know I'm kind of repeating myself, but look what happens after you update Eclipse in Fedora 19:
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:
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.
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.
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.
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:
![]() |
| Eclipse after update in F19 |
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:
![]() |
| Features reinstallation wizard page |
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.
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.
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:
-Declipse.p2.skipMovedInstallDetection=true
Thursday, May 9, 2013
Eclipse Mylyn - quite interesting feature
Tuesday, May 7, 2013
Eclipse Marketplace Client just got updated in Fedora 19+
Short introduction for my Fedora audience:
Eclipse Marketplace is, well, a market for Eclipse plugins. Eclipse Marketplace Client 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:
Main content:
Fedora 19 release date 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.
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.
Here is a screenshot of a new Marketplace Client:
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 :-).
It also looks like there will be a newsletter in the marketplace client :-)
The market place is interesting also from another point of view. I have written a small utility mojo 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:
Which is a great progress from manually unzipping features into destination :-).
Yes, yes, I'm aware that dropins mechanism is not really the best solution, but that's the only solution that we managed to get work together with rpm.
Eclipse Marketplace is, well, a market for Eclipse plugins. Eclipse Marketplace Client 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:
sudo yum install eclipse-mpc
Main content:
Fedora 19 release date 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.
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.
Here is a screenshot of a new Marketplace Client:
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 :-).
It also looks like there will be a newsletter in the marketplace client :-)
The market place is interesting also from another point of view. I have written a small utility mojo 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:
mvn-rpmbuild org.fedora:feclipse-maven-plugin:install \
-DsourceRepo=org.eclipse.epp.mpc.site/target/site -DtargetLocation=%{buildroot}%{install_loc}/eclipse
Which is a great progress from manually unzipping features into destination :-).
Yes, yes, I'm aware that dropins mechanism is not really the best solution, but that's the only solution that we managed to get work together with rpm.
Monday, April 22, 2013
DevCrowd'13 – share knowledge, share passion - impressions
I had a pleasure of participation in a conference called DevCrowd this weekend in Szczecin. And I must admit - I underestimated it, and got very, very surprised.
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.
Let me mention two really noteworthy presentation fragments:
I realized apparently not so secret plan of OSGi and Fedora conquering the Java world and performed a brief introduction to it, and quite unexpectedly, found people who were really interested in migrating their applications.
I got totally convinced to small conferences, and I look forward next edition!
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.
Let me mention two really noteworthy presentation fragments:
- Adam Dudczak, "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.
- 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 targeting JavaScript "to nonprofessional programmers".
I realized apparently not so secret plan of OSGi and Fedora conquering the Java world and performed a brief introduction to it, and quite unexpectedly, found people who were really interested in migrating their applications.
I got totally convinced to small conferences, and I look forward next edition!
Wednesday, February 27, 2013
A big change in Eclipse P2
One 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.
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.
In other words - if you installed any feature, it was lost, and you could not reinstall it, because P2 still thought it was installed.
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:
Here is the explanation of what happened:
P2 stored a timestamps of important config files during first Kepler launch.
yum changed the installation and touched files
P2 discovered the change and dropped all plugins installed by a user into user space
P2 located previously installed bundles and offered reinstalling them.
I'm sure all devops will appreciate that feature!
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.
In other words - if you installed any feature, it was lost, and you could not reinstall it, because P2 still thought it was installed.
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:
![]() | |
| P2 new feature |
P2 stored a timestamps of important config files during first Kepler launch.
yum changed the installation and touched files
P2 discovered the change and dropped all plugins installed by a user into user space
P2 located previously installed bundles and offered reinstalling them.
I'm sure all devops will appreciate that feature!
May you live in interesting times!
Jetty 9 is around the corner. Well, that's not a news, but a well known fact. Another fact is that Fedora distribution has 'First' in its principles, so it is no wonder that Jetty is already packaged, although still not in a main branch.
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:
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 little hacking to rebuild the Eclipse with Jetty 9. It works - and probably in Fedora 19 this will be the default setup.
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:
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:
But things has changed. Java is under heavy development again. Java is being open-sourced. This opens a lot of questions:
Interesting times indeed.
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:
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
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 little hacking to rebuild the Eclipse with Jetty 9. It works - and probably in Fedora 19 this will be the default setup.
![]() |
| Eclipse Help running in Eclipse with Jetty 9 |
Jetty 9 requires java 1.7.
- 2001: Eclipse Founded by IBM
- 2002: Java 1.4 released. According to my friend, up to this point it was a perfect language, then they broke it.
- 2004: Eclipse Foundation started
- 2004: Java 1.5 released.
- 2006: Java 6 released.
- 2011: Java 7 released.
- 2013: Java 8 to be released.
But things has changed. Java is under heavy development again. Java is being open-sourced. This opens a lot of questions:
- how long will we have to stay with Java 1.4?
- is there any plan of migrations when Java will get frequent releases?
- what to do with features that really require latest Java (f.e. Jetty)?
Interesting times indeed.
Monday, February 18, 2013
Fixing spacing issue in Eclipse in Gnome
Sometimes 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 ( David Mansfield) reported a bug
Bug 910812 - line spacing in tree (specifically in eclipse, e.g. package explorer) is way too large.
and attached following screenshots:
This is how Eclipse used to look like on Linux:
And this is how it looks like now:
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.
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:
Eclipse does not look nicer after that, but it's a way more ergonomic, isn't it?
Happy hacking!
Bug 910812 - line spacing in tree (specifically in eclipse, e.g. package explorer) is way too large.
and attached following screenshots:
This is how Eclipse used to look like on Linux:
| Screenshot of Package Explorer running in a past versions of Fedora. |
| Current appearance of Package Explorer. Note the spacing. |
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:
cat >> ~/.gtkrc.mine << EOF
style "tree" {
GtkTreeView::vertical-separator = 0
}
class "GtkTreeView" style "tree"
EOF
Eclipse does not look nicer after that, but it's a way more ergonomic, isn't it?
Happy hacking!
Wednesday, January 30, 2013
Installing Counter Strike on Fedora 18 in 4 steps. And some comments.
(1) Follow the instructions listed on this blog to install Steam. Don't worry, it works well on Fedora 18, too.
(1a) If you wonder who is 'Spot', the Fedora 18 unofficial steam package provider, checkout out his short bio on fedoraproject wiki.
(2) Install Counter Strike 1.6 using Steam Client. A piece of cake.
(3) Now the important part: go to your local steam directory
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.
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.
We, as an open source community, should never forget what happens if you ignore your users.
Happy fragging!
(1a) If you wonder who is 'Spot', the Fedora 18 unofficial steam package provider, checkout out his short bio on fedoraproject wiki.
(2) Install Counter Strike 1.6 using Steam Client. A piece of cake.
(3) Now the important part: go to your local steam directory
~/.steamdirectory and create a symlink to provide all libs that are required by the game.
cd ~/.steam ln -s bin32 sdk32(4) Play!
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.
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.
We, as an open source community, should never forget what happens if you ignore your users.
Happy fragging!
Tuesday, January 29, 2013
That's just unbelievable
Thursday, January 3, 2013
Eclipse Git update
New Year gift to Fedora users: yet another performance update, this time to EGit and JGit, has been just submitted.
It contains a new upstream release 2.2.0 with an impressive number of new features and enhancement, among which the most important (for me) is incremental reindexing of repository.
Actually this update and last Eclipse update reduced the heap usage almost by half, and Eclipse is much more responsive now. Check it out!
sudo yum --enablerepo="updates-testing" update eclipse eclipse-egit eclipse-jgit
The entire list of EGit/JGit is here and here.
Happy New Year Hacking!
It contains a new upstream release 2.2.0 with an impressive number of new features and enhancement, among which the most important (for me) is incremental reindexing of repository.
Actually this update and last Eclipse update reduced the heap usage almost by half, and Eclipse is much more responsive now. Check it out!
sudo yum --enablerepo="updates-testing" update eclipse eclipse-egit eclipse-jgit
The entire list of EGit/JGit is here and here.
Happy New Year Hacking!
Friday, December 28, 2012
Fedora Eclipse - update to a snapshot version
I decided to update Eclipse version to the repository snapshot and push this new build into Fedora 18. It's available in updates-testing repository. This is not something that is welcome in Fedora world as unreleased software tends to be unstable.
But this time is a little bit different. If you open the 'Install Software' dialog, you will notice that a new category appeared - Juno SR1 Patches:
This patch fixes, among others, the most annoying issue with Eclipse 4.2.1 -
Happy Hacking!
But this time is a little bit different. If you open the 'Install Software' dialog, you will notice that a new category appeared - Juno SR1 Patches:
This patch fixes, among others, the most annoying issue with Eclipse 4.2.1 -
Bug 391868 - very slow switching editors; especially XML.Only this bug made it worth to push a new build into Fedora 18. If you are interested in what else was fixed, look at this bugzilla query.
Happy Hacking!
Thursday, December 27, 2012
Installing ADT into Fedora Eclipse
ADT have quite a long history of not working with Fedora Eclipse due to the various ClassCastExceptions and ClassNotFoundExceptions. Majority of those problems is caused by a simple fact - JVM provides a number of java packages that are also provided by Eclipse plugins (javax.xml, org.w3c.dom and others) and were part of Eclipse before they were introduced to JVM.
So, installing any plugin (like org.apache.xerces required by ADT) that required javax.xml caused two instances of those package to live together in different classloaders. Whenever they met, CCE or CNFE was thrown. Typical scenario was:
Unfortunately there is no way to fix the Eclipse package itself - as it is not broken. It is just the matter of integration - and it will not happen until there is someone who is willing to package ADT for Fedora. I'm going to propose this task as a GSoC project (unless someone steps up earlier).
So, installing any plugin (like org.apache.xerces required by ADT) that required javax.xml caused two instances of those package to live together in different classloaders. Whenever they met, CCE or CNFE was thrown. Typical scenario was:
- Plugin A is started and loads javax.xml (VM version)
- Plugin B is started and loads javax.xml (bundle version).
- Plugin C calls A, gets some javax.xml class instance, and passes it to plugin B. Since each plugin has a separate classloader, CCE is thrown.
Unfortunately there is no way to fix the Eclipse package itself - as it is not broken. It is just the matter of integration - and it will not happen until there is someone who is willing to package ADT for Fedora. I'm going to propose this task as a GSoC project (unless someone steps up earlier).
Subscribe to:
Posts (Atom)














