Monday, December 13, 2010

ProjectCenter 0.6.0

ProjectCenter, GNUstep's IDE, equivalent of ProjectBuilder / XCode was released in version 0.6.0.

  • New project format, bundle-based, user information is separated from project information: this makes collaboration of different people easier with CVS/SVN/etc
  • Editor undo support
  • Support for setting the project Installation domain
  • Improved gnustep-make 2.x support in both the project itself as in the project generation
  • integrated debugger
  • first integration between ProjectCenter and Gorm regarding
  • improved usage and run on Windows
  • uncountable bug fixes (in syntax highlighting, detachable editors, portability...)

Happy coding!

ProjectCenter page.

Sunday, November 28, 2010

DataBasin 0.2

DataBasin v 0.2 was released, the free software, open source tool for working with Salesforce.com.

The core library was enhanced and new features were added.

Read more and download it from the DataBasin homepage.

Monday, November 15, 2010

New Workspace icons


NSWorkspace handles now a new set of icons reserved for special folders, similar to what Apples Finder always did or what Windows does. Up to now the root icon and the user home were special.
I designed and added a new cache-based handling to NSWorkspace for the icons depicting the user's Documents, Images and Downloads. For the the System folder a new icon is associated where applicable, since it doesn't make sense in certain Layout. The Library icon will associated with the Library folder in all Domains (System, Network, Local).

GWorkspace has been adapted to display these icons and it is the primary goal. Check the screenshot and spot them! However since the Icons and the Code are supplied by GNUstep core they will be available for alternative Workspace and File Managers or for any application which asks the Workspace for the icons to display.

If you want to try them out, you need the SVN trunk version of GWorkspace, gui and base. The latter is needed because NSPathUtilities needed some tweaking.

The icons are for the default theme currently. I plan to update other themes soon.

Thursday, November 11, 2010

bilinear filtering


Finally PRICE got proper Bilinear filtering.

This was surely long due! The previous linear h+v filter was little more than a quick hack.

Bilinear filtering is quick, good and quite sharp and works well with scaling between the 50% and the 150% range. It is quite good when downscaling while upscaling beyond a certain range surely has better algorithms.

LaternaMagica and its export tool with automatic constraining will benefit from this new filter too.

Monday, October 25, 2010

Internet module for SystemPreferences

I created a new System Preference Module called Internet. It is intended to hold system-wide configurations for Internet applications, a bit like Macintosh had up to version 10.2 (or, for that matter, even the older System 7.5 up to 9... or SGI Irix IndigoMagic...).

Currently, the preference implemented is the default browser selection (used by NSWorkspace when it has to open URLs). The registered browsers are presented, they are set immediately on selection and the corresponding application icon is conveniently displayed.

Currently the selection of browsers is essentially limited to Vespucci and SWK's test-bed SWK Browser. Browser wrappers are not supported because they are unable to register with NSWorkspace correctly as they can't open URLs.


Saturday, October 23, 2010

Browsing GNUstep documentation


A quick update! Vespucci and SWK are now able to display our GNUstep documentation. Links and frames do work now much better now. This required an patient debugging in URL management.
This is a milestone in the usage of SWK and shows that it can be already very useful as an embedded view.

Saturday, October 16, 2010

Vespucci and SWK news update


It has been quite some time since the last post here. My coding efforts were and are scattered among the various GAP applications. Vespucci has lately received most of the attention. The window and document controllers were rewritten to follow more the NSDocument and NSDocumentController philosophy. The major benefit is that some smaller features that worked only on Mac now work well also on GNUstep.
The recent Document list now works, which is handy for local files. Opening URLs fron NSWorkspace works more reliably.
During the restructuring, I added the classic back and forward buttons. Thanks to suggestions of Wolfgang Lux now both the buttons and the menu entries are validating and disable/enable themselves.

Incidentally, the screenshot of Vespucci running on GNUstep is also on HURD! The mac screenshot shows the portability and shows that on Cocoa SWK has rough table support through NSTextTable.

Wednesday, July 14, 2010

Native Print Preview in GNUstep


The upcoming GSPdf version can be used seamlessly to do Print Preview in GNUstep. The provision to do that has long been in GNUstep's printing code, but no application exploited it.

GSPdf is undergoing quite some restructuring and is now a true document-based application. This allows it to register properly for the post script viewing task. Activationg GhostScript's anti-aliasing is supported too (look at the screenshot, where Graphos itself is running without).

GSPdf is an interface to ghostscript as gv is, so the displayed quality should remain the same.

Thursday, July 01, 2010

GWorkspace 0.8.8 released


GWorkspace 0.8.8 is out! Many thanks to all those who helped with testing or contributed with patches.

GWorkspace is GNUstep's standard workspace manager.

Among the improvements:

  • the GWMetadata subproject is now controlled by a configure option. This means
    that sqlite is no longer a hard dependency if live folders and search
    functionality is not desired. It also means that if selected, it will be really
    configured, built and installed (up to now it was manual).
  • portability issues fixed (SPARC crashes, HURD constants)
  • builds on Windows (MinGW)
  • clean-ups and updates in the build system
  • extensive warning fixing and code clean-up (like header imports)
  • use standard classes and functions (NSProgressIndicator, info panel...)
  • improved terminal services interface and interaction
  • improvements with the detection of optional PDFkit for the PDF contents inspector

The compulsory screenshot shows GWorkspace running with the Neos theme from GAP.

Friday, June 25, 2010

First release of DataBasin


I'm pleased to announce the first release of DataBasin, a tool which allows to access Data on SalesForce.com using its WebService APIs. Core part of the tool is the API implementation in Objective-C, which uses the GNUstep WebServices for the low-level interaction.

The API implementation is designed to be reusable in other application and is LGPL'd.

Basic functionalities like Query, Insert and Delete are implemented (and of course log-in!) but the tool contains many rough parts, like the CVS importer/exporter so production use is not yet recommended.

As far as I know this is the only open source library for Salesforce.com, at least in Objective-C.

