@@ -15,13 +15,13 @@ to skip to :doc:`basic_usage_guide/part_1`.
15
15
Inspiration
16
16
-----------
17
17
18
- The reason I felt like making such drastic changes, is that the original library is
19
- ** exceptionally hard to learn ** and use. Error messages would not tell you what was wrong,
20
- the concept of extensions is poorly explained and the methods are a bit weird, in that
21
- they function as getters and setters at the same time. The fact that you have three
22
- separate ways to go about setting multi-value variables is also a bit confusing .
18
+ The python-feedgen _ project is alright for creating general RSS and ATOM feeds,
19
+ especially in situations where you'd like to serve the same content in those two
20
+ formats. However, I wanted to create podcasts, and found myself struggling with
21
+ getting the library to do what I wanted to do, and I frequently found myself
22
+ looking at the source to understand what was going on .
23
23
24
- Perhaps the biggest problem, though, is the awkwardness that stems from enabling
24
+ Perhaps the biggest problem is the awkwardness that stems from enabling
25
25
RSS and ATOM feeds through the same API. In case you don't know, ATOM is a
26
26
competitor to RSS, and has many more capabilities than RSS. However, it is
27
27
not used for podcasting. The result of mixing both ATOM and RSS include methods that will map an ATOM value to
@@ -30,10 +30,10 @@ the value of the RSS property ``copyright``) and some differ in subtle ways (lik
30
30
(ATOM) ``logo `` versus (RSS) ``image ``). Other methods are more complex (see ``link ``). They're all
31
31
confusing, though, since changing one property automatically changes another implicitly.
32
32
They also cause bugs, since it is so difficult to wrap your head around how one
33
- interact with another.
34
- Removing ATOM support fixes all these issues .
33
+ interact with another. This is the inspiration for forking python-feedgen _ and
34
+ rewrite the API, without mixing the different standards .
35
35
36
- Even then , python-feedgen _ aims at being comprehensive, and gives you a one-to-one
36
+ Futhermore , python-feedgen _ gives you a one-to-one
37
37
mapping to the resulting XML elements. This means that you must
38
38
learn the RSS and podcast standards, which include many legacy elements you
39
39
don't really need. For example, the original RSS spec
@@ -45,30 +45,12 @@ I believe **the API should help guide the users** by hiding the legacy image tag
45
45
and you as a user shouldn't need to know all this. You just need to know that the
46
46
image must be larger than 1400x1400 pixels, not the history behind everything.
47
47
48
- Alignment with the philosophies
49
- -------------------------------
50
-
51
- python-feedgen _'s code breaks all the philosophies listed in the :doc: `introduction `:
52
-
53
- #. Beautiful is better than ugly, yet all properties are set through hybrid
54
- setter/getter methods.
55
- #. Explicit is better than implicit, yet changing one property will cause
56
- changes to other properties implicitly.
57
- #. Simple is better than complex, yet creating podcasts requires that you
58
- load an extension, and somehow figure out that this extension's methods
59
- are available as methods of the extension's name, which suddenly is
60
- available as a property of your FeedGenerator object.
61
- #. Complex is better than complicated, yet an entire framework is built to
62
- handle extensions, rather than using class inheritance. (Said framework
63
- even requires that the extension resides inside a specific folder!)
64
- #. Readability counts, yet classes are named after their function and not what
65
- they represent, and (again) properties are set through methods.
66
-
67
- In short, the **original project breaks all the idioms listed in Philosophy **, and
68
- fixing it would require changes too big or too dramatic to be applied upstream.
69
-
70
- Whenever a change *is * appropriate for upstream, however, we should strive to
71
- bring it there, so it can benefit **everyone **.
48
+ Forking a project gives you a lot of freedom, since you don't have to support
49
+ any old behaviour. python-feedgen _ cannot make backwards incompatible changes,
50
+ since many projects around the earth rely on the way the library works, and you
51
+ cannot expect everyone to use ``pip freeze `` (you should, though!). Whenever a
52
+ change *is * appropriate for python-feedgen _, however, we should strive to bring
53
+ it there so it can benefit as many as possible :)
72
54
73
55
74
56
Summary of changes
@@ -111,7 +93,7 @@ The following list is not exhaustive.
111
93
* :attr: `.Podcast.explicit ` is now required, and is :obj: `bool `.
112
94
* Add shorthand for generating the RSS: Just try to converting your :class: `~podgen.Podcast `
113
95
object to :obj: `str `!
114
- * Improve the documentation (as you've surely noticed).
96
+ * Expand the documentation (as you've surely noticed).
115
97
* Move away from the extension framework, and rely on class inheritance instead.
116
98
117
99
.. _python-feedgen : https://github.com/lkiesow/python-feedgen
0 commit comments