RSS
 

Monkey v1.2.0 (Expresso) is out!

27 May

After months of development the Monkey Project team is proud to announce the availability of Monkey v1.2.0, codename Expresso.

This release comes with exciting improvements in terms of speed, features and code cleanup. Even all changes are relevant the most interested ones for the users and developers will be the improved FastCGI and CGI plugins, as well the new SSL layer powered by the great PolarSSL library.

Another  feature is the native support for LINUX TCP_FASTOPEN, which is a Linux specific TCP capability to reduce one step of the TCP handshake process improving performance between the client and the server. This requires collaboration from the client side.

The Scheduler, who’s the core component in charge to balance connections and coordinate the work among the workers, have been improved to achieve even a higher performance.

As usual, Monkey keeps working fast using low resources, targeting ARM and x86 (x86, x86_64) architectures it’s a great deal for Linux machines/devices, and not only for HTTP static content, it’s also a complete stack for web development where performance matters and top tech things such as WebSockets or SSL are mandatory.

You can find the official announcement here:

http://monkey-project.com/Announcements/v1.2.0

 
 

Thanks for support Monkey!

26 May

On March 27th i sent a public request to our mailing list asking for sponsors to help to renew the project domains monkey.io and duda.io. In less than 48 hours we got the help needed, that was really fast!, so here is the name from our sponsors:

  • PolarSSL, our first donators!, its very grateful to see how open source projects support each other :)
  • James Richard, a happy Monkey user from Raspberry Pi world
  • Anonymous, he said “I can help you, as long as my name does not appear on the web site ;-)

thanks again for trust and keep supporting Monkey Project!

 

 
 

Google Summer of Code is ON

29 Apr

recently our Organization joined to the Google Summer of Code 2013 program, and now many students are applying to be part of this challenge hacking Monkey and its components.

There are 3 days left and  we are hard working helping the students to get into the process in the right way. We look forward to work with this new hackers!

We will keep you informed about the program process.

P.S: Monkey v1.2 is almost ready ;)

 

Update

28 Jan

It have been a long time without post an entry in the blog, but that does not means that development have stopped. Mailing lists are very active as well our GIT repositories.

We are hard working to deliver Monkey 1.2 in a few weeks, also Duda I/O framework is getting improved and featured week over week.

As said, stay tuned, Monkeys keep working in silence (but not hidden) to deliver (as usual) an open and high quality HTTP stack… more news will come shortly :)

 
 

Monkey v1.0.0 is out!

07 Jun

Monkey was started on 2001 and after years of development we are very proud to announce the availability of our new major release: Monkey v1.0, codename Monkey I/O. This major release reflects our community effort to produce a high qualilty web server for embedded devices taking the most of Linux Kernel to hit great performance with low resources usage.

This version is faster than previous ones, many optimizations and improvements have been made in the scheduler, memory management and in the core in general.

 

What is new ? What has changed ?

Here is a list of the most relevant changes on Monkey v1.0:

  • Code cleanup
  • GCC: Make monkey compile on gcc 4.7
  • Core: improve memory management
  • Core: On segfault, print the stacktrace
  • Core: fix initial bind address when using IPv6
  • Core: new SAFE_FREE macro (./configure –safe-free)
  • Scheduler: optimize connection queues
  • Scheduler: Protect the wid init with a mutex
  • HTTP: do not perror() when sendfile() fails
  • HTTP: assign default host before HTTP parsing
  • HTTP: fix keep_alive initial value on session_request
  • HTTP: fix Host header parser
  • HTTP: validate port value after numeric conversion
  • Socket: fix mk_socket_ip_str() for IPv6
  • Socket: Fix possible overflow
  • Request: Optimize mk_request_init
  • Request: fix memory leak when invoking premature close
  • Clock: improve time strings concurrent access
  • File: add new field ‘exists’ to the struct file_info
  • File: set the proper O_NOATIME when applies
  • Utils: Add a gmt text cache for utime2gmt
  • QA: Improved quality assurance tests
  • Debug/Environment: implement MK_TRACE_FILTER and MK_TRACE_BACKGROUND
  • Configure: compile output like Linux Kernel style
  • Configure: install man pages to the correct path
  • Configure: do not install not compiled plugins
  • Auth: rename mkpasswd utlity to mk_passwd
  • Auth: adapt new Base64 implementation
  • Liana: use monkey api to set a socket non-blocking
  • List: Replace all linked list with mk_list implementation
  • Request: fix memory leak when invoking premature close
  • Clock: improve time strings concurrent access
  • Monkey: implement a POSIX write-lock over the PID file

 

For full details of the changes made, please check the ChangeLog.