In the screenshot DataBasin running on Debian GNU/Linux.


A big thanks to many friends who helped me implementing the API and debugging the SOAP Calls. First of all Richard Frith-MacDonald who extended the GSWS to support SOAP in the first place. Then two colleagues, Andrea Rosa and Enrico Murru who helped track down many bugs.




Tuesday, June 08, 2010

Graphos released

Today is my birthday and I am pleased to finally release Graphos 0.1!

Graphos is a new version of GDraw I was working over the past few years, read past blog entries about it. It is a vector drawing application for GNUstep.

Graphos is available from the GNUstep Application Project.

Thursday, June 03, 2010

ProjectCenter has now Undo

I made a second attempt in implementing Undo support for ProjectCenter (GNUstep's IDE) I was much more successful thanks to Wolfgang's suggestions.

ProjectCenter now supports Undo in the Editor, both if it is docked inside the project window or if it is standalone. A few rough edges remain, but it appears to be functional and usable.

Finally! A small feature I was missing since a long time.

Battery Monitor 0.5

I released Battery Monitor 0.5 for GNUstep. This version includes some bug fixes and most importantly it supports the ACPI information in the /sys filesystem available on the more recent Linux kernels (as compared to /proc).

I noticed that for some ACPI implementation information is written in both places, but for some it is only in /sys so BatteryMonitor wasn't able to find a battery.

Currently /proc is still available as a fall-back if no battery is found in /sys, but I plan to deprecate and remove it in the future.

Batmon is available as usual in GAP.


Tuesday, May 25, 2010

Terminal 0.9.7

I released Terminal 0.9.7.

This version is a maintenance release that guarantees compilation again on the most recent GNUstep release. This release contains code clean-up, fixes of recent and long-standing warnings and some smaller bug fixes.

Sources are available at Terminal's page in the GNUstep Application Project.

Tuesday, May 18, 2010

Sleek is back


I once created a color scheme for the "Color Schemes" preference module I too created long ago.

However, the Color Schemes module was deprecated (it still exists, but it is not installed by default) since we have the new Theme module and the Theme Engine in GNUstep. Themes have all the capabilities of the old Color schemes, plus of course new features.

Since I apparently had some faithful users of the old scheme, I took the effort to remake it as a Theme and also tweak some more details. It is already better than the old one. but other details can be tweaked and improved as a theme. However it is almost ready for a 0.1 release!

I hope the new theme will enjoy the same popularity that the old scheme had!


The appearance of GNUstep gets lighter, it looses much of the 3d accent. Somebody may call it more modern.


Thursday, March 25, 2010

DataBasin gets Update and a new inspector


DataBasin, the SOAP data access tool for Salesforce of the GNUstep Application Project, got new features! Check the screenshot.

The SOAP layer was enriched with the update call. To perform an update the steps are identical to an Insert and the already existing object describe is use to retrieve the list of available objects. Currently, as with Insert, the CSV column titles need to match exactly the Salesforce fields.

Also, DataBasin got a new inspector about the user properties retrieved during login. These informations can be handy during development, like the ID of the Org, the User, its profile and role. They are exposed in Output-only fields with support for copy-paste to other applications

Monday, February 08, 2010

Grr working on windows


Grr now works under Windows! Another proof of GNUstep's versatility.

Screenshot attached, with the upcoming native WindowsUXTheme. Note the scrollbars, checkboxes, native in-window menus, native window-decorations for windows and panels...




Thursday, January 28, 2010

Graphos has undo...

Graphos (GAP Vector editor) got undo support. Add/remove shapes (that worked already) and proper undo of moving, inspecting and editing shapes.

This required implementing shallow vs. deep copy of the objects, but the deep copy needs to be smart about which references are indeed duplicated and which not... A bit of fun programming!

Tuesday, January 26, 2010

LaternaMagica v0.2


Laterna Magica v0.2 is out! New features are more keyboard short-cuts, JPEG saving and better in-window menus support (NSWindow95Style). The latter feature delayed release another bit of this long-due release, but it works great.

The attached screenshot shows LaternaMagica running on windows using the experimental WinUXTheme which draws several controls native including in-window menus. Note how the menu is attached to the main application window but not to the image window.

LaternaMagica home page


Friday, January 08, 2010

Native theming on Windows progress


Scrollbars now draw properly on Windows using the native WinUXTheme, sizing and placing is correct.


In the screenshot you can see Graphos running with the current version of the native windows theme.

Monday, December 28, 2009

Graphos: vector Drawing application for GNUstep


A long time ago 10 years now, Enrico Sersale began to work on a very interesting and promising application: GDraw. A vector drawing application for GNUstep. Its spline drawing capabilities and document-based design were very advanced for those early days of GNUstep.

A long time passed, there were no further developments and the application bitrotted, starting not to compile any more under GNUstep or not working properly in any case.

I decided to make GDraw come back from the ashes under the name of Graphos. It took me a lot of work to bring it up-to-date.

From a user perspective little has changed, as a kind of tribute to the original work I left the user-interface essentially as-is, planning to change and enhance it only in the next release. However when the application was written, Gorm was in its infancy so for example the Menus were hard-coded. Now they are done properly in Gorm.

All drawing operations were PostScript based, I converted them to use NSBezierPath, this makes the application portable to Macintosh and Cocoa, as the attached screenshot testifies.

I wanted then to bug-.fix and complete some of the existing functions, The when I tried to complete the implementation of the "Box" tool, I found out that the architecture was unclear and limited making it next to impossible to continue.

The upcoming task was thus an incremental re-factoring of the application core. The code itself was almost untouched, but a clearer distinction was formed between Editors and Objects (improving also the file format, making it Editor independent). Object inheritance permits now easier extension and organization of the code.

Now Graphos works on Mac and GNUstep almost like its predecessor GDraw, I intend to make a preliminary release soon and then evolve its missing functions and perform more refactoring.

The file format changed only little and Graphos is able to read GDraw files (but not the opposite) due to a better Editor/Object distinction.

Almost a tribute to a ghost from the past, I hope Enrico will appreciate the efforts.

As usual, the application is part of GAP, the GNUstep Application Project where it finds its new home.




Monday, November 02, 2009

Theme module for SystemPreferences


I implemented a new preference module for System Preferences. It allows the selection of the preferred theme system-wide for the current user (NSGlobalDefault GSTheme)

This is finally the way an end-user should set his preferred theme, since currently either the command line was needed (defaults write) or only per-application setting was possible.

The module uses themes for GSTheme and they can be created with thematic. It displays a short description, the author, if available the version, the icon and a small theme preview. Since it would be almost impossible to do a preview in a subview, each bundle can carry an image of its preview.

The user can "Apply" the theme which means essentially to set the selected theme to the SystemPreferences application as a sort of preview or to Save, which writes the default permanently.

In the attached screenshot, you can see that the "ThinkDark" theme is applied temporarily and that the user is inspecting the Neos theme. The rest of the system however still runs the standard theme.

Thanks to the dynamic loading capabilities of GSTheme, after saving the theme all application get the new theme immediately.

The Themes module supersedes the Color Schemes control panel which is thus now no longer built and installed by default, although it remains available.

System Preferences 1.1.0 was thus released, combining some other minor code and makefile improvements already present

Up-to-date themes are present in the GAP CVS repository, they will be re-released soon.



Tuesday, October 20, 2009

DataBasin and deletion of Salesforce records


I implemented delete in the Salesforce.com API Layer (DBSoap) of DataBasin.

The screenshot shows DataBasin running on the Mac, natively built in Xcode.

Delete is capable of deleting an array of records, on top of this I implemented a convenient function: QuickDelete. Just enter a Saleforce.com ID and delete it.

Full handling of the error results is still missing, currently only the verbose message are retrieved. For the QuickDelete an error gets conveniently displayed as if it were an exception in a small scrollable panel.



Wednesday, October 14, 2009

Grr: RSS to go on GNUstep


Guenther Noack, the Author of Grr, donated the appreciated RSS Reader and its Framework RSSKit to the GNUstep Application Project some time ago, since he had no time to maintain it any more. I will not promise anything, but as it is usual for GAP projects we try hard to make our programs compatible.

Thus Grr got a general make up of crash fixes, makefile fixes and warning fixes. Then an extensive work of removing forward declaration of Protocols was done so that compilation on gcc 29.5 is now possible, expanding the list of platforms where to run Grr on.

I compiled and ported Grr to the MIPS based Letux 400 netbook as can be seen in the screenshot. Grr uns perfectly and thus tracking RSS on the small device is now smooth as butter. RSS everywhere with you!

Friday, September 25, 2009

OpenOffice frustration

Subtitle: Why OpenSource continues to fail in many sectors.

Now. this is going to be a negative post full of criticism. Beware and decide if you want to stop reading. A rant.

A premise: I have mainly two uses of Open Source: the first is personal. That means I do stuff for myself. Or maybe I use it with my development of Open Source. That means I use it within a clean environment. Mostly I use developer tools but also Office and Graphics tool. But it is easy, I send material to a colleague that means he is most probably using the same thing.

The real problem is the second use: real business. Here things immediately take another turn. There are no excuses. My main rant is against OpenOffice and MS Office incompatibility. There are no excuses possible!

The new shiny 3.1.1 is out there and once again I give it a try. It is so appealing to have an alternative. An alternative which I can also use on Linux, on BSD or on Solaris. And on Windows of course. I notice many improvements, the applications on Windows XP looks good. I am pleased that OO did not yet follow the terrible "new MS style without menu bars and big fancy icons". I know it will happen, but for now it is fine.

But what is the real world task I need to solve? Take a file from a colleague, work on it, give it back. Sounds simple, doesn't it?

I take a power point file, modify it, give it back.

The file is ruined, the graphic images are broken. Things gets misplaced, connectors are broken...

The verdict is just one: OpenOffice is unusable in the real world. So sorry to say that. 

I reported a similar bug in Word documents about a year ago. The comments were more or less useless. Like "duplicate" or "we are different". Now indeed, there are a lot of bugs about similar problems posted. With that philosophy you can't go far with applications that need to inter-operate.

Also, I may note, that OpenOffice clearly dips into MS Office footsteps. It is not a "different" office suite. It is a suite that wants to appeal the MS user. You see it in almost every detail of the user interface. Also, the compatibility is actually high, but not enough. There are no excuses.

Heck, OpenOffice has that small office assistant even! But corrupts diagrams? 

Yet some of the compatibility bugs are there since months, years even. I do not care in this case on how much I can do "within" OpenOffice itself: I am not making a slide presentation for FOSDEM, I am making one for someone else, that someone else will be using MS Office or, in any case, expects that as an exchange format.

Thursday, September 03, 2009

Neos: make-up for GNUstep


I released today a first version of Neos, a new theme for GNUstep. It is not yet a definitive release, but perfectly usable. More subtle, with less contrast. Yet I intend to retain the NeXT spirit to the maximum.

I will try to make minor releases which each change I implement, up to a first official release.

The theme is done inside Thematic and also illustrates the progress done on that front, the current Neos version is code-less and consists only in new pixmaps and other point-and-click configurations.

The Neos theme is part of the GAP project and there I created an extra section to collect themes, wallpapers, color schemes to offer an easy way to adapt and customize the GNUstep interface, something which gets often criticized.


In the screenshot, the Gorm document and palette with the new theme.

Friday, August 21, 2009

DataBasin is now able to create records in sfdc


DataBasin is now able to create records in SalesForce.com starting from a CSV file.

First, as shown in the screenshot, the already implemented method describeGlobal retrieves the available objects to insert into. Once the user selects them the CSV file is read and the objects get created. There is no provision yet for mapping the fields, the first line is assumed to contain the field names.

The API implemented by DBSoap is now getting a little more complete step after step. The basic operations of creation and query are already possible.

Saturday, August 08, 2009

describeGlobal implemented in DataBasin

I implemented describeGlobal in the DBSoap layer of DataBasin which communicates with salesforce.com. Thus a list of all objects in the system can be queried, standard and custom objects. The return is just an array of strings.

Step after step I am recreating a simple API interface to the salesforce.com Web services in pure Objective-C.

Friday, July 10, 2009

Login manager for GNUstep


After 7 years and 5 months that it was committed to GAP, during which it was more or less dormant, LoginPanel saw a surge in activity again. A first public release is near. With it, the "Desktop Environment" experience will begin right at the beginning.

First, authentication is now possible both with PAM as with a fallback on standard UNIX /etc/passwd files.
Then, the most important work, a session gets started with the execution of the standard .xsession file. Terminating a session gets then correctly all processes killed

I propose something along the lines:
wmaker&
exec openapp GWorkspace
That will make the session dependent on GWorkspace and not WindowMaker, this way the "Logout" command does indeed log the user out.
Also Gregory implemented a way to set a default variable at application startup so that the mini-window doesn't get drawn, this is important both at startup, when no window manager is running, as well as during execution, since loginpanel remains "frozen" in the background.

More informations will come on the GAP website.

Sunday, July 05, 2009

GShisen 1.3.0 released

GShisen 1.3.0 is there!

GShisen is a long-existing GNUstep application written by Enrico Sersale many years ago, its claim is to be the first GNUstep game. Unfortunately, as many old application, it did not see any maintenance and updates and started to bitrot.

I decided to overhaul it and import it into the GNUstep Application Project.

The biggest change is that it now uses Gorm files to create the interface instead of creating it from code. This means less code to maintain. A new project was created and the makefile is now gnustep make 2.0 compliant.

Once the restructuring was done, the game was ported to both Mac and Windows, as past posts on this blog document, for added fun on any platform. It also of course certifies again the maturity and flexibility of GNUstep on different Platforms. Note that the Mac port is completely native without the need of GNUstep at all.

GSPdf 0.3 released

Version 0.3 GSPdf has been released The main feature is a Preference Panel where the user can select the GhostScript binary to use. Packagers are still encouraged to set the default path which is correct for the operating system they target to, but now for example multiple instances of GS are easily supported.

GSPdf is a PDF and PostScript viewer for GNUstep, it is a backend to GhostScript.

Wednesday, June 17, 2009

Limited screen real estate

The Letux 400 has a wide-VGA screen, 800x480 pixels. Bright, crisp and well readable, but sure an uncommon format. 800x600 was common for laptops for a long time.
How do standard desktop applications fare on the Netbook? Some just don't fit, but there are several which just work and allow to have a small workspace available.

The first screenshot shows that albeit crammed, the Workspace is fine. The panel with the folders could be closed to gain even more space. Behind you can see the Terminal application. Sure, only one can be seen at a time, but it is enough to work.

Then we have the AddressManager showing up in all its glory. Fits tight but fits. A really useful application on a Netbook!






The last image shows the Vespucci browser on the Letux. Works fine.

Note: Screenshots are from applications actually running on the Letux 400, not mock-ups.

Friday, June 12, 2009

GShisen on Windows


Well, after having ported to GShisen to Macintosh I had absolutely get it running on Windows. This requried some minor changs in the code since mingw is not a complete POSIX system.
However, as the screenshot testifies, GNUstep proves once again its portability power. The screenshot also shows the horizontal in-window style menus.

Thursday, June 11, 2009

GShisen on the Macintosh


So, after the work of clean-up of GShisen its interface is now created mostly from its Gorm file, including its menu structure and dialog panels. The nice thing is that mostly it was code removal! Everything is not smoother and clearer.

Now, with a clean project I attempted a port to Mac, I redid the whole project in Xcode and the NIB file in InterfaceBuilder, within two hours I had a usable GShien on the Macintosh. A port already existed, but the new NIB-based interface is much smoother and indeed perfectly native. Really amazing at how fast the port is and how ProjectCenter-XCode and Gorm-IB relate side by side. I actually like how clean the GNUstep counterparts are. Setting up the InfoPanel on ProjectCenter is a breeze and it comes out perfect!

Friday, June 05, 2009

Reviving GShisen

There is an application - half forgotten - that claims to be the first GNUstep game: GShisen. It is part of of the large number of programs Enrico Sersale worked on.

The application has its roots 9 years ago and its code, and project is old, although it still works fine.

I intend to make GShisen part of the GNUstep Application Project: development in GNUstep has taken long strides and I want to update GShisen for it: a modern ProjectCenter project and not hand coded files, GORM files for windows but also menus, which were hand coded in main.m! As well as standard ways to show Infopanels, dialogs, etc. Things are so convenient now. The advantage is also that the code size gets smaller!

For the first release, I do not intend to add any new features, the user won't notice the difference.

Stay tuned! (Or check GAP cvs for progress)

Wednesday, June 03, 2009

GNUstep to go... on MIPS


GNUstep is addictive, so one has to have it always handy... laptops, virtual machines, Windows port are means, but netbooks? The current trend?

The smallest one I found around is the Letux 400. This small nifty thing is light (670g, about 2/3 of the typical Atom netbook) and really small, as an A5 piece of paper. Small enough that the thumbs can reach the touchpad. The display is small, but extremely bright and very crisp. It is perfectly viewable even outside with sunlight, really amazing. Both WiFi as standard LAN networking are present. The nice touch is the MIPS CPU instead of an x86, which, as a seasoned SGI machine user, stirred up my interest. The CPU, of embedded fame, is just passively cooled (which, since the 2GB flash constitutes the solid-state drive, makes it absolutely silent) and consumes little power, I reached more than the stated 4h of operation, getting almost 5h sometimes.

The picture compares the Letux 400 atop of my Compaq EVO notebook. You can also barely see GWorkspace and Vespucci running on it...

The machine comes with a 2.4 series kernel and a custom distribution, which I won't discuss here. Golden Delicious computer, the distributor, sets up a second partition where Debian comes preinstalled and with a script (easy to customize) it is possible to work with chroot in Debian. This is a good setup for the current phases of development, convenient as it uses the standard mipsel distribution.

With the current version of GNUstep, it is possible to install easily the core system and, thanks to the GNUstep Application Project, one can get a small and functional GNUstep environment. The Workspace Manager GWorkspace runs fine as well as Terminal.

Of course I also tried SimpleWebKit and Vespucci on the Letux and, as expected, they work fine and run! It is the foray to a small, portable browser.

The future is bright! Apart from standard GNUstep development, a better kernel (2.6, which is in the work) able to solve some of the glitches present in the SkyTone supplied one, as well as a more optimized Linux distribution instead of the chrooted Debian could provide a really interesting ultra-mobile solution for GNUstep.

Tuesday, March 31, 2009

A pracitcal use...


Vespucci + SWK are approaching a state where they are of practical use: browsing the GNUstep reference documentation! Some things are still rough, but the latest work on Frames by Nikolaus is very promising.

Sunday, February 15, 2009

A browser on HURD


From time to time I check how the status of GNUstep is on GNU/HURD. After all, the goal of GNUstep and the GNUstep Application Project is to provide a complete Workspace or, in current speak, a Desktop Environment.


So, why do not use it on HURD, the crown of the GNU OS? Hurd is a project always in an unkown status, with the menace of changing the microkernel to something unknown, but with nobody taking GNU-Mach to top-notch status.


In any case, the combination of Debian on HURD is pretty interesting and complete and the advantage is that getting a "familiar" environment is relatively easy.


In any case, currently GNUstep on HURD runs pretty reasonable. With pedning limitaitons, the core seems to work, Workspace runs, the Terminal application does work and what is perhaps coolest, the Vespucci browser runs! So this not only proves the portability of gnustep core and simplewebkit, but also gives hope for a decent graphical web browser for Hurd once simplewebkit progresses more.

Monday, February 02, 2009

Bookmarks... and drawing pencils

Bookmarks are maybe the most valuable personal value that gets created by a user with a browser.  Bookmarks are what you miss if you use somebody else's computer or you loose your data for whatever reason.
Just a couple of days before OrobienStep I discussed extensively with Greg a flexible and yet simple bookmark archival strategy for Vespucci. I started implementing it,  then at OrobienStep with Nikolaus I shared the idea, since it would be core for the future to have a shared and exchangeable data model. Exchanging bookmarks from the GNUstep workstation to myStep mobile solutions, to ports to the mac, to netbooks... pretty much essential.
We did some reverse engineering of the Safari bookmark format and it did have similarities to my format, although it looks a bit more quirky and complex, the basic information is the same, so I started adapting my loader to it.
Vespucci is now able to load Safari bookmarks without any modifications and the native format of Vespucci is almost the same, so saved bookmarks can be loaded in Safari again. iSync information  does not get produced by Vespucci and gets lost if previously converted.
I think the result was worth the extra effort.


One note: you can also port over your Safari bookmarks from the Macintosh to GNUstep, but the property list (plist) needs to be converted from XML to the standard format. You can do that with the "Property List Editor" utility supplied by apple, use "ASCII Property List File".
And as an end note... I had some graphic design time as a break from coding time. Laterna Magica and Vespucci enjoy new icons...

Sunday, January 25, 2009

OrobienStep '09

The developers departed, the lights have been shut down: OrobienStep has ended. We had a nice developer meeting in Italy, near Bergamo. We started Friday evening and went on to Sunday afternoon. Staying at Hotel Quarti, we had a convenient meeting room equipped with LAN, WLAN, Beamer, flip-chart... Attendees were Fred, Nikolaus, Gerold and of course myself, Riccardo. Gregory was able to communicate through skype and webcamera.

Friday was more a warm-up day. Windows work was a bit halted since the new make from svn busted both my gnustep installations. That overcome, work started well.

We tackled several areas and poor Fred was a bit overbooked since a lot came down to gui and back.

  • SimpleWebKit made great strides. Existing bugs with redirect were squashed by Nikolaus, which allows now to visit sites like google or yahoo. Nikolaus worked on Form support too, which got to a reasonable state on Cocoa (sending the data is still buggy) but it still doesn't work on GNUstep
  • both SWKBrowser and Vespucci saw work on Bookmarks support
  • both SWKBrowser and Vespucci got document editor/viewer type problems fixed on GNUstep and can now correctly do new document and open files from disk
  • art backend can now display 16bit images (both on little and big endian machines)
  • sparse bugs were fixed which impeded Windows compilation
  • several bugs were discovered or analyzed (windows problems with display and keycodes, missing features which cause Bean not to save files correctly, focus problems with gnome

A lot of information was exchanged, ideas discussed... I think everything was quite interesting and if an actual implementation follows it will be great.

We demoed some cool stuff to each other too:

  • Nikolaus showed us the evolution on his Macintosh software for the bluetooth Paperium pen+block system
  • we played on the Letux 400 system, an extremely small MIPS based netbook
  • I demoed DataBasin

All in all, everything was packed and productive. Nice trips to Italian restaurants were in, but unfortunately due to the tight schedule and the cold weather, no sightseeing was possible.

Tuesday, January 20, 2009

DataBasin, or how to access salesforce.com from Objective-C


After several weeks of work, I can announce my first concrete success: the download of the contact list from the CRM to a CSV file.

On supported platforms, like Java or C#, salesforce.com offers libraries for a convenient access to their APIs (webservice interfaces). For Objective-C and GNUstep of course there is nothing of the kind. Thus I started writing a layer to access the webservices directly using SOAP calls. To be able to write those, I use GNUstep's WebServices framework, which I discovered was still quite rough and incomplete. Richard Frith-MacDonald though promptly debugged it and extended it. Until the first login was possible, a lot of debugging and investigation on the calls was necessary, I was patiently supported by my colleague Andrea Rosa.

Currently the donload means that the Login method completes correctly and returns a valid session, which is then reused to perform the query request and interpret its response. It is a demonstration that the whole concept can work

My intention is to develop DataBasin to be a free Open Source alternative to the DataLoader tool supplied by salesforce.com. Once I reach that goal, I alreayd have further ideas on how to extend it.

DataBasin is part of the GNUstep Application Project and will be released there once ready for prime time.

Tuesday, December 02, 2008

FTP 0.2 released


Finally, after months of delays and tweaks, FTP 0.2 is out! FTP is the FTP application in GAP for GNUstep and Macintosh.

Externally, few changes can be noticed: a new icon, the correct fixed pitch font in the log window and little more.

Internally, several changes happened though. Two are the main news.

First, the socket core was rewritten not to use file operations: on non-Unix systems sockets may not be files. This change allows, after some additional effort, to run FTP on windows. Thus FTP now runs natively on the Macintosh, runs on GNUstep on unix systems like BSD, Solaris or Linux and now on Windows too.

Second, the data connections are handled in a separate thread, which talks back to the main thread using DO (Distributed Objects). This allows the UI to remain responsive during list and download operations: this wasn't a real issue on the Macintosh, but on GNUstep windows wouldn't even redraw their contents during download, making the progress bar pretty useless. I still do not allow concurrent downloads, since the FTP protocol is not designed for that and it needs some workarounds.

Enjoy! Be sure to have the latest version of GNUstep base, since the DO system contains some fixes which are needed for FTP to work correctly.

Wednesday, October 22, 2008

The GNU Workspace

Thanks to the continuous improvement by the HURD team and thanks to a nice hacking evening with Matt Rice, quite some improvement was done on GNUstep with HURD. I was already able to have some rough results years ago, but then for a long time everything was unusably broken.

The only major thing to do was to set the global default NSPortIsMessagePort to NO.

In the screenshot we can see a GNU Workspace: done with GNUstep on GNU/Hurd.
GWorkspace is running, the upcoming FTP 0.2 can be seen too and it works well, meanign that distributed objects do work. Terminal.app works pretty fine as does the Rich text editor Ink. Not seen here, but ProjectCenter and Gorm do work too.

Cool is the front most application: Vespucci, the GAP browser which has at its core SimpleWebKit, runs too and loads an URL. This means that sockets, port, and rendering do work on Hurd well enough! Although still quite primitive, a browser on Hurd...

I have noticed some instabilities, with some applications starting up twice or closing and I suspect it is due to the applications not correctly registering with the daemons or with their ports dying.

Thursday, October 09, 2008

On Air!

I right finished a Radio talk with Gregory. Leo Laporte and Randal Schwartz interviewed us. It was a fun talk, many points got out and both the strengths of the project came out as well as the areas where we need help...

FlossWeekly #44 ! It got taped! Twit.TV FLOSS: watch for it on coming Friday.

Oh, as a side note, it means that GNUstep is still alive! Dead people don't usually speak.

Friday, September 19, 2008

Filing and refining

Few news here lately.
I have been busy looking and fixing several bugs inside FTP and GWorkspace, to make them ready for release. Today I was able to compile GWorkspace on Windows, a first after I updated the build system.
I collaborated also with Gregory and Fred to search and fix small bugs and issues withing base and gui, related to the applications mentioned above. So essentially, "polish" here and there and I would expect a release of the mentioned programs soon. Stay tuned.

Sunday, August 24, 2008

PRICE 0.8.3

Finally, after several months, PRICE 0.8.3 is out. Mainly it is a bug-fix and performance improvement release compared to 0.8.2. Chasing a memory leak which appeared only on GNUstep, Gregory found a piece of inefficient code which let to morememory usage and slower performance, but no solution to the hideous leak. Fred fixed it recently in GNUstep, this means that the PRICE code was good and that it was ready for release and that if you don't want to leak, you need the next gnustep-gui release.
Another issue is the License, the past GNUstep release was GPLv3 and this caused incompatibility to GPLv2; under Debian's maintainer suggestion I added an exception, but this is an unsatisfactory solution, thus I decided to relicense PRICE with GPLv2 and the "and later" option. Now GNUstep got relicensed back due to all the trouble; but my decision stands, also to avoid any more trouble in the future.

Monday, July 21, 2008

FTP news: Threads and Windows


After a long silent hiatus, now some good news!
Development proceeded, but I did not announce anything since the code was too buggy. Two were the areas of change since the ancient 0.1 release: threads and socket core.
I want FTP to have a worker thread during file transfers, else the user interface is unresponsive, which is barely acceptable on the Macintosh and unusable on GNUstep, where there wasn't even a progress refresh. My first attempts called the gui from the worker threads which gave problems on GNUstep. Now with DO, the controller separation is need and works very well.
I rewrote the core data transfer mechanism, which previously was in typical BSD style where sockets where used as standard files, which a more portable recv() approach. Together with some tweaks and macros this means that socket operations work on Windows!
FTP is thus now able to work on windows too, I attach a screenshot.

Sunday, July 13, 2008

Sunday Evening (AlemanniaStep)


Thus it came to an end, AlemanniaStep, that is. Thanks to a prepared schedule of topics, the short time was exploited well. We had an interesting demo of the development of various handheld devices by Nikolaus and we had some discussion about how to market ourselv better, how to improve the SoftwareIndex and our problems with packaging in distributions.

The rest was dedicated to hacking (as we see in the Picture, Fred fixing weird Font stuff that SWK triggered). Fred and I fixed the backend and Terminal bugs, Nikolaus hacked on SWK and I tested it on both Mac and GNUstep providing continuous feedback and it indeed improved.
Another session was dedicated to porting and checking of FlexiSheet, which we got finally compiling on the Mac, although with some compromises. Although not ready, it is foreseeable to adapt some pieces so it will run under GNUstep. Gerold found some issues with PCH on debian and made a good proposal in improving FTP after testing it.
These activities consumed quite some time, thus there was little time for windows. Also because one of the bugs didn't reproduce as expected.

I'll write about results in the next future, when they get a bit more finalized.

Friday, July 11, 2008

AlemanniaStep

Here we are in Freiburg, with Fred, at AlemanniaStep. Few people came, but those that came are good. Let's hope in a lot of new ideas, bug fixes and development.

Fred, Gerold, Nikolaus and Riccardo

Tuesday, April 08, 2008

New LapisPuzzle


LapisPuzzle 1.1.0 is out! The work of Banlu badly needed some updating since it was no longer usable. Matt Rice hinted me about what was wrong and I took the time to complete a better key event handling [NSEvent characters] instead of codes.
I also updated the Makefiles and now LapisPuzzle works on Windows, like the screenshot proves! Our Windows backend and port is actually in better shape than some people say.

Saturday, January 19, 2008

SystemPreferences 1.0.2


Finally SystemPreferences got released. Long due it contains a series of minor corrections since the past release of 2006: Updated makefiles against gnustep make 2 series, warning fixes and compilations on older platforms like gcc 2.95.

But maybe of more impact is the new Color Schemes module, written by me, which allows the setting of the color accent of GNUstep. It can select against ready made schemes and has a simple built-in editor. The schemes are compatible with backbones Preferences' application.

Included is for example the "GNUstep lighter" scheme which is visually very similar to the standard NeXT style colors but they are brighter: it is thought for people running their monitor with a different gamma than NeXT computers. It appears to be the majority since there were a lot of complaints about GNUstep being too dark!
If you run GNUstep applications on Windows I bet you will welcome this small new detail.

Monday, January 07, 2008

Browser and WebKit progress


Thanks to the continuous dedication of Nikolaus who worked and works on SimpleWebKit, a new, pure Objective-C WWW implementation compatible with Apple's WebKit implementation. It shows once again the real power of Objective-C and the Foundation and AppKit frameworks (and also shows what kind of unnecessary kludge Apple did).

Thanks to the efforts of Fred, Nikolaus himself, Gregory and me, SimpleWebKit and GNUstep AppKit evolved enough so that SWK can now display pages pretty decently, close to what the first screenshots from a mac showed.

Images, links, font size, rudimentary Header and list support is there. Horizontal rules. Bakcground and Font colors.

Also the DOM tree is pretty complete, so parsing is even more advanced than the display itself.

Thanks to the power of OpenStep Vespuccci already supports easily multi-window browsing. And scrolling inside the pages thanks to the scrolling of text views which Fred fixed.

The way to something usable is still long. No history, no tables, many small quirks even in basic 1.0 HTML when doing formatting.

But what counts is I think that an extremely big step was done. I was amazed when I saw everything working so smooth.

Monday, December 03, 2007

Watch your CPU


TimeMon, the CPU monitoring application popular on OpenStep runs now on NetBSD too. I added the necessary code to the GNUstep port, which is found inside the GAP project .
Porting involved using the correct sysctl calls (in true BSD philosophy, as opposed to the Linux mess which involves reading and parsing files!)

No, I didn't add myself to the list of the porters. Not yet.

Sunday, September 02, 2007

Live from AlpenStep '07


We are enjoying a nice time in Les Marecottes where we are holding our first AlpenStep meeting. On topic are hacking, discussions and presentations about the various projects. Bug fixing was great, but the highlight was the GSCake. Please check the attached photo with Gerold Rupprecht, patient organizer of the whole event, and the excellent instance of [GSCake initWithFun]. Subclasses of the GSCake object are allowed, but please send us the instance for compliance certification.

We had a presentation from the Etoile and their frameworks, simplewebkit bug smashing. Extremely geek was the new OpenMoko Neo which Nikolaus brought.

Members present were the busy organizer Gerold, gui maintainer Fred, etoile developers Quentin and Nicolas. GAP was represented by me. Lars was present too, Gürkan felt unwell unfortunately and left earlier.

Monday, July 02, 2007

Spin, spider, spin

Hard work in the past month of a couple of programmers brought a rendering engine and a browser for GNUstep a step closer! Currently most of the limitations SimpleWebKit had compared to myStep are solved! Quite a bit of debugging went into Vespucci too as it is being refactored in a document-based application capable of displaying multiple pages at the same time. Equally merit has to go to Richard who patiently helped to improve GNUstep's core to handle URLs and the HTTP streams. Thus the text you seen in the screenshot is actually downloaded from the Web, not just a mere static string. Although several problems still remain, you may notice that there is lready some font rendering and that the Horizontal Rule is rendered correctly!

The keenest of you may have noticed another detail! The whole application is running on Microsoft Windows! The build process needs to be manually tweaked, but a working executable is possible. It works worse than on Unix though: images represent a problem.

I was really eager to display our progress, but held it back a bit until some details were solved.

Friday, March 16, 2007

The spinning spider


Some interesting activities cook inside GNUstep and GAP projects! Dr. Schaller is working actively in a WebKit implementation for myStep. Now I and Peter Cooper are helping him to bring the Framework into GNUstep, it already compiles! Although a lot needs to be done and SimpleWebKit may never reach the completeness of Apple's implementation I still think it is an interesting task and a total objetive-c approach should not only prove the power of the language but also give us advantages in the future regarding efficiency and customization.
As soon as the framework compiled I started the development of Vespucci, the program that will be GAP's Browser. The screenshot shows the debug output of the Current WebKit, interpreted really from a simple HTML string.
Maybe after the failure of the original port attempt of the WebKit by means of wrappers, this is the first screenshot of a GNUstep Browser? Stay tuned!

Tuesday, February 27, 2007

The double-face of GNUstep

Yesterday I had a long call with Gregory and we smoothed out many details about what GNUstep is, where it is and where it should go.

I noticed really a lot of confusion about what GNUstep is, everybody seems to have his own ideas, some of them are indeed correct but just a part of the whole pictures, others are just plain wrong. This ambiguity doesn't help us as a project, it confuses the prospective end-users, it confuses potential developers and also stirs up quarrels and useless polemics inside the group.

Thus I may sum up what I consider GNUstep is: essentially I see a double use of GNUstep: the base for an environment, a workspace inspired by OPENSTEP and a cross-platform, portable framework that enables developer the deployment of their application on Unix (Linux, BSD, Solaris...), MacOS X and Windows. I consider these goals absolutely not conflicting and they should be both taken care of; furthermore one reinforces the other.

As an environment GNUstep needs to offer a working framework which is solid and well working on most of the major Unix systems. Features that some people could find useful refer mostly to the look and feel, a comprehensive set of applications and utilities (either provided by the GNUstep project, or, more aptly, by affiliated projects like GAP, Backbone or Etoilé) and their integration.
People who see in GNUstep an OS should find what is needed by this environment and supply the remaining by themselves.

A framework that enables portability needs to work on more operating systems and needs to be even more flexible: it needs to be able to blend in to the Look and Feel of the host OS (as an option of course) but it also needs good ways to deploy the application; for example if the installation of more GNUstep-based applications is intended, the installation of the framework plus the different binaries should be an option, while if GNUstep is used just for one single application, everything should be self-contained and GNUstep itself should be unnoticed by the end-user.
If a Desktop Application of a certain project can be considered useful standalone, it shall prove interesting to support it both as part of the Workspace as well as a single application ported, say, to Windows or Mac.

I feel positive about the GNUstep project offering a set of applications, like it does now, which could be considered as a reference implementation. What should be taken in account by the developers is never ever to take the existence of these applications as granted: this would make a real portable core impossible. These application should be considered an option and other projects shall be able to replace one or any of them. Still, their sheer existence should prove the point that GNUstep is more than a mere toolkit.
At the current state of things, there should be no official appointed "Desktop Project" and the end-user shall be granted the freedom of choice

Friday, September 22, 2006

Your distant desktop



Need to access your remode desktop on windows? rdesktop is your tool. Since it is tedious to remember every time all the command line options to specify the server and username, a small interface is a nifty think. Xfce and Debian isntalled me a working one, but I do not like the look of it, it has several bugs and quirks.... and it is GTK2.

So, let's objective-C, Gorm and in GNUstep and a small working app popped out. It is usable already and I wills oon release a 0.1 release, in GAP, I hope other people will like it too. The CVS is already public.

Of course, several features are needed to make it top-notch, but they will follow, stay tuned.

Thursday, May 04, 2006

more native xlib awt stuff


Woah! I hacked in kaffe awt up to deep in the night. The rendering of strings inside textfields was broken since a long time! The cursor and the typing was wrong, once enter was hit it worked.
I didn't have big hopes to fix this and I just tried to have a quick look. I discovered that the java part considered the fonts fixed width even if it wasn't and thus returned the wrong charWidth. Without much understanding and even lesser hope I messed inside the native methods!

I was able to understand the faulty logic and implement a new one by accessing the XFontSets and font structures. I queried my first X Atoms!


Although my implementation now is not very robust I think it is definitively correct and now the character width is computed correctly.

The lack of robustness is due that I take the first font struct of a fontset, from a XOC.


in the compulsory screenshot our AWT is running happily on Darwin X11 on MacosX 10.2.8... you may notice how nice the text fields and the file dialogs are!

Monday, May 01, 2006

more swing


I was able to fix further problems in the kaffe AWT ilpementation and to integrate it furthermore with classpath.
Radiobuttons do work now and menus started to be usable too! Most Layouts seem correct too.

Unfortunately some other compontents (like the tabbed pane) still don't work and I don't know how to solve the problem.


The attached screenshot shows the portability of a swing that uses directly X11: it is running on Irix on a SGI Indigo2.

Tuesday, April 25, 2006

Kaffe AWT news


I spent the past weeks in the effort to remove some cruft out of the Xlib peerles AWT implementation in kaffe.
Why? I would find it very interesting to be able to run at least simple swing programs without the need of the weight of QT4 or the GTK2 bloat.

As you can see in the screenshot, the effort paid off! Simple swing programs start and simple events like the JButtons do work! The JTree is fully functional and scrolling of the pane works too.
You can also see that AWT still works as I opened a locale properties program I am developing, you can notice the awt drawn toolkit buttons and file panel.

My work was tries to leverage as much as possible from classpath, which kaffe has anyway. Thus I totally removed some classes from the kaffe awt so that the classpath ones are used (copying the files over as was done in the past is a lot of work and also means that with the time those classes will get out of sync with classpath again).
I also refactored some AWT classes so that the fields and methods are more compatible with classpath and JDK serialization.

A lot of work remains to be done though and I'd appreciate any help.
Roman Kennke from classpath was very precious in helping me out of some pitfalls and he is himself working on an pure X awt, but his one has peers and accesses X directly through java using escher. I think that too is a promising project and I hope in a future collaboration.

Tuesday, February 21, 2006

A GNU World. GNUstep on Hurd

Yes, The title says it all.



Take the latest-and greatest unstable, unreleased GNU Hurd from Debian (this will give you an improved libc and thread library that doesn't require certain hacks to make some un-Posix code to work). Install it (and cross your fingers). Install of course the objective-c compiler. Install the necessary dependencies (libxml2, libpng, ffcall) witht ehir developer headers.

Then get the latest GNUstep. Configure and install make, base, gui and make. I used the xlib backend.
Now some caveats: the base library needs to be hacked. More specifically, after you have run configure, modify Sources/config.h and define BROKEN_SO_REUSEADDR to 1. Also I experience some troubles with the daemons of GNUstep, not only on HURD but elsewhere too, thus manually start gdomap and gdnc.
Now you are ready to start your applications! install one, run "make_services" so that it is registered and then launch it with "openapp NAME" or "gopen NAME.app". Inside the gnustep repository there is the workspace manager (a must have, but currently it crashes here) a small RTF text editor Ink (favourite small app to test if GNUstep is working...) and there are many nice applications in the GAP project and from Backbone.

If someone doesn't believe, check the screenshot... FTP is connected to the gnustep site and Ink is typing well...

So the edges are a bit rough yet. But it starts to be there, I'm excited.