Posts Tagged ‘darsono sutedja’

Thank you.

Wednesday, March 4th, 2009

It is with a sad and heavy heart that this evening I announce that I will no longer be developing the Mack Framework. The project, started a year ago, and has been source of great pride, joy, and at times frustation. Of all the projects I have ever worked on, this one was definitely closest to my heart.

The decision to stop working on Mack was something I did not take lightly. If I had my druthers, and plenty of free time and a source of funding, I most certainly would continue on working on it. However, reality has a different way of plenty out.

When I first started developing Mack the company I was working for at the time was frustrated with the pains and shortcomings of Rails. It was the right platform for the company when we started, however, two years in a start up is a life time and the company took many twists and turns, that lead us to the path of seeking an alternative platform to Rails. At the time Merb was not a serious contender, and there was little else out there that was looking to satisfy the needs we had. Enter Mack. I spent nearly 10 months developing Mack for that company. We rolled out several Mack applications. It worked really well for what we wanted it to do.

Again, however, reality came into play. The company was forced to lay off nearly 50% of its staff, and I was one of them. I quickly took a position as the Director of Engineering for another startup in Boston. This shop, too, is a Rails shop. The difference between the two companies is that for the company I work for now Rails is the right solution. This means that I am spending my days working with Rails, and not developing Mack.

At night and on the weekends I like to spend time with my wife and my son. I play in a band, www.thebluewires.com, and I am working on a book for Addison-Wesley entitled, “Distributed Programming with Ruby”. I’m a busy man, and Mack is a big project. You can’t successfully write a web framework part time. Especially when that part time is really more like part-part time. You need to be able to put dedicated full time resources onto a project of that scale, and I just don’t have the time to do it.

Would I love to see the project continue? Certainly. If there is someone out there who wants to take it on, please let me know. I would love to see it grow. There is so much I wanted to do with it. So many great ideas.

Now, for the good news, I am planning to port a bunch of the Mack functionality over to the Rails 3 platform. The obvious one being the mack-distributed package which is a key differentiator between Mack and the other Ruby frameworks. Another package I think worthy of migration is mack-notifier, which provides, in my opinion, a really nice clean API for doing notifications, whether they be email, Jabber, SMS, etc… I also really like the mack-data_factory package. It provides an ORM agnostic way to do great data factories for testing. Finally there are some routing improvements that I think Rails could really benefit from, as well as a few other bits and bobs here and there.

I wish to thank everyone who has supported this project over the year. A few key people I think that deserve a special call out are: Darsono Sutedja (the second biggest contributed to Mack), Gerardo Pis-Lopez (the third biggest contributor), and Greg Arsenault (my previous boss who fought for me to develop Mack). If there was such a thing as the Mack Core Team, those guys would be it. I would also like to thank people like Peter Cooper, Gregg Pollack, Adam French, Dan Kubb, and everyone else who either opened a Lighthouse ticket, submitted a patch, wrote a blog entry about Mack, or who was just there for support and guidance over the past year.

I am going to keep www.mackframework.com around as a forum for my other projects, such as Cachetastic and Configatron, and the other projects I have brewing. Expect some cool new projects out of me in 2009, include some iPhone projects that I’m excited about undertaking. I will be releasing the last version of Mack by the end of the month. It will essentially be a few bug fixes, an upgrade of DataMapper, and Sass support.

To summarize, thank you everyone. I appreciate your support and I look forward to contributing to the community in new and exciting ways.

Thank you.

Release 0.6.0

Wednesday, July 16th, 2008

Well, it’s finally here, Mack 0.6.0! This release has taken a long time, but I feel that it’s definitely worth it. This has to be the best release of Mack to date. During this release the Mack dev team grew by 100%, Darsono Sutedja, previously a contributor to Mack, is now a full time Mack core team developer! Darsono has done an absolutely great job on this release, thanks Darsono. With that out of the way, let’s jump straight to the good stuff, shall we?

DataMapper 0.9.2 Support