Contributors

We would like to thanks to the following people who have been involved doing code and bug fixes contributions on this release:

  • Lauri Kasanen
  • Sourabh Chandak
  • Mahesh Gondi
  • Davidlohr Bueso
  • Felipe Astroza Araya
  • Torsten Pfüller
  • Jean-Paul Bonnet
  • Kay
  • Flaushy
  • Felipe Reyes
  • Aldrin Martoq (Brayatan)
  • Jonathan Gonzalez

 

Join us!

We want to hear about you, our community is growing and you can be part of it!, you can met us in:

 

 
 

Google Summer of Code 2012: results

23 Apr

So here we are, after one month of hard work with the students, they have been notified by Google about the acceptance or rejection of their proposals, so lets expose some results:

  • We ended up with 26 students/applications
  • The mentors team have rated and filtered all of them so after our first round we have 12 still in competition, 14 are out.
  • The 12 applications were pretty good, so based on a mix of criteria we choose the “awesome” proposal/students

 

We would like to congratulate the following “awesome” students that were accepted, they  did a hard work during the last weeks:

 

For people who was not accepted this year, we want to tell that persists on this, join to Summer of Code is not easy, even for us it took 3 years. The key is to keep going and get involved as much as you can, no matters the project.. if you are really motivated… you will increase your chances.

As you know, we are an open source project, a short but open community looking forward to welcome any person interested into contribute. You can join us any time.

That’s all for now, the first phase is over and now the fun begins. Happy Hacking !!!

 
 

Monkey HTTP Daemon / Google Summer of Code 2012

17 Mar

This year have been very exciting for Monkey Project, we are implementing cool features for our next v1.0 release and today we got the most great news that we could expect:

Your Organization Application for “Monkey HTTP Daemon” in
Google Summer of Code 2012 has been accepted.

Today begins a new stage for our project, after thousands of work hours and many years putting our best effort, we are finally being recognized internationally as a strong community with serious objectives and delivering a high quality product. This is a great opportunity to grow in different aspects of the project: organization, community and software improvement.

We invite to any student around the world to apply for our organization, we are committed to improve the server side of the web, we deal with embedded devices, performance, scalability, networking, and many cool stuff , innovation is one of our primary focus. Please review our project ideas site:

 

If you think that the web can still be improved, we are in the same page and we are looking to hear from you, meet us on irc.freenode.net #monkey or through our mailing list

 
 

Duda: web services framework for Monkey

13 Mar

There is one fact: we are in exciting times for the project. Our HTTP core is consolidated since a while ago, it works in non-blocking mode, it has a nice indented configuration model and provide an advanced API to extend the core behavior, through this we support different behaviors by layers like IPv4, IPv6, SSL encription, security by subnets, basic auth, shell, log writer, etc.

There is a common question from people around the project: “where are you going ?” and the answer is: do you see that embedded Linux Box ?, there’s where we go. Common web servers lack of performance for embedded systems, most of them have focused in high production environments. our focus is different.

Our tech world is service oriented and i would say that implemented through a fat HTTP software stack, simple things are done in scripting languages that requires a process context or even be ran in a JVM environment, that is not lightweight and requires extra resources to be scalable. If you plan to implement a web service for embedded you should start forgetting about Java and PHP and think in lightweight options. Please Google a little about the options available and then continue reading here.

Read the rest of this entry »

 
 

Basic Authentication

09 Feb

Basic Authentication is provided by auth plugin.  In order to protect your virtual hosts you have to do the following steps:

  1. Enable Auth plugin: make sure the auth plugin is enabled in the /etc/monkey/plugins.load configuration file
  2. Create the users list file:
    # /usr/sbin/mkpasswd -c  -b /etc/monkey/plugins/auth/users.mk  myuser mypassword
  3. Edit your virtual host file and set the authentication rules, e.g: edit /etc/monkey/sites/default and append:
[AUTH]
    Location /
    Title    "Let's protect our content..."
    Users    /etc/monkey/plugins/auth/users.mk

Now restart Monkey and reload your web page, you will get the authentication box for the specific virtual host. If you add/delete users you will need to restart the service to make the changes take effect, we are working in a smart way to fix this behavior without affect performance or extra I/O.

 
 

New year.. new releases

13 Jan

We started the year pretty good, with the release of Monkey 0.30 and 10 days later Monkey 0.31. The major goals on this version are the fully support of IPv6 merged in the Liana plugin, as well minor fixes.

Monkey project keeps rocking and we are hard working looking forward to archive our goals this year, if you want to get involved do not hesitate to contact us back on our mailing list or in the IRC chat at irc.freenode.net channel #monkey .