Anteru's blog
  • Consulting
  • Research
    • Assisted environment probe placement
    • Assisted texture assignment
    • Edge-Friend: Fast and Deterministic Catmull-Clark Subdivision Surfaces
    • Error Metrics for Smart Image Refinement
    • High-Quality Shadows for Streaming Terrain Rendering
    • Hybrid Sample-based Surface Rendering
    • Interactive rendering of Giga-Particle Fluid Simulations
    • Quantitative Analysis of Voxel Raytracing Acceleration Structures
    • Real-time Hybrid Hair Rendering
    • Real-Time Procedural Generation with GPU Work Graphs
    • Scalable rendering for very large meshes
    • Spatiotemporal Variance-Guided Filtering for Motion Blur
    • Subpixel Reconstruction Antialiasing
    • Tiled light trees
    • Towards Practical Meshlet Compression
  • About
  • Archive

Open source projects waiting to be implemented

July 07, 2012
  • Programming
approximately 2 minutes to read

There’s a bunch of things out there, which should be implemented as an open-source project for the good of the (developer) community. This is of course a biased, personal list, but if some young developer out there is looking for an interesting project idea, feel free to pick one from the list below:

Minimal, fast, portable mail client

A portable, minimal, easy-to-extend mail client, which uses a proper database for all storage. Thunderbird is a good client, no doubt, but having a simple client written in for instance Python + Qt, with sqlite as the backend, should make it faster than Thunderbird, more robust, and easy to synchronise across multiple machines.

Going 100% Qt and C++ might be an option as well, but my gut feeling is that PyQt should be fast enough for the job. Having a database backend for storage is the crucial thing here, to ensure that everything is robust and fast. mbox just doesn’t cut the mustard any more when your inbox has several thousand e-mails, especially when it comes to backup.

Clang-based documentation generator for C++

We have Clang, but we’re mostly still stuck with Doxygen for documenting C++. While Doxygen can be used to generate good documentation, it has lots of shortcomings as it has to guess the meaning of every single statement.

A proper documentation system requires accurate information, and Clang seems like the perfect solution for this. Together with a database backend, this would allow much higher quality documentation and potentially for a docutils-style mixing of code and documentation, where the code is tested while the documentation is built.

The documentation generator should also not contain output-related stuff. I’ve been working on the robin Doxygen to Sphinx bridge, which generates easy-to-integrate documentation in restructured text from Doxygen XML. Ideally, the next-gen documentation tool will directly produce structured and interlinked documentation fragments, which are easy to convert into whatever representation you need. The focus should be on the data though, and the presentation should be independent (just take a look at the Doxygen XML to see how presentation and content can get intermingled if the data representation is only a second class citizen.)

Robust meta-shading language for OpenGL/DirectX

OpenGL and DirectX come both with their own shading language, which is not quite identical but extremely comparable otherwise. There is Cg, which is a unified language targeting both OpenGL and DirectX, which unfortunately doesn’t get updated to often and is a “black-box”, and there are some HLSL/GLSL converters like HLSL2GLSL or ANGLE. So far, there is no open alternative, which unifies GLSL and HLSL into a single front-end and generates GLSL/HLSL at the backend.

Having a meta-shading language and the toolchain in an easy-to-hack format (ideally, some scripting language) would make the whole business much simpler. The key point is that it must be easy to hack, so integrating new features or support for new targets is simple. The output should be simply GLSL/HLSL code, so it can be trivially inspected and further optimized if necessary.

So much for this time, hopefully someone out there finds this list helpful and writes a kick-ass project :)

Previous post
Next post

Recent posts

  • Data formats: Why CSV and JSON aren't the best
    Posted on 2024-12-29
  • Replacing cron with systemd-timers
    Posted on 2024-04-21
  • Open Source Maintenance
    Posted on 2024-04-02
  • Angular, Caddy, Gunicorn and Django
    Posted on 2023-10-21
  • Effective meetings
    Posted on 2022-09-12
  • Older posts

Find me on the web

  • GitHub
  • GPU database
  • Projects

Follow me

Anteru NIV_Anteru
Contents © 2005-2025
Anteru
Imprint/Impressum
Privacy policy/Datenschutz
Made with Liara
Last updated February 17, 2019