Pages

Monday 18 January 2016

Source Release


I will be releasing some of the projects I have been working on as open source. The primary medium of release will be GitHub. I will also be posting articles on Code Project, and papers on Research Gate.

Why Am I Doing This?

Most of the projects I will be releasing are side projects that I did just to show (to myself) that something is doable. For instance, a project I call Tril (TRanlate IL) was my way of learning how to decompile an assembly. With Tril I do not need the source code of your project, all I need is your .NET assembly. Tril will read the IL (Intermediate Language) in the assembly, and create a high-level "model" from the IL. Tril will then pass that model to a translator. It is this translator that emits the appropriate high-level language. So a Java translator will emit Java. Translators are installed as plug-ins/add-ins/add-ons. And anybody can write his own translator. You could write a Python translator and install it to have Tril translate a .DLL file to Python. I hope you can already see the various applications of such a tool: you can translate (which is an ethical way of saying "reverse-engineer") an assembly (.DLL, .EXE) into any language of your choice. That's what I call POWER. I can imagine that some of you may be interested in knowing how such a feat can be achieved, and that is why I will be releasing the source code. This is my primary reason for open-sourcing my projects: someone may find something useful.
There are, of course, other benefits of open-sourcing projects like publicity, and the opportunity to interact with (and learn from) other developers.

What Will I Be Releasing?

  • Encryption Studio: This software can hide a file inside an image. Yes, I know, that is steganography not encryption. I may change the name but people are more conversant with the term "encryption".
  • QUIC: Simplifies the creation of rich web pages.
  • Tril: Deompiles a .NET assembly to any chosen high-level programming language.
  • HackScript: A compiler for a JavaScript-like programming language I designed. Currently, the target of the compilation is a .NET assembly (which means I can create Windows apps using my programming language), but I hope to be able to expand its target to include Java Jars, Android APKs, and JavaScript itself (for a start). Of course, doing these will require TIME, TIME, TIME. I guess one of the advantages of open-sourcing is that other developers can pick the project up and add the other needed pieces.
There are other projects in the pipeline but they are not yet solid enough for release.
I may also (with appropriate permissions) be releasing other stuff we are working on here at Karabow.

What A Release Means

It will take me longer than expected to open-source projects. That's because I don't just want to "dump" some source codes somewhere and call that open source. I want to accompany the codes with appropriate documentations (of course), system architecture (summary and details), license, and other relevant docs. For license, I haven't decided on the license to use, and it is very likely that each project will come with a different license. But whatever license I use will be very permissive. Just be kind enough to acknowledge the author when you use the codes.