F# community on GitHub & MonoDevelop update
When I talked with Miguel de Icaza and Michael Hutchinson at the F# in Education workshop some time ago, someone mentioned that it would be nice to have a clone of the official F# code drop that could accept patches from the community. I also talked with Michael about GitHub and I think I finally understood why everybody uses it today. I said to myself that I'll need to take a look at it when I'll have a bit of time... After coming back from the workshop, I was quite busy getting the F# plugin for MonoDevelop out, but after I wrote about it, I finally found some time to look at GitHub.
I really like the way Mono team uses GitHub. They have a single "mono" organization that is owned by several people from the Mono community and all important projects that are parts of Mono have their repository as part of the "mono" organization. Thanks to GitHub, everyone can easily clone the repository, do some changes and submit a "pull request" to the main repository.
F# open-source community
I thought that the F# community could follow the same model, so I started the F# community organization on GitHub and invited a few people who were interested in the open-source F# release and MonoDevelop integration to join. If you're interested in open-source version of F#, check out the following links:
- F# open-source community on GitHub. Currently, it includes F# plugin for MonoDevelop and a clone of the official F# PowerPack release. We'll add a clone of the F# open-source code drop (modified to build nicely as part of Mono).
- F# open-source community mailing list created on Google groups. We'll use this for discussions about the projects on GitHub including the open-source release (how to build it etc.) and the F# plugin for MonoDevelop (if you want to contribute, then definitely join the mailing list!)
Currently, the community includes Andreia Gaita (who is working on integrating F# in Mono releases), Laurent Le Brun (who contributed to the F# open-source release as a contractor and wrote Emacs mode for F#), Matt Harrington (who was the first person to clone F# to GitHub and has a nice F# screencast on Mac), Michael Hutchinson (who works on MonoDevelop and various other parts of Mono), Miguel de Icaza (who doesn't need an introduction :-)) and myself.
What is the purpose of the F# open-source community?
If you heard about IronPython and IronRuby (which are now developed by the community and are partly coordinated by Miguel), you may be wondering whether F# is going to follow the same path... Does that mean that F# will be developed by the community? To be clear, I need to use the bold font. The answer is no!
F# will continue to be developed by the F# team at Microsoft. The purpose of the open-source
community is to compile and package F# for various platforms and to add tools for other
platforms (such as the F# MonoDevelop plugin). We have no intentions of modifying F#. This also
means that the
fsharp repository (when created) won't accept pull requests that change the
F# language. We'll be mainly accepting fixes for issues that the F# tools have on Mono (running on
various systems). In that case, you may also want to submit bug report to Microsoft, so that they
can fix the issue in future source drops.
If you're interested in doing some research or experimental modification of the F# language, the best option is to create clone of the repository from GitHub and do your changes there. Then you'll be also easily able to merge your repository with the future F# releases from Microsoft.
F# plugin for MonoDevelop
As I already mentioned, I also moved the source code from F# cross-platform packages and samples at CodePlex to GitHub. If you're interested in contributing, please clone the repository and submit pull requests! There is currently no prioritized list of work items that need to be done. I'll try to create one as soon as possible, so that we can track these. A list of bugs is currently available on CodePlex. You should also join the F# open-source community mailing list and we can discuss potential work items and bug fixes there.
I also did a bit of work to improve the compilation of the F# plugin, so it should be easier to get
it working, if you want to compile it from source and contribute. I added a simple
script that generates
Makefile.orig that's included in the
source tree). You can find more information about the compilation process on a dedicated F# plugin
page, but here is a quick summary:
- On Windows you can use Visual Studio 2008. You may need to fix some references, because I haven't yet
figured out how to create a single
fsprojfile that would compile on both Windows (using VS 2008) and Linux or Mac (using MonoDevelop).
- On Mac or Linux, you can use
./configure.shto generate it. The script has some options (that are printed when you run it). It may ask you for paths to a few libraries - I included default paths on Mac and openSUSE, but if your installation differs, you may need to specify them. If you're using default installation on other system and the script cannot locate some installation, please add the path to
configure.shand submit it to the repository (so that I can add it).
- On Mac or Linux, you can also use MonoDevelop (after installing the F# plugin :-)). You'll may also need to fix some references (see the first bullet), but I was able to get it to work.
I'll make the summary of this blog post brief. If you're interested in doing something with the open-source code drop of F#, you should wait until Andreia creates a repository with the clone under the F# open-source community on GitHub and then clone it (this way, you'll be easily able to merge with future code drops from Microsoft and you'll be also easily able to compile it). You should also join our mailing list to receive all the updates.
If you're interested in contributing to the F# plugin for MonoDevelop, you should clone the fsharpbinding repository and join our mailing list to discuss work items and bug fixes. You can also follow me on twitter to find out what I'm working on...