At long last Mack supports DataMapper 0.9.2. Because previous versions of Mack used DataMapper 0.3.2, there is some upgrade work that you’ll need to do, but trust me, it’s worth it. DataMapper 0.9.2 is a gigantic leap forward from 0.3.2. If you have problems installing the data_mapper gem, make sure that you don’t have gems.datamapper.org in your source path for rubygems. You can remove it with the following command:

gem source -r http://gems.datamapper.org 

RSpec Testing Support

RSpec is now the default testing framework for new Mack applications. This innovative testing framework makes it fun, and simple, to do behavior driven development. If you haven’t yet played with RSpec, I would highly recommend it. I wasn’t a big fan of ’spec’ testing prior to meeting Adam French, of DataMapper fame, and he turned me on to the joys of rspec. I think you’ll like it too, if you give it a chance. :)

mack-more

There is now a mack-more package. This will house all the optional gems available to the Mack framework. This include things like HAML and Markaby support, localization, etc… Use what you want, ignore the rest. This will help keep the core code clean, light, and of course, fast.

Localization/l10n Support

Darsono did a great job with the mack-localization gem. There is now optional support for internationalization in Mack applications. Check out the gem, it’s definitely worth it if you need to support multiple languages for your web application.

Much, much more!

Of course, there’s a lot more Mack than the stuff I just mentioned, there’s tons of bug fixes, some code clean up, some API changes, transactional testing support, the ability to catch specific errors in routes and have them diverted to a controller/action for handling.

There is a great wiki entry on upgrading your existing Mack project to 0.6.0 here. I highly recommend reading it whether or not you have an existing Mack application.

With this release the Mack team is also fully embracing Lighthouse. If you find bugs, or have suggestions please visit http://lighthouse.mackframework.com and log them there. You’ll also find the list of features that will eventually be added to Mack.

