OpenStack (and Python in general) isn't big on the classic Gang-of-Four Design Patterns.
OpenStack code seems to stem more from a "set of idioms" starting with https://wiki.openstack.org/wiki/BasicDesignTenets Beyond that, PEP8 and the HACKING guide are table-stakes. From there, look at the main food groups: 1. How configuration flags are dealt with 2. How the Service/Manager/Driver hangs together in most services (like Nova) 3. How DB access is abstracted and the use of Nova Objects (again, speaking for Nova) 4. The use of plugins everywhere (re: Design Tenets) 5. Proper logging/notification generation. 6. Good RPC etiquette ... versioning, cast() vs call(), dealing with retries/failures/etc. 7. The WSGI stack 8. API design 9. Command line tools A simple look at DevStack output will show that everyone is kind of a unique snowflake. So, look at the project you're most interested in for their "local flavor". From there, you should have a base understanding of "The OpenStack Way". I've been meaning to do a blog post on this stuff, but perhaps this is a good start? I'm sure others can pile on. Welcome to the party! -S ________________________________ From: Craig Jellick [[email protected]] Sent: Friday, February 28, 2014 1:09 AM To: �e天�d; Dustin J. Mitchell Cc: openstack Subject: Re: [Openstack] 回复: Python Design Patterns in OpenStack I think you should take a look a this talk: http://blip.tv/pycon-us-videos-2009-2010-2011/the-lack-of-design-patterns-in-python-2091776 TL;DR: Things that require design patterns in a language like java are so simple in python that they aren't really discussed explicitly. /Craig J From: �e天�d <[email protected]<mailto:[email protected]>> Date: Thursday, February 27, 2014 6:55 PM To: "Dustin J. Mitchell" <[email protected]<mailto:[email protected]>> Cc: openstack <[email protected]<mailto:[email protected]>> Subject: [Openstack] 回复: Python Design Patterns in OpenStack Thanks Dustin, Actually, my friends learn design patterns from the source code like Java design patterns in Android. They also learn it from some technical blogs! But after searching "openstack design patterns" in google, there is no useful information. I am wondering whether the openstack developers will take some notes relevant to design patterns. I think it can help the beginners to read openstack source code. ------------------ 原始邮件 ------------------ 发件人: "Dustin J. Mitchell"; 发送时间: 2014年2月27日(星期四) 晚上9:38 收件人: "54linhao"<[email protected]<mailto:[email protected]>>; 抄送: "openstack"; 主题: Re: [Openstack] Python Design Patterns in OpenStack ----- Original Message ----- > Hi, guys: > I am learning Python and Design Patterns, I want to know how Design Patterns > can be used in real world project especially python project. > > I know OpenStack is developed using python. So is there some materials of > Design Patterns used in OpenStack? Design patterns tend to be fairly abstract concepts, and become part of the general design of a project, rather than being documented explicitly. So it may be more instructive for you to look for them yourself. As an example, the way that managers are specified in the configuration files to change the behavior of services is an example of a pattern - which one? You may also want to look at some smaller Python projects - perhaps discovered by shopping around the cheese shop - to see where they have or have not used patterns, and maybe even practice applying a pattern or two where you think it would improve the project. Dustin
_______________________________________________ Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack Post to : [email protected] Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
