I love Linux. But when i dive into the open source code, I find it very annoying to work with and read. I would like to make an analysis engine that allows you to visually browse and edit the code that aids you in porting portions of the project into code units in C# that compile under mono.
This will result in a series of wrappers being written to assist in this providing low level functioning and operating system calls.
Essentially you will import a code file into the tool, it will parse it, and map out function calls allowing you to drill down visually, see how the code flows, and move pieces of it around, updating all references as you go.
Then it will convert the code into C# source.
The first project will contain c to c# conversions, visually aided to increase the speed at which you can convert to a MODERN LANGUAGE WITH GOOD INEXPENSIVE TOOLS TO WORK WITH.
In the case of many Linux utilities the speed of c is really not even that necessary and its limiting.
You doubt me ? Look at the code for smartctl.
They use 1990s style detail oriented coding organization.
There is some degree of polymorphism used to represent different hardware interfaces, but the code itself is scattered.
Using standard Linux tools, its very annoying to work with.
If you could view it in, oh I don't know visual studio, or monodevelop in a true object oriented language with descriptive classes and methods, instead of standard c syntax
Following and diving in the code would be easier for an individual using a modern language which doesn't have a 10 character symbol constraint applied to it, or whatever reason the language uses highly truncated symbols.
For high level purposes, why would you even need this ?
I will wrap and test the Linux libraries and as part of this project, so you don't have to. My dream is to migrate AS FAR AWAY from c, python, ruby, tcl, etc as possible on the Linux platform. I consider them to all be horrible languages (minus python).
Because this is a large project that will take me probably 2 years to complete in totality, the price tag is a tad higher on this than the other project I am trying to complete which would be nice, and fun, and enjoyable, but apparently does not meet the standards of people who want to tip me a 1.00.
The end result will be a workbench which highlights code as you go and allows high level repositioning of methods, code updates, and translation to a series of marshalled and unstable wrappers only where necessary.
My personal interest in this is minimizing the number of c projects under Linux.
I want to give impetus for more porting of projects into a high level and modern language.
If they could just find community supported funding to port desktop tools and GUI development that doesn't look like crap that are easy to use into Linux, I think it would be a superior operating system for the tinkerer, engineer, or science major.
.NET is superior in its syntax and functioning.
It removes a lot of redundant memory management.
And while the kernel cannot for example be ported to another language because it HAS to be extremely blindingly fast and has a reason to use low level memory management techniques, many of the linux utilities could do with an upgrade.
C/C++ still have a place. But so many projects under Linux use a variety of spaghetti style intermixed languages which would do better being packaged into readable navigable assemblies.
In future release I wish to complete the cycle by adding support for conversion from other languages as well.
The purpose is to support the OS community and to help with my own customized version of the operating system, for which I will use this tool, once written.
My hope is also that I will draw others into the secondary project.
Risks and challenges
Essentially its the time aspect.
The project is fairly straight forward, but I wish to work on it full time. As a single developer I estimate I could probably finish this project within 2 years. It will require me to test it. It will require ALOT of busy work. It will require me to create a framework which will allow new lexical grammars to be included which don't represent something as crappy as Bison. I want to unify the OS's major utilities into working navigable source.
I also will want to stored the parsed and reorganized code into a central uniform project file, so in the future, if you are say, a java programmer and you prefer for some unknown reason, java, you can create the slowest utilities anyone has ever used with the most security flaws imaginable. But at least you'll be able to read the code :P If for some unknown reason you want to use a language like python, etc, you can translate everything but the python interpreter into python.
There may be some necessity to include workarounds for the deficiencies of mono. It is a decent project but it has a few issues.
In general, this is mainly meant to be a code reorganization and refactoring tool, even if MY purpose is to use it as a conversion tool.
One way or another creating a grammar engine takes said grammar regarding a language or accepts plugins, which then transforms the language into an intermediary form which can be spat out through another plugin into the output of someones choice, while allow full call tracing and drill down will be a useful tool.
That is useful. And not as easy as just converting one textfile to another. There is not full 100% equivalence between different languages, which requires the creation of wrappers and conversions in some cases or secondary calls to unmanaged code in the case of c# vs c.
One way or another the main problem will be TIME. Its just a lot of work. And a lot of testing.Learn about accountability on Kickstarter
- (60 days)