DevFS Attributes

Body: 

Storing information about devices as attributes in the relevant areas of the devfs could allow much simpler (and more powerful) access to device specific data.

Details

There are many items of information regarding physical and virtual devices that require specialised APIs for querying. In order to implement this system an additional set of driver hooks could be added to retrieve the data. It has been suggested that using this method, driver complexity and extensibility (regarding PCI IDs) could be improved.

Cross Referenced Files

Body: 

This proposal suggests an attribute based system to label files as referencing other files in order to allow queries to utilise inter-file relationships.

Details

Currently files whose contents reference other files on the local system can only be found through interrogating the file's data or through other similar mechanisms requiring some insight into the file data. It is proposed that a system wide set of attributes be used in order to build relationships.

Calculated Attributes

Body

Extending the OpenBFS/BFS via the usage of calculated attributes for arbitrary files and file types would provide a useful means of dynamic and constantly up to date meta-data on many types of files.

Details

On top of the current methods to define and maintain file attributes under OpenBFS/BFS, there could exist methods to define calculated attributes for arbitrary files and file types. The calculation may be based on other attributes of the same file, globally defined values or value lists and other special information like item count for queries or folders.

SVG Screenshots

Body: 

An advanced form of screenshot could be formed through the use of raw windowing data, SVG and ECMA script allowing for rudimentary interactivity.

Details

The operating system has direct or indirect access to a number of sources of raw and scalable data relating to the currently visible (and obscured) screen. This data could potentially be saved in an SVG file and function in a similar fashion to traditional screenshots but retain rendered accuracy throughout resizes. Controls that rely on rendered bitmap data instead would be embedded as binary data or linked into the SVG document.

Fildirute

Body: 

Fildirutes are an idea for file system naming and simplification. Rather than having separate APIs for files, directories and attributes (and indices too!), you have a single fildirute kind of thing. You can read data from it like a file. You can also open it like a directory and see what's inside. The things inside are fildirutes too. A small one inside would be like an attribute, the name would tell you what the intended purpose was.

State Save

Body: 

Additional methods should be added to all applications which would act to save the current state of each application. All relevant information including (for example) current document edits, window positions and data stream positions should be saved in a standardised way. This would enable easy save, hibernate and start functionality.

Details

Single Application

Each application should have the ability to save its state at any instant to a predefined file. This snapshot style file could be used during application startup to restore the previous session's state in a standardised manner. More importantly it would allow more useful coordinated loading/saving algorithms (See Global State).

Pre-Shutdown Message

Currently in BeOS there does not exist a thorough method for shutdown notification and procedures. It is proposed a new standard message and response system be introduced. Additionally, mechanisms will be introduced to ensure needed services and applications remain open for use until dependant systems are closed.

Current System

When a shutdown occurs currently each application is sent a B_QUIT_REQUESTED message in order to terminate it. As this message does not indicate that it must quit in the near future or be killed the application may choose to ignore it, unaware of the impending shutdown.

Fusing Tabs

Body: 

The tabs on BeOS windows have been well known for their distinctive sliding ability. This could be extended by allowing extended areas for sliding, sticky tabs and fusing tabs.

Details


Sliding

Tabs should be allowed to slide all the way around the perimeter of any window, including hugging the corners of the window.

Movingtabs.gif

Sticking

When placed in close proximity tabs in different windows will snap together, bringing the windows together. When this occurs on the side edges of tabs this would result in an arrangment similar to general tabbed interfaces.

Drag and Drop Save

Body: 

The current standard system of saving files from all applications should be replaced with a drag-and-drop mechanism combined with tracker windows.

Details

While the current standard for most operating systems, the use of save dialogues can be considered an inconsistant design providing a seperate method for navigating the filesystem. The core uses for a save dialogue can be summarised as follows,

  1. Providing a filesystem browser
  2. Filtering displayed files to a specified type
  3. (Often) remembers last save location
  4. Target filename specification

However, many of the above uses can be filled through the system Tracker or extensions to Tracker. Hence, browsing and filtering can be handled trivially. It is proposed that Haiku drops support for save dialogues and instead uses a drag-and-drop method as standard, thus utilising the existing pervasive drag-and-drop mechanisms in the operating system in tandem with the Tracker.

Feature Wishlist

Body: 

This article was started by myself, but it was extended by our users when it was placed on our wiki. The development team will have to review and discuss all suggestions.

Multi-User

  • something similar to what Win2k does, where you try to do something and it says "you don't have permission to do that. If you are an admin, click here to enter the admin password for permission."
  • multiple users - One or many at a time? Security for many at a time?

New Kits

  • vector math library to use MMX/SSE/SSE2/3/4/5
  • What about having a synthesized speech kit. Applications would send text (possibly with special marks) to the kit. Particular languages could be available as plug-ins.
  • Voice recognition
  • Should we have help system? Pocket PC has very handy one, it's HTML-based. There's a folder somewhere, where your help files are (for example, StyledEdit.htm). When you have StyledEdit opened and you open help, it goes directly to the StyledEdit.htm file. When there's just an empty desktop and you open help, it goes to index (automatically updated links to files in help folder). So, whenever you install a program, the install script or package manager copies just one HTML file to the help folder. It's so easy to use, that OBOS should have it too. And there could be a simple search capability within the help files
  • synchronization kit - some sort of way to notify and automatically update subscribers when data changes
  • im kit
  • XML - possibly methods for BMessage to transform to and from XML, possibly a whole different kit
  • Encryption - a plug in architecture for encryption/decryption. Probably public/private key. With a key manager of some sort, so that it is easy for users. Also with a tie-in to the Mail Kit of some sort so that mail programs can quickly and easily encrypt and decrypt messages. Also a cache of public keys with methods to refresh them (via Networking Kit)
  • Database Kit - access for SQL databases will be a large sticking point to getting on the corporate desktop. The sooner the better. Look at SQLAlchemy for inspiration.
  • Fax support (kit?)
  • RPC (SOAP, XML, Web services etc.)
  • SpellCheckAPI
  • Reference kit (dictionaries, thesaurus)

Media/MIDI

Printing

  • Vastly improved printing is needed. Color management is huge, now, with digital photography. Additionally, more functionality is needed. Watermarks, more margin control, etc. All of those "extras" that you have on Windows and use once a year.

Device Kit

  • Why does serial port deserve a class but not BParallel? Or BAudioCD? Or BVideoCD? Or Scanners, Cameras, PDAs, etc? Every "thing" that you plug into your Haiku machine should have a class to access it.

Game Kit

  • Sprites, Backgrounds, collision handling, parallax, 3d, scrolling, tiling, AI, controllers (joysticks, etc) and more.
  • Translation Kit
  • How about 3D objects? Or vectors (structured drawing)? HTML read/write?

Mail Kit

  • public/private key encryption for email

UI

  • ditch menu bars for context menus only
  • we should go vector. And we should adopt SVG as our standard.
  • Dictionary of translated words, so that untranslated apps can be automatically (if imperfectly) translated.

How about being able to have a several applications using the same window, each one having its own tab? I believe there are UNIX window managers that do this though I've not tried them so I'm not sure how good it is in practice. I imagine there would be pros and cons.