Changelog:

  • INCOMPATIBILITY NOTICE: Moved Mack::Configuration.root to Mack.root
  • INCOMPATIBILITY NOTICE: Moved Mack::Configuration.env to Mack.env
  • INCOMPATIBILITY NOTICE: Mack::Configuration.* path methods no longer exist. Use mack-paths instead.
  • INCOMPATIBILITY NOTICE: Dropped mack_ruby_core_extensions in favor or mack-facets
  • INCOMPATIBILITY NOTICE: Mack::Controller::Base is now Mack::Controller (and it’s now a module)
  • INCOMPATIBILITY NOTICE: Haml renderer is now part of mack-more.
  • INCOMPATIBILITY NOTICE: Markaby renderer is now part of mack-more.
  • INCOMPATIBILITY NOTICE: Changed request param’s accessor routine, from params(key) to params[key]
  • INCOMPATIBILITY NOTICE: Test::Unit::TestCase is no longer the default testing framework, RSpec is. If you wish to use Test::Unit::TestCase add the following config parameter to your config/app_config/default.yml file:
      mack::testing_framework: test_case
  • INCOMPATIBILITY NOTICE: ENV["_mack_env"] and ENV["_mack_root"] are no longer supported, please use ENV["MACK_ENV"] and ENV["MACK_ROOT"], or just Mack.env and Mack.root
  • INCOMPATIBILITY NOTICE: MACK_DEFAULT_LOGGER constant is no longer available. Please use Mack.logger instead.
  • INCOMPATIBILITY NOTICE: The ApplicationHelper module is now deprecated. Please move view level helpers into Mack::ViewHelpers::* and controller helpers into Mack::ControllerHelpers::<controller_name>
  • thin.ru and thin.yml are no longer needed, you may delete them.
  • RSpec assertions are now automatically added.
  • Added a Mack::Testing::Response class to make testing of responses easier.
  • moved test_extensions to testing and added the module Testing to the files in it.
  • Added a dependency on mack-more
  • Added a set of Rake tasks to update existing Mack applications.
  • [#30] Added Mack::Logging::Filter to filter out unwanted parameters from the logs.
  • In routing you can now define a route that will catch an Exception from another controller.
  • ORM will not be initialized if the app never specify which ORM to use.
  • All Mack unit tests are now written using rspec-1.1.4.
  • mack command now takes an optional -t flag to determine which testing framework to use–value could be test_case or rspec [default]
  • new setting added to app_config: testing_framework
  • gem: cachetastic 1.7.2
  • gem: application_configuration 1.5.0
  • gem: erubis 2.6.2
  • gem: genosaurus 1.2.1
  • gem: thin 0.8.2
  • gem: rspec 1.1.4

Release 0.5.0

Tuesday, May 6th, 2008

I know I’ve been talking about this release for a while now, and here it finally is. There’s some good bug fixes in here, a few new rake tasks, and some other little things like that.

The biggest thing, however, is what’s been causing a stir online now for the past few days, I’ve split out the ORM support into separate gems. I’m not going to go over it again, you can find all the details here: http://www.mackframework.com/2008/05/04/orms-and-mack/

Needless to say this is a good release to get, if not for the bug fixes alone, but for the great db:create rake tasks that are now in there. Thanks, again, to Darsono Sutedja for his great contributions.

Changelog

  • Added rake db:create and db:create:all rake tasks.
  • Refactored out constants, such as MACK_ROOT and MACK_ENV and made them into Mack::Configuration.env, Mack::Configuration.root, etc…
  • Added test:stats and test:coverage Rake tasks.
  • Removed support for ActiveRecord and DataMapper and moved them into their own gems.
  • Fixed a bug where yields in ERB weren’t giving the desired results.
  • DataMapper database.yml file can now be nested, and is generated as such.
  • Cleaned up some tests, and refactored the HTML generation stuff.
  • Fixed a bug with the scaffold generating ‘bad’ methods instead of ‘post’
  • Made error_messages_for more compatible with DataMapper.
  • Fixed a bug loading url.rb and uploaded_file.rb found by Phil Darnowsky
  • [dsutedja] Render method (in controller_base) now accepts response status code.
  • gem: mack_ruby_core_extensions 0.1.23
  • gem: genosaurus 1.1.4
  • gem: datamapper 0.3.2
  • gem: rcov 0.8.1.2.0
  • gem: mack-data_mapper 0.5.0
  • gem: erubis 2.6.0

Release 0.4.7

Friday, April 25th, 2008

0.4.7 is a MUST have release. It fixes a few good bugs, like the ability to upload files now works! Plus it introduces a few nice little goodies.

File uploads are now pretty easy to do. There’s a new Mack::Request::UploadedFile that helps to wrap the Hash that Rack gives you when you upload a file. Here’s a simple example of it being used:

class UploadsController < Mack::Controller::Base
  def create
    @my_new_file = request.file(:my_new_file)
    @my_new_file.save_to([MACK_PUBLIC, "uploaded_files", @my_new_file.file_name])
  end
end

That’s it! That’s all you need to upload a file! I’m going to add file uploads to the blog demo over the next few days.

You can now do ‘namespaced’ routes, such as Admin::UserController. You can very simply map them in your routes.rb as:

r.resource "admin/users"

There’s now a new rake task, generator:list, that shows all the generators available to your app.

Darsono Sutedja gets the prize for being the first person, other than myself, to contribute to Mack. Thanks a ton Darsono! It’s much appreciated.

All of the generators now use the Genosaurus generator system. Not really that exciting, but it makes for a nice, cleaner code base.

There’s a few other things in there as well. The changelog below has a few more things. Enjoy!

Changelog:

  • Added Mack::Request::UploadFile class to make dealing with file uploads easy.
  • Fixed bug where if a controller didn’t exist it wasn’t checking the public directory.
  • Generated DataMapper models no longer extend DataMapper::Base, but rather ‘include DataMapper::Persistence’. This corresponds to the 0.9.0 upcoming release of DataMapper.
  • Fixed a bug in request.params that was making file uploads into strings.
  • Namespaced resourced routes, such as Admin::UserController, now work.
  • Added rake generator:list task to list all the available generators.
  • scaffold generator now creates a stub functional test.
  • model generator now creates a stub unit test.
  • Rake tasks in plugins now show up in the Rake tasks list.
  • All generators, including the ‘mack’ binary are now using Genosaurus.
  • [dsutedja] initializer will load MACK_APP/controllers/default_controller.rb if it exists
  • [dsutedja] added link_image_to and image_tag to html helper.
  • gem: thin 0.8.1
  • gem: genosaurus 1.1.1