Monday, February 25, 2008

Feelings about Archimedes

I am very sorry to have to post this but I can no longer endure that feeling alone. I am getting seriously tired of being questioned about when Archimedes will have a better documentation and the new features and 64 bits support and updated informations on the site and a better site and this and that. Believe when I say I would love to provide every single one of those things but I am NOT being payed by anyone (except maybe myself) to work on this project. I am NOT unemployed or full time free to do whatever I want and most of all: I am not even a USER of Archimedes. I honestly and truly work on this project out of my good will!

Although I would really like to be paid to work on Archimedes, I do not expect people to raise money to afford my work. What I am expecting is that people stop complaining about me not doing to work and start doing it themselves. Start providing instalation tutorials for all platforms for instance, then maybe use tutorials directed to architects. Suggest a different page format. Update websites you have access on such as wikis and reports. Understand that anything that I do that does not involves programming Archimedes itself, features will NOT get implemented. So if you can take off anything what so ever from my duties, it means I get to program more (which is the part I like) and implement more features, correct more bugs and solve more problems.

And finally, if none of this is possible to you, try gathering architecture offices and professionals to donate any mount of money to the project that could be reverted into freeing me some time and working more on the project. If you do not feel comfortable with that, hire a local developer in your country to contribute with the project and ask me to give you feedback about his work if you don't feel secure to measure it.

It pains me to have to make this post especially because it is a clear signal that I am getting tired of the project. But I am getting each time more disapointed with the architect's community since it is not able to unite for a simple matter. Free and open source software should mean collaboration from everyone! Not just me working and you waiting for the job to be done. Especially considering that the greatests beneficiaries are the users of the software, a group from which I am NOT part.

Well, enought of complaining. Now to the news: during my talk at Campus Party, I promised attendees that I would release a new version of Archimedes. It will happen within the next 2 weeks because I will need to release some version for my graduation student team but I will delay it as much as I can in order to produce all the infra-structure I am working on. New versions that include features and improvements to users should only be available by the end of march. Let's hope I can keep that promise!

2 comments:

Brian Jorgensen said...

Hi Hugo, I've been following your blog since we first exchanged e-mails a few weeks ago. Archimedes is a great project, and I am very enthusiastic about it! I hope that you will rediscover your enthusiasm as well. At the same time, I can see why one would become frustrated; a successful open source project needs a community!

As I have said, I would really like to help with anything and everything that I can: programming, documentation, and web presence. As a small token of good faith, I've updated the Archimedes (CAD) page on Wikipedia to the best of my knowledge. Sorry if anything is inaccurate.

Having observed Ondrej Certik, the original creator of SymPy, create a thriving open-source project out of nothing, I have a few suggestions on how to get more people involved, and how to really see Archimedes take off.

First, SymPy has greatly benefited from an extremely accessible and user-friendly forum for public discussion and contribution. This has been largely facilitated by Google's excellent project hosting, which (as you probably know) provides centralized file hosting, source control, mailing lists, bug tracking, and a documentation/development wiki.

Please accept my humble suggestion that an important reason that Archimedes hasn't attracted more collaboration, as I believe it can and will, has been its diffuse web presence: the releases are found on SourceForge, while the mailing list, subversion repository, and development information are all found at other, often unlinked locations. This is impossible to keep up with for everyone involved: users, developers, and prospective developers.

SourceForge was the original king of OSS hosting services, and it was great in its day, but Google has managed to capture the concept of community. Google is also more friendly to users and visitors, particularly since SF has started spamming downloaders with pop-up offers for "paid services." I think such an integrated model would be perfectly compatible with the work your students will be doing soon, as well. I strongly recommend moving all aspects of Archimedes, including archimedes.incubadora.fapesp.br and the SVN repo, to Google's project hosting. If you like, I will gladly take the lead on this.

Another thing that SymPy has done very well is to form relationships with other OSS projects, such as SAGE and Pyglet. The result has been increased exposure to users, and also development collaboration. The situation is a bit different for Archimedes, but one idea would be to incorporate external OSS projects. For example, I think it would be an awesome improvement over AutoCAD if Archimedes supported a (sensible) high-level extension language, such as Jython or Groovy. The Jython and Groovy guys would love the mutual exposure. It's funny: projects often get less exposure for what they provide, and more exposure for what technologies they incorporate, at least in their early stages.

As you likely know better than I do, getting funding in the OSS world is hard. I am ignorant of your business partnerships in the past, but my view is that substantial funding will come only after the project is able to prove that it is active, sustainable, and will provide a useful return on investment. As we've discussed briefly, the best thing an OSS project can do these days is to get involved with Google's Summer of Code. I know you said this was something you have always wanted to do, but let me know if I can help to make it happen.

Lastly, I would really like to get involved in the coding. I have a few things in mind. First, I would really enjoy implementing an extension language capability, as I mentioned above. Secondly, I've written DXF importers and exporters in the past (in AutoLISP, regretably), so I would be glad to work on that as well. I put this second, because I think that an extension language would be useful for implementing the DXF support. Lastly, and at the lowest priority, I eventually want to create an extension for Archimedes that will allow it to be used as a free and powerful solution for CNC.

My time is limited, but what can you expect from a guy who works for free? ;-P You have my e-mail, feel free to get in touch on any of this.

Hugo "NighT" Corbucci said...

There is one major difference between SymPy and Archimedes regarding involving people. SymPy is a developer tool, therefore users are developers. This fact alone makes it more prone to be found by users and even easier to have users collaborating with it. Developers are much more used to the open source process.
I understand spreading things around is not good but I have not found, so far, a unique place (and that includes google) where all my needs were filled. I am in the process to acquire a dreamhost account and if I do so, I will migrate everything from archimedes there. Leaving all sites just pointing there.

Regarding forming relations with other technologies. I would gladly do so. Java, RCP, LWJGL, Ant, JUnit and other softwares are used to develop Archimedes. But I don't know how I would get attention from those so widely used technologies. If you have suggestions, and if they are not amazingly time consuming, I would gladly try.

Finally: I would love to have an extension language. Except I'm not pretty sure how to implement it or what language to choose. Groovy, Jython, JRuby and others are strong candidates and I wouldn't know how to choose without doing some spikes with each. Unfortunately, it would take me a long time to do all this. If you would like to give it a try, I would help as I can.

And yes... Time is way too limited!