Contributor Warbo
Brainstorm: Code idea text to be black, not default
Written by Warbo the 26 Apr 08 at 13:29.
Related project: brainstorm.ubuntu.com .
Implemented
On the Brainstorm site a lot of text is set to the default system colour, but the backgrounds are coded to be light colours like white. For people who have light text by default (eg. white-on-black themes) this can make the site unreadable without selecting all of the text.
Here is an example of what Brainstorm looks like using my theme
http://www.freewebs.com/chriswarbo/Temporary/Pictures/brainstorm%2Dunreadable.j pg [take away the space near the end,Brainstorm is mutilating my URLs :( ] (but this theme is has dark text compared to others)
Please fix this by specifically coding the site to use black text, rather than assuming everyone uses black as default.
Thanks :)
16
votes
18
0
2
Include FULL Etoile packages
Written by Warbo the 11 Sep 08 at 07:46.
Global category: System.
Not an idea
Etoile (
http://etoileos.com/ ) is a desktop and a set of libraries based on GNUstep (GNUStep is already packaged in Ubuntu). The idea is that different tasks are handled by different Services, with interfaces allowing them to interact and build complete applications. Think of Etoile being to GNUstep what OSX is to NEXTstep, a bit.
As a desktop it is nice to play with, and would be comfortable for people switching from Mac. The applications built for Etoile and GNUstep cover the basics, like IM, email, news, text editors, file managers, etc. but there are a lot of gaps which would benefit from more exposure and more developers.
The development being done is very cool, with recent activity such as a Just In Time compiler for Smalltalk (based on LLVM), allowing application development in Smalltalk with transparent access to all of Etoile's Objective C components (rather than being stuck in a Smalltalk-only world like Squeak).
At the moment there is an Ubuntu-based live CD of Etoile (here are some screenshots
http://news.softpedia.com/news/Etoile-Live-CD-48502.shtml ). However this contains an old prerelease version of Etoile 0.2 from February 2007 (as far as I can tell). It includes a complete Etoile desktop on top of GNUstep on top of Ubuntu.
Ubuntu currently has a source package for etoile, but it only builds into Camaelon (a theming tool) DictionaryReader and WildMenus (which is a dummy package).
Getting an up-to-date version of the whole Etoile system means checking it all out of subversion and compiling. The etoile developers are not making packages for any systems at the moment, but they say they would be happy to help packagers with any problems they encounter.
The issue being raised in this rationale is that the innovative Etoile system and desktop, while packaged, are not being made available to users other than two applications mentioned above.
[....]
Dynamic emblems for icons
Written by Warbo the 1 Jul 08 at 17:48.
Related project: Gnome .
New
There is a lot going on at the same time in an Ubuntu system, and it is desirable to get access to a lot of information about this very quickly and very easily. A big problem in trying this, however, is that in order to get the desired information on screen it is often necessary to display a lot of confusing information at a time, or else display less stuff but have a greater risk of missing what the user wanted. This requires contextual information (ie. information relevant to whatever the user is doing), and an understandable way to represent it.
Solution #1:
More dynamic emblems for icons
Written by
Warbo the 1 Jul 08 at 17:48.
emblems on icons give hints to the user about files and folders, however these mainly have to be added manually. Examples of more dynamic emblems are the read-only and symbolic link emblems.
I propose that more icon emblems be made which are dynamically allocated. These could even be animated and programmatically updated. Emblems could indicate things like:
* this file is being downloaded (with progress bar)
* this file has an unsaved version open
* this file is being accessed by another user
* this device is unsafe to remove
* this device is safe to remove
* a device's free space (as a progress bar)
* this version controlled folder can be updated
and so on
Applications could even add and update emblems on their own icons. For example:
* email programs could show an unread message count
* news programs could show an unread story count
* messaging programs could show a status icon
* messaging programs could show an unread message counter
* networked applications could show when they're disconnected
* editing programs could show if there are documents to be recovered
* downloading/transferring programs (like BitTorrent) could show a progress bar (or bars)
I would not go as far as allowing interactive elements (like play/next/etc. buttons on a music player) since these would interfere with the icon's main function, plus such things are more like full-blown applets/widgets/screenlets.
A nice benefit of this approach would be the ability to display a large amount of information completely in context (ie. only the information relevant to the displayed icons will be shown)
This could be accomplished using completely animated icons, but the stackable quality of emblems would be more desirable and would require less effort.
Aside from being very useful and incredibly cool, this could offer applications an alternative to abusing the notification area with perpetual icons. Instead they can add functionality to any of their panel launchers. The advantages would be that the icon will be there even if the application is closed, users can move around each icon individually and that the panel already has all of the infrastructure for adding and removing icons, taking that responsibility away from the applications.
PS: Extra special points for doing it in a standardised way for potential cross-platform/desktopness :)
emblems on icons give hints to the user about files and folders, however these mainly have to be added manually. Examples of more dynamic emblems are the read-only and symbolic link emblems.
I propose that more icon emblems be made which are dynamically allocated. These could even be animated and programmatically updated. Emblems could indicate things like:
* this file is being downloaded (with progress bar)
* this file has an unsaved version open
* this file is being accessed by another user
* this device is unsafe to remove
* this device is safe to remove
* a device's free space (as a progress bar)
* this version controlled folder can be updated
and so on
Applications could even add and update emblems on their own icons. For example:
* email programs could show an unread message count
* news programs could show an unread story count
* messaging programs could show a status icon
* messaging programs could show an unread message counter
* networked applications could show when they're disconnected
* editing programs could show if there are documents to be recovered
* downloading/transferring programs (like BitTorrent) could show a progress bar (or bars)
I would not go as far as allowing interactive elements (like play/next/etc. buttons on a music player) since these would interfere with the icon's main function, plus such things are more like full-blown applets/widgets/screenlets.
A nice benefit of this approach would be the ability to display a large amount of information completely in context (ie. only the information relevant to the displayed icons will be shown)
This could be accomplished using completely animated icons, but the stackable quality of emblems would be more desirable and would require less effort.
Aside from being very useful and incredibly cool, this could offer applications an alternative to abusing the notification area with perpetual icons. Instead they can add functionality to any of their panel launchers. The advantages would be that the icon will be there even if the application is closed, users can move around each icon individually and that the panel already has all of the infrastructure for adding and removing icons, taking that responsibility away from the applications.
PS: Extra special points for doing it in a standardised way for potential cross-platform/desktopness :)
Drag 'n' drop to Nautilus breadcrumbs
Written by Warbo the 5 Apr 08 at 11:29.
Related project: Gnome .
Implemented
Drag 'n' drop is in a bit of a state at the moment. There are many relatively small additions which would make life that bit nicer, things which would intuitively seem possible but which aren't implemented.
Solutions should highlight which obvious-seeming drag 'n' drop actions should be implemented.
222
votes
257
0
35
Selected solution (#1):
Make the 'breadcrumb' bar of Nautilus DnD aware
Written by
Warbo the 5 Apr 08 at 11:29.
The "breadcrumb" part of Nautilus (the string of buttons showing the folders above the current one) should have drag 'n' drop support, so that dragging files over them for a certain time changes the current folder view to that place.
For example, wanting to move files from a folder /home/user/Downloads to /home/user/Music would involve navigating to /home/user/Downloads, selecting the desired files, dragging them over the breadcrumb button for user's Home folder, which then navigates to that folder, where the files can be dropped over the Music folder.
As for what happens afterwards, either the original folder is shown again (Downloads in the example), or the Home folder is left, with the original folder available through the breadcrumbs.
The "breadcrumb" part of Nautilus (the string of buttons showing the folders above the current one) should have drag 'n' drop support, so that dragging files over them for a certain time changes the current folder view to that place.
For example, wanting to move files from a folder /home/user/Downloads to /home/user/Music would involve navigating to /home/user/Downloads, selecting the desired files, dragging them over the breadcrumb button for user's Home folder, which then navigates to that folder, where the files can be dropped over the Music folder.
As for what happens afterwards, either the original folder is shown again (Downloads in the example), or the Home folder is left, with the original folder available through the breadcrumbs.
Allow Web developers to make desktop applications with Webkit/Mozilla widgets
Written by Warbo the 4 Sep 08 at 22:01.
Global category: Programming.
New
There are masses of Web developers out there, but transfering their skills to desktop applications used to be hard, since different programming languages and completely different interface patterns needed to be learned. Using any Web technology in a desktop application consisted of awkward hacks at getting Mozilla to live in GTK using GTKMozEmbed, which was usually harder to get right than simply learning the alternatives.
These days it is as easy to put a web page into an application as it is to put a button, thanks to WebKit (which has spurred Mozilla to make a less hacky embeddable version). This creates a massive opportunity for getting new applications developed, since Web developers can make a desktop application using all of their current knowledge by doing it all in a WebKit widget. This allows their applications to use synchronous method calls, local storage and resources as well as remote, desktop integration, massive speed increases, no need for servers and all of the administration, cost and security overhead that entails, and so on.
The problems currently facing adoption of this are twofold. Firstly, operating systems like Ubuntu haven't sorted out their WebKit and associated bindings and widget packages yet, making distro-agnostic installation using PackageKit useless, which would be essential when trying to attract developers used to simply publishing to a URL.
Secondly knowledge of these technologies needs to be spread to those communities which it may interest. This would need to come after the package situation has stabilised, and would probably require a few interesting demos to be written. People with one foot in the free desktop camp and one foot in the Web development camp would also be needed for spreading the word.
If successful such an effort could provide a wave of cross-platform applications with the advantages of both Web 2.0 technology and desktop technology. Hopefully the View Source nature of the Web would mean a lot of the new creations would be released as Free Software too :)
Solution #1:
Auto-generated solution of idea #12796
Written by
Warbo the 4 Sep 08 at 22:01.
Ubuntu Brainstorm was updated in January 2009. Since the
idea #12796 was submitted before this update, its rationale and solution are not separated. Please vote accordingly, and if you have the necessary rights, please separate the rationale from the solution. Thanks!
<i>Ubuntu Brainstorm was updated in January 2009. Since the idea #12796 was submitted before this update, its rationale and solution are not separated. Please vote accordingly, and if you have the necessary rights, please separate the rationale from the solution.</i><br /> Thanks!
Solution #2:
web window manager and more
Written by
lkcl the 9 May 09 at 10:35.
i've been focussing on providing exactly the solutions to the issues raised. (funnily enough, it was exactly around the same time that you initially raised this idea, warbo)
i've already provided glib/gobject bindings to webkit's DOM model (bugs.webkit.org #16401).
i've already patched pywebkitgtk to include 1,500 extra functions and the associated DOM properties (code.google.com/p/pywebkitgtk #12 and #13)
i've already provided .deb packages of webkit-gdom and pywebkitgtk.
http://sourceforge.net/project/showfiles.php?group_id=236659
i've used the modified version of pywebkitgtk to provide a port of pyjamas to the desktop:
http://pyjd.org
i've also identified python-hulahop as providing the exact same functionality as pywebkitgtk, and created a small demo:
http://lkcl.net/pyjamas/pyjamas-xpdom.tgz
by utilising web browser technology as a desktop widget set, i and many developers have found that web browser technology makes a better desktop widget set than desktop widget sets make desktop widget sets.
the reason is quite simple: browsers have had far more attention put on them, far more man-decades of time put into them than the desktop widget sets have (and you can confirm this by looking at the statistics calculated on ohloh.net)
browser technology provides event management (just like desktop widget sets do) and much much more.
browser technology as a desktop widget engine is _drastically_ undervalued, thanks to its association with javascript. however, it turns out that if you "take away" the javascript by using compiler technology such as Google Web Toolkit, RubyJS or pyjamas, you actually have a stunningly powerful cross-platform applications development environment.
the pyjamas widget set API is the world's _only_ free software cross-platform, cross-browser, cross-desktop, cross-widget-set development environment.
now.
let's extend that a little further: what can you do with it?
well, thanks to pyjamas, you can write a desktop window manager in python in about 300 lines of code. if you have an NPAPI plugin which allows you to pull up a window containing a command (which does exist - it's in xorg and it's called xrx but it needs a little work) then you can write a desktop window manager in python that can be compiled into javascript, to run in all major web browsers _and_ also run "native" on the desktop.
how can you run an NPAPI plugin in a desktop app? well, because you're using webkit as the engine, webkit supports NPAPI plugins, so you can stick _anything_ into the desktop app - flash plugins, java plugins, mozplugger - anything that's NPAPI compliant.
problems (which can be overcome): xrx is unfortunately using XNest to run the remote command embedded in the web browser. XNest has had an extra run-time parameter added to it where it can take the X-windows "parent id" that it is supposed to attach to. in this way, the Xnest instance can embed _itself_ into the x-window frame that xrx creates for it.
however, Xnest is pretty much the _only_ x-windows command that has this option, and no other x-windows-capable command (certainly not any KDE commands and certainly not any Gnome commands) can "self-embed" like this.
mozplugger, which is another NPAPI-compliant plugin that attempts to shoe-horn some 140 different commands into an embedded browser window, has a _really_ ugly solution to this problem.
what they do is they fire up a "monitor" process which looks for the process id of the command being run, and it dicks around in the x-windows process space, finds out the commands' x-windows id and slams it into the parent window frame.
looking through the source code of mozplugger, it's specifically documented that occasionally this process can go horribly wrong, and the job of the "monitor" is to keep an eye on the app to make sure that it doesn't "pop out" of the embedded NPAPI frame!
there's a better solution: use python-xlib and python-plwm as the basis to write a dedicated window manager that performs this job.
yes, this is the title of the solution, finally coming through.
what you do is you make the webkit-glib app the "root" window: as you're going to be writing a window manager in python, this is ok.
the NPAPI plugin will fire up a frame in the browser technology, and the python-based window manager code, because it receives all X-Windows events, will know that this has happened.
etc. etc.
you might recognise this solution:
* in microsoft terminology it's called "active desktop"
* in palm's terminology it's called "WebOS", their new effort to create a new mobile smartphone operating system based around webkit
so it's not a new idea, it's just a free software way to make it happen.
and, as warbo points out, it's incredibly powerful. anyone can write a bit of javascript and run it on their own desktop. thanks to language bindings (either through XUL/Gecko or webkit-glib/gdom
i've been focussing on providing exactly the solutions to the issues raised. (funnily enough, it was exactly around the same time that you initially raised this idea, warbo)
i've already provided glib/gobject bindings to webkit's DOM model (bugs.webkit.org #16401).
i've already patched pywebkitgtk to include 1,500 extra functions and the associated DOM properties (code.google.com/p/pywebkitgtk #12 and #13)
i've already provided .deb packages of webkit-gdom and pywebkitgtk.
http://sourceforge.net/project/showfiles.php?group_id=236659
i've used the modified version of pywebkitgtk to provide a port of pyjamas to the desktop:
http://pyjd.org
i've also identified python-hulahop as providing the exact same functionality as pywebkitgtk, and created a small demo:
http://lkcl.net/pyjamas/pyjamas-xpdom.tgz
by utilising web browser technology as a desktop widget set, i and many developers have found that web browser technology makes a better desktop widget set than desktop widget sets make desktop widget sets.
the reason is quite simple: browsers have had far more attention put on them, far more man-decades of time put into them than the desktop widget sets have (and you can confirm this by looking at the statistics calculated on ohloh.net)
browser technology provides event management (just like desktop widget sets do) and much much more.
browser technology as a desktop widget engine is _drastically_ undervalued, thanks to its association with javascript. however, it turns out that if you "take away" the javascript by using compiler technology such as Google Web Toolkit, RubyJS or pyjamas, you actually have a stunningly powerful cross-platform applications development environment.
the pyjamas widget set API is the world's _only_ free software cross-platform, cross-browser, cross-desktop, cross-widget-set development environment.
now.
let's extend that a little further: what can you do with it?
well, thanks to pyjamas, you can write a desktop window manager in python in about 300 lines of code. if you have an NPAPI plugin which allows you to pull up a window containing a command (which does exist - it's in xorg and it's called xrx but it needs a little work) then you can write a desktop window manager in python that can be compiled into javascript, to run in all major web browsers _and_ also run "native" on the desktop.
how can you run an NPAPI plugin in a desktop app? well, because you're using webkit as the engine, webkit supports NPAPI plugins, so you can stick _anything_ into the desktop app - flash plugins, java plugins, mozplugger - anything that's NPAPI compliant.
problems (which can be overcome): xrx is unfortunately using XNest to run the remote command embedded in the web browser. XNest has had an extra run-time parameter added to it where it can take the X-windows "parent id" that it is supposed to attach to. in this way, the Xnest instance can embed _itself_ into the x-window frame that xrx creates for it.
however, Xnest is pretty much the _only_ x-windows command that has this option, and no other x-windows-capable command (certainly not any KDE commands and certainly not any Gnome commands) can "self-embed" like this.
mozplugger, which is another NPAPI-compliant plugin that attempts to shoe-horn some 140 different commands into an embedded browser window, has a _really_ ugly solution to this problem.
what they do is they fire up a "monitor" process which looks for the process id of the command being run, and it dicks around in the x-windows process space, finds out the commands' x-windows id and slams it into the parent window frame.
looking through the source code of mozplugger, it's specifically documented that occasionally this process can go horribly wrong, and the job of the "monitor" is to keep an eye on the app to make sure that it doesn't "pop out" of the embedded NPAPI frame!
there's a better solution: use python-xlib and python-plwm as the basis to write a dedicated window manager that performs this job.
yes, this is the title of the solution, finally coming through.
what you do is you make the webkit-glib app the "root" window: as you're going to be writing a window manager in python, this is ok.
the NPAPI plugin will fire up a frame in the browser technology, and the python-based window manager code, because it receives all X-Windows events, will know that this has happened.
etc. etc.
you might recognise this solution:
* in microsoft terminology it's called "active desktop"
* in palm's terminology it's called "WebOS", their new effort to create a new mobile smartphone operating system based around webkit
so it's not a new idea, it's just a free software way to make it happen.
and, as warbo points out, it's incredibly powerful. anyone can write a bit of javascript and run it on their own desktop. thanks to language bindings (either through XUL/Gecko or webkit-glib/gdom
Solution #3:
Improve Gnome Seed for rapid development
The Gnome project already has the solution!
Using the Seed - GObject JavaScriptCore bridge.
From
http://live.gnome.org/Seed:
Seed is a library and interpreter, dynamically bridging (through GObjectIntrospection) the WebKit JavaScriptCore engine, with the GNOME platform. Seed serves as something which enables you to write standalone applications in JavaScript, or easily enable your application to be extensible in JavaScript.
Seed is built around the idea of "minimal-platform", in that it seems a theoretically ideal GNOME development language provides no platform of its own, but instead seamlessly integrates with the already quite large GNOME platform. Some of Seed are listed below:
* Dynamically load and bind libraries for which GObjectIntrospection data is available.
* Methods, constructors, properties, signals, interfaces, etc. transparently bind to JavaScript. Maps C-isms (say, out arguments, or enums) to things that make sense in JavaScript.
* Garbage collector integration with GObject reference counts for automatic memory management. Structs are allocated and memory managed effeciently with g_slice.
* Automatic and powerful type conversion, capable of converting between everything from simple types, to GList/Array, to boxing JavaScript functions up in C function pointers (required by some libraries for say, foreach functions).
* Automatic GError integration with JavaScript exceptions. You leave the GError argument out of your arguments, and internally Seed passes it in to the method, and throws an exception with the proper name and message if an error is generated.
* Some "syntactic sugar" which makes code more pleasant to write, such as JSON key/value pairs for constructor properties, literals for structs (stage.color = red: 200).
* Ability to define new GTypes which inherit from existing GTypes. As of now you can not implement abstract methods, but beyond that it works. Signals and properties work.
* A C module system, useful for binding libraries which are not GObject based (such as readline, sqlite, and many low level POSIX functons).
At this point, the vast majority of the GNOME platform is usable from Seed.
In general using any GObject based API (internal to your application, or a library) in Seed, should not be difficult, and should simply require a few changes to your build scripts to allow generation of the introspection data.
There is a writeup on Seed which I believe provides a good description. [
http://arstechnica.com/open-source/news/2009/01/javascript-gtk-bindings.ars]
--
Adding new features to this tool you can develop applications and games with ease. Even a person without much knowledge of programming can develop in JavaScript. It is a very powerful and simple language, especially combined with the features of Webkit.
A good way to start is by supporting the SeedKit (
http://live.gnome.org/SeedKit) to create rich interfaces using HTML5, CSS3 and JavaScript. Technologies on the rise at the time and used for various applications, including the iPhone itself.
The Gnome project already has the solution!
Using the Seed - GObject JavaScriptCore bridge.
From http://live.gnome.org/Seed:
Seed is a library and interpreter, dynamically bridging (through GObjectIntrospection) the WebKit JavaScriptCore engine, with the GNOME platform. Seed serves as something which enables you to write standalone applications in JavaScript, or easily enable your application to be extensible in JavaScript.
Seed is built around the idea of "minimal-platform", in that it seems a theoretically ideal GNOME development language provides no platform of its own, but instead seamlessly integrates with the already quite large GNOME platform. Some of Seed are listed below:
* Dynamically load and bind libraries for which GObjectIntrospection data is available.
* Methods, constructors, properties, signals, interfaces, etc. transparently bind to JavaScript. Maps C-isms (say, out arguments, or enums) to things that make sense in JavaScript.
* Garbage collector integration with GObject reference counts for automatic memory management. Structs are allocated and memory managed effeciently with g_slice.
* Automatic and powerful type conversion, capable of converting between everything from simple types, to GList/Array, to boxing JavaScript functions up in C function pointers (required by some libraries for say, foreach functions).
* Automatic GError integration with JavaScript exceptions. You leave the GError argument out of your arguments, and internally Seed passes it in to the method, and throws an exception with the proper name and message if an error is generated.
* Some "syntactic sugar" which makes code more pleasant to write, such as JSON key/value pairs for constructor properties, literals for structs (stage.color = red: 200).
* Ability to define new GTypes which inherit from existing GTypes. As of now you can not implement abstract methods, but beyond that it works. Signals and properties work.
* A C module system, useful for binding libraries which are not GObject based (such as readline, sqlite, and many low level POSIX functons).
At this point, the vast majority of the GNOME platform is usable from Seed.
In general using any GObject based API (internal to your application, or a library) in Seed, should not be difficult, and should simply require a few changes to your build scripts to allow generation of the introspection data.
There is a writeup on Seed which I believe provides a good description. [http://arstechnica.com/open-source/news/2009/01/javascript-gtk-bindings.ars]
--
Adding new features to this tool you can develop applications and games with ease. Even a person without much knowledge of programming can develop in JavaScript. It is a very powerful and simple language, especially combined with the features of Webkit.
A good way to start is by supporting the SeedKit (http://live.gnome.org/SeedKit) to create rich interfaces using HTML5, CSS3 and JavaScript. Technologies on the rise at the time and used for various applications, including the iPhone itself.
Integrate Nepomuk with Gnome
Written by Warbo the 24 Aug 08 at 17:14.
Related project: Gnome .
New
Nepomuk (
http://nepomuk.semanticdesktop.org/xwiki/bin/view/Main1/ ) is an EU-driven initiative to get semantic ideas into the desktop. This means that files (amongst other things) can be "tagged", rated, linked to each other, etc., allowing users or programs to run queries like "show me every photo that Dave sent to me over Jabber last March which has an elephant in it" (see
http://en.wikipedia.org/wiki/SPARQL ).
The project currently includes work on Mozilla and KDE integration (work is here
http://nepomuk.semanticdesktop.org/xwiki/bin/view/Main1/Deliverables ) amongst other things.
My idea is this: Integrate Nepomuk technologies (for instance the KDE Nepomuk server) with Gnome, for instance tagging in Nautilus, rating in Rhythmbox, who email attachments are from in Evolution, who has sent files in Empathy, etc..
The KDE implementation makes heavy use of the Strigi search/indexing system, although Tracker and Beagle should be able to work just as well following the XESAM standard (
http://xesam.org/main ).
Solution #1:
Auto-generated solution of idea #12507
Written by
Warbo the 24 Aug 08 at 17:14.
Ubuntu Brainstorm was updated in January 2009. Since the
idea #12507 was submitted before this update, its rationale and solution are not separated. Please vote accordingly, and if you have the necessary rights, please separate the rationale from the solution. Thanks!
<i>Ubuntu Brainstorm was updated in January 2009. Since the idea #12507 was submitted before this update, its rationale and solution are not separated. Please vote accordingly, and if you have the necessary rights, please separate the rationale from the solution.</i><br /> Thanks!
Solution #2:
Nepomuk Integration
Written by
prefec2 the 3 Apr 09 at 22:41.
The KDE team has already done some great work in integrating Nepomuk in KDE. These results should be copied for Gnome/Ubuntu as well. KDE is using strigi to extract id3 tags and other information for the Nepomuk ontologies. However Gnome is using tracker as indexing server. Thanks to Xesam both can (most likely) be used for Nepomuk.
A solution strategy for this integration effort should start with integration of Nepomuk into client applications like Rhythmbox, pidgin/telepathy and evolution/thunderbird. A thunderbird-nepomuk-connector is already available within the neopmuk framework. A prerequisite to this effort should be a analysis of the KDE integration program.
In a second step, document and image tagging integrated in such ontology-based desktop system. While people like to tag their images, they normally do not want to do this with their documents. For those indexing results or text analysis programs should be able to connect these documents to the ontology. Therefore programs like openoffice should be able to trigger indexing/text analysis for a certain document when the document is saved. This would prevent greater delays.
Interfaces like the upcoming zeitgeist could be used as access application for the semantic information.
The KDE team has already done some great work in integrating Nepomuk in KDE. These results should be copied for Gnome/Ubuntu as well. KDE is using strigi to extract id3 tags and other information for the Nepomuk ontologies. However Gnome is using tracker as indexing server. Thanks to Xesam both can (most likely) be used for Nepomuk.
A solution strategy for this integration effort should start with integration of Nepomuk into client applications like Rhythmbox, pidgin/telepathy and evolution/thunderbird. A thunderbird-nepomuk-connector is already available within the neopmuk framework. A prerequisite to this effort should be a analysis of the KDE integration program.
In a second step, document and image tagging integrated in such ontology-based desktop system. While people like to tag their images, they normally do not want to do this with their documents. For those indexing results or text analysis programs should be able to connect these documents to the ontology. Therefore programs like openoffice should be able to trigger indexing/text analysis for a certain document when the document is saved. This would prevent greater delays.
Interfaces like the upcoming zeitgeist could be used as access application for the semantic information.
Investigate Clutter/Pigment possibilities
Written by Warbo the 8 Apr 08 at 16:34.
Global category: Look and Feel.
New
New hardware accelerated toolkits like Clutter (
http://www.clutter-project.org ) and Pigment (
https://code.fluendo.com/pigment/trac/wiki/WikiStart ) make fancy effects easy to use, but also offer the ability to use subtle effects to increase the general feel of the desktop. For example, if a big thumbnail view is used in an application: would it be more pleasing for the selected thumbnail to bulge? Are smoother transitions/scrolls possible? How is the display populated/closed, could it be improved?
I think some investigation into these kinds of questions would be good. I wouldn't like to see "bling", ie. every button exploding into view, but adding useful abilities (eg. zooming) and removing the sudden, jerky transitions we are used to at the moment would make the whole desktop seem smoother and more polished.
Finish WINE support for PortableApps
Written by Warbo the 30 Apr 08 at 14:43.
Related project: Wine .
Not an idea
Software from
http://www.portableapps.com is Free Software for Windows tweaked and packaged up so that it runs from a single folder without needing installation, editing registry keys, etc. It is really useful to have on a FAT32 USB stick, since it gives access to familiar programs on any Windows machine.
These programs generally run under WINE, but there are a few small glitches like multiple PortableApps icons appearing in the notification area and not going away, etc. I think polishing up these few remaining issues would make general use of Ubuntu more enjoyable, especially since having Free Software with a "works anywhere" assumption that breaks down on a Free Software OS like Ubuntu can seem rather unprofessional.
Voters please keep in mind that the point of PortableApps is that it works on machines where this software cannot be installed. Using Add/Remove in an Internet Cafe, University computer lab, office, etc. is not an option.
Installing is a daunting task
Written by Warbo the 29 Jan 09 at 22:49.
Related project: Live CD installer .
Not an idea
Getting Ubuntu installed is the single biggest hurdle we need to tackle. Once Ubuntu is installed on a machine then we are free to do whatever we want to help users, ie. welcome centres, setup wizards, etc. but installation is a massive undertaking for somebody who does not take an interest in such things (which is the only audience Ubuntu was ever set up to cater for).
The ideal scenario is a preinstalled computer with Ubuntu already on it, but it is naive to think that Ubuntu will succeed based on preinstalls alone, and it would be effectively writing off the billion potential Ubuntu systems already up and running in the world in the form of Microsoft Windows and Apple OSX. This makes the install process crucial in not scaring away users.
In this situation options are a very bad thing. If somebody does not know what option to choose (which, once again, is Ubuntu's entire audience) it is a common reaction to panic and even give up, even if the choice being offered seems completely mundane to somebody who understands it (like "Do you want KDE or Gnome?" for example). This is a well observed phenomenon, and is thus exactly what we need to avoid during the install.
So how can this be overcome, so that Ubuntu actually gets installed by people without any help? Please, when posting solutions and comments, remember that the fact you're on Ubuntu Brainstorm probably means you're not in Ubuntu's target audience (which is fine, since you're probably skilled enough to attempt an installation of Debian, Fedora, etc. instead if Ubuntu gets too 'dumbed down').
0
votes
0
0
0
Solution #1:
Make installation as automatic as possible
Written by
Warbo the 29 Jan 09 at 22:49.
I propose that EVERY option available to Ubuntu installation be examined thoroughly and have its existence questioned, with the emphasis on reducing the options given. Make everything nondestructive (ie. always dual-boot rather than overwriting), easy to change afterwards, with reasonable defaults worked out during installation (based on research), and the vast majority of new users will never even need to know that such things were done, they can get on with USING Ubuntu. More advanced alternatives should be available for each step which only appear whenever that step fails.
For example, if Microsoft Windows is detected from a browser's user agent, why offer anything other than Wubi? If Wubi installations were able to become a native (ie. partitioned) Ubuntu installations at the press of a button, then the choice between Wubi and an ISO is irrelevant to people who don't care.
When the installation procedure gets up to partitioning, why ask the user at all if they want to do manual partitioning? Ubuntu is Linux for Human Beings, and the vast majority of those humans don't know or care what partitioning is. Conduct a study and find an algorithm to work out a reasonable amount of space to use based on the disk size and free space, then just use that (keeping any existing OS).
There are many more examples. The IDEAL Ubuntu installation procedure would be a big, red button on Ubuntu.com which, when pressed, gives the user a full Ubuntu system ready to boot. The closer we can get to this the better.
(If you want these options then you must know what they mean, which makes you a power user and thus more suited to a different distro)
I propose that EVERY option available to Ubuntu installation be examined thoroughly and have its existence questioned, with the emphasis on reducing the options given. Make everything nondestructive (ie. always dual-boot rather than overwriting), easy to change afterwards, with reasonable defaults worked out during installation (based on research), and the vast majority of new users will never even need to know that such things were done, they can get on with USING Ubuntu. More advanced alternatives should be available for each step which only appear whenever that step fails.
For example, if Microsoft Windows is detected from a browser's user agent, why offer anything other than Wubi? If Wubi installations were able to become a native (ie. partitioned) Ubuntu installations at the press of a button, then the choice between Wubi and an ISO is irrelevant to people who don't care.
When the installation procedure gets up to partitioning, why ask the user at all if they want to do manual partitioning? Ubuntu is Linux for Human Beings, and the vast majority of those humans don't know or care what partitioning is. Conduct a study and find an algorithm to work out a reasonable amount of space to use based on the disk size and free space, then just use that (keeping any existing OS).
There are many more examples. The IDEAL Ubuntu installation procedure would be a big, red button on Ubuntu.com which, when pressed, gives the user a full Ubuntu system ready to boot. The closer we can get to this the better.
(If you want these options then you must know what they mean, which makes you a power user and thus more suited to a different distro)
Repositories are awkward to manage (manual adding/removing, keys, etc.)
Written by Warbo the 15 Jan 09 at 18:52.
Related project: Synaptic package manager .
New
The package manager is a great way of simplifying software management, but the initial hurdle of repositories can be awkward.
Repositories must be added and removed manually, requiring a separate package management tool to do so, manual adding of keys, there is an unneeded distinction between official repositories and third-party repositories, etc.
Simplifying this management, and removing as much redundancy as possible, would lower the barrier to entry considerably.
Solution #1:
Make packages for every repository
Written by
Warbo the 15 Jan 09 at 18:52.
Packages are very versatile things. They can contain files, like /etc/apt/sources.list.d/whatever, and scripts, which can write different values depending on the release they detect.
This means that packages can do everything needed to manage the APT sources, keys, etc. without needing a different (and currently manual) system. The current sources editor can be adapted to be a specialised package manager that only bothers with packages in a "Repository" category, whilst any package manager can be used to edit the repositories too. The main repository can be marked as an essential package (just like the apt package is) to prevent its removal.
With GDebi as the default tool to open packages with from Firefox, this also means that adding repositories from the Web is easy, since it is a simple download which opens in GDebi with an Install button.
Packages are very versatile things. They can contain files, like /etc/apt/sources.list.d/whatever, and scripts, which can write different values depending on the release they detect.
This means that packages can do everything needed to manage the APT sources, keys, etc. without needing a different (and currently manual) system. The current sources editor can be adapted to be a specialised package manager that only bothers with packages in a "Repository" category, whilst any package manager can be used to edit the repositories too. The main repository can be marked as an essential package (just like the apt package is) to prevent its removal.
With GDebi as the default tool to open packages with from Firefox, this also means that adding repositories from the Web is easy, since it is a simple download which opens in GDebi with an Install button.
Solution #2:
Handle the source.list with a GUI
Written by
Arnaudus the 15 Jan 09 at 19:59.
The interface does not need to be particularly complicated. One should access it from Synaptic (for instance, Edit -> Source List). The repositories of the source.list can be listed (say, on the left part of the window), when clicking on one of them, you should get more information about the repository (official or not, number of packages in it, status --on line, down, etc--). You can imagine to have a button to switch it on or off, a "Remove repository" button, and "Add repository" choice in which you just have to copy and paste the server name.
One of the reasons for that is the number of questions in the forum or in Launchpad about people who screwed up their source list trying to follow tutorials. Having a GUI would avoid all these problems --the worst thing that can happen is to misspell a server name, which has no effect except an error message.
[Edit]: Synaptic proposes an embryo for such a GUI, but it is more confusing than useful because different info are mixed up. I was referring to a GUI devoted to only one thing: editing the source list: one window, you see your source list, you click simple buttons to edit it. The current options are too far from the source list to be of any use for the beginner nor for the geek.
The interface does not need to be particularly complicated. One should access it from Synaptic (for instance, Edit -> Source List). The repositories of the source.list can be listed (say, on the left part of the window), when clicking on one of them, you should get more information about the repository (official or not, number of packages in it, status --on line, down, etc--). You can imagine to have a button to switch it on or off, a "Remove repository" button, and "Add repository" choice in which you just have to copy and paste the server name.
One of the reasons for that is the number of questions in the forum or in Launchpad about people who screwed up their source list trying to follow tutorials. Having a GUI would avoid all these problems --the worst thing that can happen is to misspell a server name, which has no effect except an error message.
[Edit]: Synaptic proposes an embryo for such a GUI, but it is more confusing than useful because different info are mixed up. I was referring to a GUI devoted to only one thing: editing the source list: one window, you see your source list, you click simple buttons to edit it. The current options are too far from the source list to be of any use for the beginner nor for the geek.
Solution #3:
Registry autodiscovery
Written by
qense the 15 Jan 09 at 20:20.
Create an autodiscovery specification for repositories that allows you to give a base URI to a repository after which, with help of the protocol, you can select the parts you want.
Care should be taken to not break the compatibility with the CLI.
An Avahi service could also be supported to support repositories inside networks, which should make life easier for sys-admins. A nice list of possible repositories could show up in the configuration dialogue.
Create an autodiscovery specification for repositories that allows you to give a base URI to a repository after which, with help of the protocol, you can select the parts you want.
Care should be taken to not break the compatibility with the CLI.
An Avahi service could also be supported to support repositories inside networks, which should make life easier for sys-admins. A nice list of possible repositories could show up in the configuration dialogue.
Solution #4:
Repository Index, Discovery and Trusted List
Written by
doctormo the 15 Jan 09 at 21:36.
Each apt repository currently operates via http, but has no way to search for packages or give you a list of other repositories that it needs to operate or that you may want to use to experiment with further updates.
I suggest that an index be created in the specification which can bind one repository to another or set of repositories as required. Sort of like repository dependency.
Each apt repository currently operates via http, but has no way to search for packages or give you a list of other repositories that it needs to operate or that you may want to use to experiment with further updates.
I suggest that an index be created in the specification which can bind one repository to another or set of repositories as required. Sort of like repository dependency.
Solution #5:
Extend AptUrl to to allow adding repositories by just clicking a link
Written by
Dim the 5 May 09 at 11:41.
Adding repositories is difficult. Here's the example, when you want to add Shutter's repository (it's a screenshot tool) you actually need to do lots of steps:
http://shutter-project.org/faq-help/ppa-installation-guide/. You can do this with our without terminal but either way are too complex.
We already have AptUrl (
https://wiki.ubuntu.com/AptUrl) to make it simple to install software from repositories by just clicking a link on a web page. Even websites like
http://appnr.com exist for that.
Wouldn't it be great to extent AptUrl to allow adding repositories by just clicking a link? So that Shutter and other software could just say on their websites: "Click here to add our repository". And then say, "After that, click here to install the program". Or even better, both: "Click here to add our repository and install the program".
Adding repositories is difficult. Here's the example, when you want to add Shutter's repository (it's a screenshot tool) you actually need to do lots of steps: http://shutter-project.org/faq-help/ppa-installation-guide/. You can do this with our without terminal but either way are too complex.
We already have AptUrl (https://wiki.ubuntu.com/AptUrl) to make it simple to install software from repositories by just clicking a link on a web page. Even websites like http://appnr.com exist for that.
Wouldn't it be great to extent AptUrl to allow adding repositories by just clicking a link? So that Shutter and other software could just say on their websites: "Click here to add our repository". And then say, "After that, click here to install the program". Or even better, both: "Click here to add our repository and install the program".
Solution #6:
Have a costum repository registered for each package
In ubuntu's default repos, some softwares may not be up-to-date (I don't blame anyone for that, it's a stability concern).
But what if I need to have, say, Wine to the most recent version? Gotta add the repository manually.
Why not instead have a custom repository registered for each package, in such a way that you can swich to the latest (but not officially supported) version of their soft with just a single right-click in the synaptic manager? Rather than using the 1.0.1 version aviable in the repos, I would now be synced with Wine's official PPA, recieving the updates as they come in to be always up to date, without editing any text-file!
In ubuntu's default repos, some softwares may not be up-to-date (I don't blame anyone for that, it's a stability concern).
But what if I need to have, say, Wine to the most recent version? Gotta add the repository manually.
Why not instead have a custom repository registered for each package, in such a way that you can swich to the latest (but not officially supported) version of their soft with just a single right-click in the synaptic manager? Rather than using the 1.0.1 version aviable in the repos, I would now be synced with Wine's official PPA, recieving the updates as they come in to be always up to date, without editing any text-file!